Cela aiderait les gens à vous répondre si vous fournissiez plus d'informations. Sur quelle plateforme êtes-vous? D'où curl obtient-il les paramètres de proxy? Quel protocole (HTTP, FTP)? Quel type de proxy (HTTP, SOCKS)? Est-ce un proxy transparent? Pouvez-vous afficher un ensemble exact de commandes qui présentent votre problème, ainsi que leur sortie?
Brian Campbell
Réponses:
55
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.)
Si vous ne voulez pas remplacer le http_proxy au cas par cas, vous pouvez configurer les domaines à ignorer avec $ no_proxy, puis alias votre curl: alias curl = 'curl --noproxy $ no_proxy'
Sir4ur0n
1
@jdebon Cela ne fonctionne pas si vous avez un caractère générique dans cette variable d'environnement, pour les raisons décrites ci-dessous ( stackoverflow.com/a/17710829/2189128 ).
Jeff le
@Jeff Ce n'est pas mon cas, mais bel endroit, cela pourrait poser problème à d'autres personnes. Merci!
Sir4ur0n
247
Si votre curlest au moins une version 7.19.4, vous pouvez simplement utiliser l' --noproxyindicateur.
@RogerNg, si le manuel ou l'utilisation a changé depuis que j'ai répondu à la question, n'hésitez pas à mettre à jour la réponse ou à rédiger la vôtre. Néanmoins, au moment de la rédaction de cet article, cette réponse était exacte pour la question posée. Si votre installation ne se comporte pas conformément aux spécifications, c'est un tout autre problème.
Scott Offen
3
curl --noproxy stackoverflow.com stackoverflow.com C'est la bonne recommandation.
arulraj.net
2
Je suppose que cette --noproxyoption n'est pas disponible pour les anciennes versions de curl (par exemple, celles qui sont utilisées chez Centos / RHEL 5.x)
Dmitriusan
2
Sur la base de la documentation, la seule façon avec laquelle cela aurait pu fonctionner --noproxy 127.0.0.1était si stackoverflow.com fonctionnait sur localhost.
dannysauer
72
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.
Ce n'est pas un «long shot» - c'est la bonne façon de le faire. Selon la page de manuel de ma curl (7.15.5, qui n'affiche pas l'option '--noproxy'), -x / - proxy <proxyhost [: port]> ... Cette option remplace les variables d'environnement existantes qui définissent le proxy sur utilisation. S'il existe une variable d'environnement définissant un proxy, vous pouvez définir le proxy sur "" pour le remplacer.
Rob Cranfill
5
En '09, tout était loin.
Louis
5
+1, -x "" le fait. --noproxy avec joker ne fonctionne pas avec mon bash même si je cite le "*"
Eugene
@Eugene: Il fonctionne dans bash 4.3.11, et il doit être cité.
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.
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.
Merci. J'avais gratté la tête pourquoi curl ne respecte pas les vars env locaux. Et puis j'ai recherché le .curlrc et il y avait quelques configurations supplémentaires. Ajout de no_proxy et cela a fonctionné!
n3o le
1
Dans mon cas (macos, curl 7.54.0), j'ai ci-dessous un proxy défini avec~/.bash_profile
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.
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.
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.)la source
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 version7.19.4
, vous pouvez simplement utiliser l'--noproxy
indicateur.Du manuel .
la source
--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:
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.
la source
curl --noproxy "*" stackoverflow.com
Cela fonctionne très bien, définissez la chaîne proxy sur ""
la source
Ajoutez vos préférences de proxy dans .curlrc
Cela oblige tous les domaines de développement et les requêtes de la machine locale à ignorer le proxy.
la source
.
.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.
la source
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.
la source
Tout d'abord, j'ai répertorié le paramètre de proxy actuel avec
(devrait être quelque chose comme
http_proxy=http://wpad.local.machine.location:port number
)Puis j'ai essayé de régler
qui a donné ce message d'erreur:
A essayé
et ça a marché!
PS! N'oubliez pas de remettre le proxy http à ses paramètres d'origine avec
la source
J'ai
http_proxy
et je suishttps_proxy
défini. Je ne veux pas désarmer et redéfinir ces environnements, mais cela--noproxy '*'
fonctionne parfaitement pour moi.la source
Réponse boiteuse mais: N'oubliez pas de vous assurer qu'aucun proxy n'est défini dans un
~/.curlrc
fichier (...).la source
Dans mon cas (macos,
curl 7.54.0
), j'ai ci-dessous un proxy défini avec~/.bash_profile
Pour une raison inconnue, cette version de
curl
ne peut pas fonctionner avec les variables d'environnementNO_PRXY
etno_proxy
correctement, alors je désactive les variables d'environnement proxy une par une, jusqu'à ce que les deuxHTTPS_PROXY
ethttps_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.
la source
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.
la source