Wie kann ich Curl dazu bringen, den Proxy zu ignorieren? Das Setzen von $ NO_PROXY scheint für mich nicht zu funktionieren.
Wie kann ich Curl dazu bringen, den Proxy zu ignorieren? Das Setzen von $ NO_PROXY scheint für mich nicht zu funktionieren.
Antworten:
Ich gehe davon aus, dass curl die Proxy-Adresse aus der Umgebungsvariablen liest http_proxy
und dass die Variable ihren Wert behalten sollte. Dann würde in einer Shell wie bash, export http_proxy='';
bevor ein Befehl (oder in einem Shell-Skript) vorübergehend seinen Wert ändern würde.
(Im Curl-Handbuch finden Sie alle Variablen unter der ENVIRONMENT
Überschrift.)
unset http_proxy
ftp_proxy
. Ich denke, hier ist eine vollständige Liste wiki.archlinux.org/index.php/proxy_settings .
Wenn Sie curl
mindestens eine Version haben 7.19.4
, können Sie einfach das --noproxy
Flag verwenden.
curl --noproxy "*" http://www.stackoverflow.com
Aus dem Handbuch .
--noproxy
gehe davon aus, dass die Option für ältere Curl-Versionen nicht verfügbar ist (z. B. solche, die bei Centos / RHEL 5.x verwendet werden)
--noproxy 127.0.0.1
wenn stackoverflow.com auf localhost ausgeführt wurde.
Ich bin auf dasselbe Problem gestoßen, weil ich die Umgebungsvariablen http_proxy und https_proxy festgelegt habe. Aber gelegentlich verbinde ich mich mit einem anderen Netzwerk und muss den Proxy vorübergehend umgehen. Der einfachste Weg, dies zu tun (ohne die Umgebungsvariablen zu ändern), ist:
curl --noproxy '*' stackoverflow.com
Aus dem Handbuch: "Der einzige Platzhalter ist ein einzelnes * Zeichen, das allen Hosts entspricht und den Proxy effektiv deaktiviert."
Das Zeichen * wird in Anführungszeichen gesetzt, damit es nicht fälschlicherweise von der Shell erweitert wird.
curl --noproxy "*" stackoverflow.com
Dies funktioniert einwandfrei, setzen Sie die Proxy-Zeichenfolge auf ""
curl -x "" http://www.stackoverflow.com
Fügen Sie Ihre Proxy-Einstellungen zu .curlrc hinzu
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Dadurch ignorieren alle Entwicklungsdomänen und lokalen Computeranforderungen den Proxy.
.
.
Long Shot, aber versuchen Sie, den Proxy auf "" (leere Zeichenfolge) zu setzen, um alle Proxy-Einstellungen gemäß der Manpage zu überschreiben.
Sie sollten die $no_proxy
Variable env (Kleinbuchstaben) verwenden. Beispiele finden Sie unter https://wiki.archlinux.org/index.php/proxy_settings .
Außerdem gab es vor langer Zeit einen Fehler bei Curl http://sourceforge.net/p/curl/bugs/185/ . Vielleicht verwenden Sie eine alte Curl-Version, die diesen Fehler enthält.
Zuerst habe ich die aktuelle Proxy-Einstellung mit aufgelistet
env | sort | less
(sollte so etwas sein http_proxy=http://wpad.local.machine.location:port number
)
Dann habe ich versucht einzustellen
export http_proxy=";"
welches diese Fehlermeldung gab:
curl: (5) Couldn't resolve proxy ';'
Versucht
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
und es hat funktioniert!
PS! Denken Sie daran, http-proxy mit auf die ursprünglichen Einstellungen zurückzusetzen
export http_proxy=http://wpad.local.machine.location:port number
Ich habe http_proxy
und bin https_proxy
definiert. Ich möchte diese Umgebungen nicht deaktivieren und erneut einstellen , --noproxy '*'
funktioniert aber perfekt für mich.
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"
}
Lahme Antwort, aber: Denken Sie daran, sicherzustellen, dass in einer ~/.curlrc
Datei kein Proxy festgelegt ist (...).
In meinem Fall (macos, curl 7.54.0
) habe ich unten Proxy mit gesetzt~/.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
Mit unbekanntem Grund kann diese Version von curl
nicht mit Umgebungsvariablen funktionieren NO_PRXY
und no_proxy
ordnungsgemäß, dann habe ich die Proxy-Umgebungsvariablen einzeln deaktiviert, bis sowohl auf HTTPS_PROXY
als auch auf https_proxy
.
unset HTTPS_PROXY
unset https_proxy
Es beginnt zu funktionieren und kann eine Verbindung zu internen URLs herstellen
Daher würde ich empfehlen, alle Proxy-Variablen zu deaktivieren, wenn Sie in Ihrer Umgebung eine temporäre Lösung haben.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Meine Locke ignorierte den Proxy unter Ubuntu 12.04 nicht, bis ich die Umgebungsvariable "no_proxy" (Kleinbuchstaben) festlegte. Die Option --noproxy war nicht verfügbar.