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_proxye 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 ENVIRONMENTtitolo.)
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 --noproxybandiera.
curl --noproxy "*" http://www.stackoverflow.com
Dal manuale .
--noproxyopzione non sia disponibile per le versioni precedenti di curl (ad esempio quelle utilizzate in Centos / RHEL 5.x)
--noproxy 127.0.0.1era 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_proxyvariabile 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_proxye https_proxysono 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 ~/.curlrcfile (...).
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 curlnon può funzionare con le variabili di ambiente NO_PRXYe no_proxycorrettamente, quindi ho annullato le variabili di ambiente del proxy una per una, fino a quando entrambe HTTPS_PROXYe 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.