Wie mache ich curl den Proxy ignorieren?
-
03-07-2019 - |
Frage
Wie kann ich machen curl den Proxy ignorieren? $ NO_PROXY Einstellung scheint nicht für mich zu arbeiten.
Lösung
Ich gehe davon aus curl wird die Proxy-Adresse aus der Umgebungsvariablen http_proxy
zu lesen und dass die Variable ihren Wert behalten sollen. Dann in einer Shell wie bash, export http_proxy='';
vor einem Befehl (oder in einem Shell-Skript) würde vorübergehend seinen Wert ändern.
(Siehe curl Anleitung für alle Variablen es aussieht, unter der Überschrift ENVIRONMENT
.)
Andere Tipps
Ich lief in das gleiche Problem, weil ich die http_proxy und https_proxy Umgebungsvariablen. Aber gelegentlich, verbinde ich mit einem anderen Netzwerk und muß 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 Wildcard ist ein einzelnes Zeichen *, das alle Hosts übereinstimmt und effektiv deaktiviert den Proxy"
Das Zeichen * wird so zitiert, dass es nicht irrtümlich von der Shell erweitert wird.
Long Shot, sondern versuchen, den Proxy auf „“ (leere Zeichenkette) Einstellung, die keine Proxy-Einstellungen entsprechend der Manpage außer Kraft setzen sollte.
Als erstes aufgelistet ich die aktuellen Proxy-Einstellung mit
env | sort | less
(sollte wie http_proxy=http://wpad.local.machine.location:port number
sein)
Dann habe ich versucht Einstellung
export http_proxy=";"
, die diese Fehlermeldung gab:
curl: (5) Couldn't resolve proxy ';'
Versuche
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
und es funktioniert!
PS! Denken Sie daran setzen http-Proxy zurück auf die ursprünglichen Einstellungen mit
export http_proxy=http://wpad.local.machine.location:port number
Ich habe http_proxy
und https_proxy
definiert. Ich will nicht zu Frisch- und setzen wieder jene Umgebungen und --noproxy '*'
funktioniert 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"
}
Das funktioniert ganz gut, stellen Sie den Proxy-Zeichenfolge auf ""
curl -x "" http://www.stackoverflow.com
Sie sollten $no_proxy
env Variable (Kleinbuchstaben) verwendet werden. Bitte konsultieren Sie https://wiki.archlinux.org/index.php/proxy_settings Beispiele .
Auch gibt es einen Fehler bei curl schon vor langer Zeit http://sourceforge.net/ p / curl / Bugs / 185 / , vielleicht haben Sie eine alte curl Version verwenden, die diesen Fehler enthält.
Ihre Proxy-Einstellungen in .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Diese make alle dev Domains und lokale Rechner Anfrage ignorieren den Proxy.
Lame Antwort aber: Denken Sie daran, kein Proxy, um sicherzustellen, in einer ~/.curlrc
Datei festgelegt ist (...)
In meinem Fall (macos, curl 7.54.0
), ich habe unter Proxy-Set mit ~/.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, diese Version von curl
kann nicht mit Umgebungsvariablen arbeiten NO_PRXY
und no_proxy
richtig, dann unset ich die Proxy-Umgebungsvariablen eine nach der anderen, bis sowohl HTTPS_PROXY
und https_proxy
.
unset HTTPS_PROXY
unset https_proxy
es beginnt zu arbeiten und kann auf interne URLs verbinden
So würde ich empfehlen, alle Proxy-Variablen unscharf zu schalten, wenn Sie in Ihrer Umgebung als temporäre Lösung.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Meine curl ignorieren nicht den Proxy auf Ubuntu 12.04, bis ich das „no_proxy“ (klein geschrieben) Umgebungsvariable gesetzt. Die --noproxy Option nicht zur Verfügung.