Come faccio a far sì che curl ignori il proxy? L'impostazione di $ NO_PROXY non sembra funzionare per me.
Come faccio a far sì che curl ignori il proxy? L'impostazione di $ NO_PROXY non sembra funzionare per me.
Risposte:
Presumo che curl stia leggendo l'indirizzo proxy dalla variabile di ambiente http_proxy
e che la variabile debba mantenere il suo valore. Quindi in una shell come bash, export http_proxy='';
prima che un comando (o in uno script di shell) modifichi temporaneamente il suo valore.
(Vedi il manuale di curl per tutte le variabili che guarda, sotto il ENVIRONMENT
titolo.)
unset http_proxy
ftp_proxy
. Penso, ecco un elenco completo wiki.archlinux.org/index.php/proxy_settings .
Se la tua curl
è almeno una versione 7.19.4
, potresti semplicemente usare la --noproxy
bandiera.
curl --noproxy "*" http://www.stackoverflow.com
Dal manuale .
--noproxy
opzione non sia disponibile per le versioni precedenti di curl (ad esempio quelle utilizzate in Centos / RHEL 5.x)
--noproxy 127.0.0.1
era se stackoverflow.com fosse in esecuzione su localhost.
Ho riscontrato lo stesso problema perché ho impostato le variabili d'ambiente http_proxy e https_proxy. Ma occasionalmente, mi collego a una rete diversa e devo bypassare temporaneamente il proxy. Il modo più semplice per farlo (senza modificare le variabili d'ambiente) è:
curl --noproxy '*' stackoverflow.com
Dal manuale: "L'unico carattere jolly è un singolo carattere *, che corrisponde a tutti gli host e disabilita effettivamente il proxy."
Il carattere * viene citato in modo che non venga espanso erroneamente dalla shell.
curl --noproxy "*" stackoverflow.com
Funziona perfettamente, imposta la stringa proxy su ""
curl -x "" http://www.stackoverflow.com
Aggiungi le tue preferenze proxy in .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
In questo modo tutti i domini dev e le richieste della macchina locale ignorano il proxy.
.
.
Campo lungo ma prova a impostare il proxy su "" (stringa vuota) che dovrebbe sovrascrivere qualsiasi impostazione del proxy in base alla pagina man.
Dovresti usare la $no_proxy
variabile env (minuscolo). Si prega di consultare https://wiki.archlinux.org/index.php/proxy_settings per esempi.
Inoltre, molto tempo fa c'era un bug in curl http://sourceforge.net/p/curl/bugs/185/ , forse stai usando un'antica versione di curl che include questo bug.
Per prima cosa, ho elencato l'impostazione corrente del proxy con
env | sort | less
(dovrebbe essere qualcosa di simile http_proxy=http://wpad.local.machine.location:port number
)
Quindi ho provato a impostare
export http_proxy=";"
che ha dato questo messaggio di errore:
curl: (5) Couldn't resolve proxy ';'
Provato
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
e ha funzionato!
PS! Ricorda di riportare http-proxy alle impostazioni originali con
export http_proxy=http://wpad.local.machine.location:port number
Ho http_proxy
e https_proxy
sono definito. Non voglio disarmare e rimettere a posto quegli ambienti, ma --noproxy '*'
per me funziona perfettamente.
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"
}
Risposta zoppa ma: ricordati di assicurarti che nessun proxy sia impostato in un ~/.curlrc
file (...).
Nel mio caso (macos, curl 7.54.0
), ho impostato il proxy di seguito con~/.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
Con motivi sconosciuti, questa versione di curl
non può funzionare con le variabili di ambiente NO_PRXY
e no_proxy
correttamente, quindi ho annullato le variabili di ambiente del proxy una per una, fino a quando entrambe HTTPS_PROXY
e https_proxy
.
unset HTTPS_PROXY
unset https_proxy
inizia a funzionare e può connettersi a URL interni
Quindi consiglierei di disattivare tutte le variabili proxy se hai nel tuo ambiente come soluzione temporanea.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Il mio curl non ignorava il proxy su Ubuntu 12.04 fino a quando non ho impostato la variabile di ambiente "no_proxy" (minuscolo). L'opzione --noproxy non era disponibile.