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 à partir de la variable d'environnement http_proxy
et que cette variable doit conserver sa valeur. Ensuite, dans un Shell tel que 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 examinées, sous l'en-tête ENVIRONMENT
.)
J'ai rencontré le même problème parce que je définissais les variables d'environnement http_proxy et https_proxy. Mais parfois, je me connecte à un autre réseau et dois contourner temporairement le proxy. La manière la plus simple de procéder (sans changer les variables d'environnement) est la suivante:
curl --noproxy '*' stackoverflow.com
Extrait du 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 cité de sorte qu'il ne soit pas développé par erreur par le shell.
Long shot mais essayez de définir le proxy sur "" (chaîne vide) qui doit remplacer tous les paramètres de proxy en fonction de la page de manuel.
Tout d’abord, j’ai énuméré 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 mettre
export http_proxy=";"
qui a donné ce message d'erreur:
curl: (5) Couldn't resolve proxy ';'
A tenté
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
et ça a fonctionné!
PS! N'oubliez pas de rétablir les paramètres d'origine du proxy http 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 effacer et redéfinir 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"
}
Vous devez utiliser la variable $no_proxy
env (minuscule). Veuillez consulter https://wiki.archlinux.org/index.php/proxy_settings pour des exemples.
En outre, il y a longtemps un bogue chez curl http://sourceforge.net/p/curl/bugs/185/ , vous utilisez peut-être une ancienne version de curl qui inclut ce bogue.
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 les requêtes de la machine locale ignorent le proxy.
Cela fonctionne très bien, définissez la chaîne de proxy sur ""
curl -x "" http://www.stackoverflow.com
Dans mon cas (macos, curl 7.54.0
), j'ai ci-dessous un proxy configuré 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 des raisons inconnues, cette version de curl
ne peut pas fonctionner correctement avec les variables d’environnement NO_PRXY
et no_proxy
. Je désactive ensuite les variables d’environnement proxy une par une, jusqu’à ce que vous ayez HTTPS_PROXY
et https_proxy
.
unset HTTPS_PROXY
unset https_proxy
il commence à fonctionner et peut se connecter aux URL internes
Je recommanderais donc de supprimer toutes les variables proxy si votre environnement est une solution temporaire.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Répondez mal mais: n'oubliez pas de vous assurer qu'aucun proxy n'est défini dans un fichier ~/.curlrc
(...).