Jak sprawić, by curl ignorował proxy? Ustawienie $ NO_PROXY wydaje mi się nie działać.
Jak sprawić, by curl ignorował proxy? Ustawienie $ NO_PROXY wydaje mi się nie działać.
Odpowiedzi:
Zakładam, że curl odczytuje adres proxy ze zmiennej środowiskowej http_proxy
i że ta zmienna powinna zachować swoją wartość. Następnie w powłoce takiej jak bash, export http_proxy='';
zanim polecenie (lub w skrypcie powłoki) tymczasowo zmieni swoją wartość.
(Zobacz podręcznik curl dla wszystkich zmiennych, na które patrzy, pod ENVIRONMENT
nagłówkiem.)
unset http_proxy
ftp_proxy
. Myślę, że tutaj jest pełna lista wiki.archlinux.org/index.php/proxy_settings .
Jeśli masz curl
przynajmniej wersję 7.19.4
, możesz po prostu użyć --noproxy
flagi.
curl --noproxy "*" http://www.stackoverflow.com
Z instrukcji .
--noproxy
opcja nie jest dostępna dla starszych wersji curl (np. Tych, które są używane w Centos / RHEL 5.x)
--noproxy 127.0.0.1
było to, że stackoverflow.com działał na hoście lokalnym.
Napotkałem ten sam problem, ponieważ ustawiłem zmienne środowiskowe http_proxy i https_proxy. Ale czasami łączę się z inną siecią i muszę tymczasowo ominąć serwer proxy. Najłatwiej to zrobić (bez zmiany zmiennych środowiskowych):
curl --noproxy '*' stackoverflow.com
Z instrukcji: „Jedynym symbolem wieloznacznym jest pojedynczy znak *, który pasuje do wszystkich hostów i skutecznie wyłącza serwer proxy”.
Znak * jest cytowany, aby nie był błędnie rozszerzany przez powłokę.
curl --noproxy "*" stackoverflow.com
To działa dobrze, ustaw ciąg proxy na „”
curl -x "" http://www.stackoverflow.com
Dodaj preferencje serwera proxy do pliku .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
To powoduje, że wszystkie domeny deweloperskie i żądania komputera lokalnego ignorują proxy.
.
.
Długie ujęcie, ale spróbuj ustawić proxy na "" (pusty łańcuch), które powinno przesłonić wszelkie ustawienia proxy zgodnie ze stroną podręcznika.
Powinieneś użyć $no_proxy
zmiennej env (małe litery). Przykłady można znaleźć pod adresem https://wiki.archlinux.org/index.php/proxy_settings .
Ponadto dawno temu w curl był błąd http://sourceforge.net/p/curl/bugs/185/ , być może używasz starej wersji curl, która zawiera ten błąd.
Najpierw wymieniłem bieżące ustawienia proxy z
env | sort | less
(powinno być coś w stylu http_proxy=http://wpad.local.machine.location:port number
)
Potem spróbowałem ustawić
export http_proxy=";"
który dał ten komunikat o błędzie:
curl: (5) Couldn't resolve proxy ';'
Wypróbowany
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
i zadziałało!
PS! Pamiętaj, aby przywrócić pierwotne ustawienia http-proxy za pomocą
export http_proxy=http://wpad.local.machine.location:port number
Mam http_proxy
i jestem https_proxy
zdefiniowany. Nie chcę usuwać i ponownie ustawiać tych środowisk, ale --noproxy '*'
działa idealnie dla mnie.
curl --noproxy '*' -XGET 172.17.0.2:9200
{
"status" : 200,
"name" : "Medusa",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.5.0",
"build_hash" : "544816042d40151d3ce4ba4f95399d7860dc2e92",
"build_timestamp" : "2015-03-23T14:30:58Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
Kiepska odpowiedź, ale: Pamiętaj, aby upewnić się, że w ~/.curlrc
pliku nie jest ustawiony serwer proxy (...).
W moim przypadku (macos, curl 7.54.0
) mam poniżej ustawione proxy z~/.bash_profile
$ env |grep -i proxy |cut -d = -f1|sort
FTP_PROXY
HTTPS_PROXY
HTTP_PROXY
NO_PROXY
PROXY
ftp_proxy
http_proxy
https_proxy
no_proxy
Z nieznanego powodu ta wersja curl
nie może działać ze zmiennymi środowiskowymi NO_PRXY
i no_proxy
poprawnie, wtedy usuwam zmienne środowiskowe proxy jeden po drugim, aż do obu HTTPS_PROXY
i https_proxy
.
unset HTTPS_PROXY
unset https_proxy
zaczyna działać i może łączyć się z wewnętrznymi adresami URL
Dlatego zalecałbym usunięcie wszystkich zmiennych proxy, jeśli masz w swoim środowisku rozwiązanie tymczasowe.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Mój curl nie ignorował proxy w Ubuntu 12.04, dopóki nie ustawiłem zmiennej środowiskowej „no_proxy” (małe litery). Opcja --noproxy nie była dostępna.