Comment faire en sorte que curl ignore le proxy?

Comment faire en sorte que curl ignore le proxy? Définir $ NO_PROXY ne semble pas fonctionner pour moi.

Je suppose que curl lit l’adresse proxy de la variable d’environnement http_proxy et que la variable doit conserver sa valeur. Ensuite, dans un shell comme bash, export http_proxy=''; avant une commande (ou dans un script shell) changerait temporairement sa valeur.

(Voir le manuel de curl pour toutes les variables qu’il regarde, sous l’en-tête ENVIRONMENT .)

Si votre curl est au moins la version 7.19.4 , vous pouvez simplement utiliser le drapeau --noproxy .

 curl --noproxy "*" http://www.stackoverflow.com 

Du manuel

J’ai rencontré le même problème car j’ai défini les variables d’environnement http_proxy et https_proxy. Mais occasionnellement, je me connecte à un autre réseau et je dois contourner temporairement le proxy. La manière la plus simple de le faire (sans changer les variables d’environnement) est la suivante:

 curl --noproxy '*' stackoverflow.com 

A partir du manuel: “Le seul caractère générique est un caractère unique *, qui correspond à tous les hôtes et désactive le proxy.”

Le caractère * est cité de sorte qu’il ne soit pas élargi par erreur par le shell.

Long shot mais essayez de définir le proxy sur “” (chaîne vide) qui devrait remplacer tous les parameters de proxy en fonction de la page de manuel.

Tout d’abord, j’ai répertorié le paramètre de proxy actuel avec

 env | sort | less 

(devrait être quelque chose comme http_proxy=http://wpad.local.machine.location:port number )

Alors j’ai essayé de mettre

 export http_proxy=";" 

qui a donné ce message d’erreur:

 curl: (5) Couldn't resolve proxy ';' 

A essayé

 export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55 

et ça a marché!

PS! N’oubliez pas de rétablir les parameters d’origine de http-proxy avec

 export http_proxy=http://wpad.local.machine.location:port number 

J’ai http_proxy et https_proxy sont définis. Je ne veux pas --noproxy '*' ces environnements, mais --noproxy '*' fonctionne parfaitement pour moi.

 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" } 

Ajoutez vos préférences de proxy dans .curlrc

 proxy = 1.2.3.4 noproxy = .dev,localhost,127.0.0.1 

Cela fait que tous les domaines de développement et la demande de la machine locale ignorent le proxy.

Vous devriez utiliser la variable env $no_proxy (minuscule). Veuillez consulter https://wiki.archlinux.org/index.php/proxy_settings pour des exemples.

Il y a aussi eu un bogue à curl il y a longtemps http://sourceforge.net/p/curl/bugs/185/ , vous utilisez peut-être une ancienne version curl qui inclut ce bogue.

Lame answer but: N’oubliez pas de vous assurer qu’aucun proxy n’est défini dans un fichier ~/.curlrc (…).

Cela fonctionne très bien, définissez la chaîne de proxy sur “”

 curl -x "" http://www.stackoverflow.com 

Mon curl n’ignorait pas le proxy sur Ubuntu 12.04 jusqu’à ce que je définisse la variable d’environnement “no_proxy” (minuscule). L’option –noproxy n’était pas disponible.