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_proxy
et 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- ENVIRONMENT
tête.)
unset http_proxy
ftp_proxy
. Je pense, voici une liste complète wiki.archlinux.org/index.php/proxy_settings .
Si votre curl
est au moins une version 7.19.4
, vous pouvez simplement utiliser l' --noproxy
indicateur.
curl --noproxy "*" http://www.stackoverflow.com
Du manuel .
--noproxy
option 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_proxy
variable 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_proxy
et je suis https_proxy
dé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 ~/.curlrc
fichier (...).
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 curl
ne peut pas fonctionner avec les variables d'environnement NO_PRXY
et no_proxy
correctement, alors je désactive les variables d'environnement proxy une par une, jusqu'à ce que les deux HTTPS_PROXY
et 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.