Comment faire en sorte que curl ignore le proxy? La configuration de $ NO_PROXY ne semble pas fonctionner pour moi.
Comment faire en sorte que curl ignore le proxy? La configuration de $ NO_PROXY ne semble pas fonctionner pour moi.
Réponses:
Je suppose que curl lit l'adresse proxy de la variable d'environnement http_proxyet que la variable doit conserver sa valeur. Ensuite, dans un shell comme bash, export http_proxy='';avant qu'une commande (ou dans un script shell) ne change temporairement sa valeur.
(Voir le manuel de curl pour toutes les variables qu'il examine, sous l'en- ENVIRONMENTtête.)
unset http_proxy
ftp_proxy. Je pense, voici une liste complète wiki.archlinux.org/index.php/proxy_settings .
Si votre curlest au moins une version 7.19.4, vous pouvez simplement utiliser l' --noproxyindicateur.
curl --noproxy "*" http://www.stackoverflow.com
Du manuel .
--noproxyoption n'est pas disponible pour les anciennes versions de curl (par exemple, celles qui sont utilisées chez Centos / RHEL 5.x)
--noproxy 127.0.0.1était si stackoverflow.com fonctionnait sur localhost.
J'ai rencontré le même problème car j'ai défini les variables d'environnement http_proxy et https_proxy. Mais parfois, je me connecte à un autre réseau et dois temporairement contourner le proxy. Le moyen le plus simple de le faire (sans changer les variables d'environnement) est:
curl --noproxy '*' stackoverflow.com
D'après le manuel: "Le seul caractère générique est un seul caractère *, qui correspond à tous les hôtes et désactive effectivement le proxy."
Le caractère * est entre guillemets afin qu'il ne soit pas développé par erreur par le shell.
curl --noproxy "*" stackoverflow.com
Cela fonctionne très bien, définissez la chaîne proxy sur ""
curl -x "" http://www.stackoverflow.com
Ajoutez vos préférences de proxy dans .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Cela oblige tous les domaines de développement et les requêtes de la machine locale à ignorer le proxy.
..
Long shot mais essayez de définir le proxy sur "" (chaîne vide) qui devrait remplacer tous les paramètres de proxy selon la page de manuel.
Vous devez utiliser la $no_proxyvariable env (minuscule). Veuillez consulter https://wiki.archlinux.org/index.php/proxy_settings pour des exemples.
De plus, il y avait un bogue chez curl il y a longtemps http://sourceforge.net/p/curl/bugs/185/ , peut-être que vous utilisez une ancienne version de curl qui inclut ce bogue.
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)
Puis j'ai essayé de régler
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 remettre le proxy http à ses paramètres d'origine avec
export http_proxy=http://wpad.local.machine.location:port number
J'ai http_proxyet je suis https_proxydéfini. Je ne veux pas désarmer et redéfinir ces environnements, mais cela --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"
}
Réponse boiteuse mais: N'oubliez pas de vous assurer qu'aucun proxy n'est défini dans un ~/.curlrcfichier (...).
Dans mon cas (macos, curl 7.54.0), j'ai ci-dessous un proxy défini avec~/.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
Pour une raison inconnue, cette version de curlne peut pas fonctionner avec les variables d'environnement NO_PRXYet no_proxycorrectement, alors je désactive les variables d'environnement proxy une par une, jusqu'à ce que les deux HTTPS_PROXYet https_proxy.
unset HTTPS_PROXY
unset https_proxy
il commence à fonctionner et peut se connecter à des URL internes
Je recommanderais donc de désactiver toutes les variables proxy si vous avez dans votre environnement comme solution temporaire.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
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.