web-dev-qa-db-fra.com

Curl: Bypass proxy pour localhost

Je suis sous un proxy et si j'essaie curl http://localhost/mysite ou curl http://127.0.0.1/mysite curl essayez de le résoudre avec le proxy. J'ai donc essayé avec l'option --noproxy, mais cela ne fonctionne pas. Fonctionne correctement pour les serveurs externes avec le proxy en tant que curl http://mysite.com.

Ma configuration:

  • Cygwin (bash) sous Windows 8 avec extension curl. 
  • Proxy: proxy.domain.xx:1080 sans authentification
  • http_proxy=http://proxy.domain.xx:1080
  • Serveur local: XAMP version 1.8.0
  • Ports Apache: 80 443
  • Navigateur: Chrome avec proxy, mais configuré pour accéder à localhost et *.dev

De la boucle --help

--noproxy: liste d'hôtes séparés par des virgules n'utilisant pas de proxy

Ce que j'ai essayé:

  • J'ai désactivé le pare-feu et rien
  • $ curl -v http://localhost/mysite -> Debug: 

    Réponse

    Connected to proxy.domain.xx (200.55.xxx.xx) port 1080 (#0)
    GET http://localhost/mysite HTTP/1.1
    User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
    Host: localhost
    Accept: */*
    Proxy-Connection: Keep-Alive
    The system returned: <PRE><I>(111) Connection refused</I></PRE>
    
  • curl -v --noproxy localhost, http://localhost/muestra 

    Réponse

    About to connect() to localhost port 80 (#0)
    * Trying 127.0.0.1... 
    * Connected to localhost (127.0.0.1) port 80 (#0)
    > GET /mysite HTTP/1.1
    > User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
    > Host: localhost
    > Accept: */*
    >
    < HTTP/1.1 301 Moved Permanently
    < Server: Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4
    < Location: http://localhost/mysite
    < Content-Length: 331
    < Content-Type: text/html; charset=iso-8859-1
    

Une idée comment résoudre ce problème?

26
Tom Sarduy

Après 

curl -v --noproxy localhost, http://localhost/muestra

curl a répondu avec

About to connect() to localhost port 80 (#0)
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 80 (#0)

Donc, il a clairement indiqué qu'il était connecté à localhost.

37
Udo Klein

utilisation 

curl -v --noproxy '*' http://abc.com

désactiver complètement le proxy.

ou si vous souhaitez désactiver le proxy uniquement pour la destination abc.com

curl -v --noproxy "abc.com" http://abc.com

où abc.com est l'URL que vous voulez aller

7
jigar137

Comme d'autres l'ont dit, les options --noproxy correspondent à ce que vous recherchez . https://curl.haxx.se/docs/manpage.html#--noproxy

Apparemment, la deuxième demande que vous avez essayée recevait une réponse HTTP 301, vous voudrez donc probablement aussi utiliser l'option -L pour suivre les redirections: https://curl.haxx.se/docs/manpage.html#- L

Vous pouvez utiliser alias curl pour toujours ignorer les mandataires pour les demandes localhost.

alias curl='curl --noproxy localhost,127.0.0.1'

Ajoutez-le à votre fichier .bashrc pour plus de commodité:

echo "alias curl='curl --noproxy localhost,127.0.0.1'" >> ~/.bashrc

4
borlafu

Sous Windows, l'option suivante fonctionnait pour moi pour la connexion à localhost. 

curl --proxy "" --location http://127.0.0.1:8983

4
emeralddove

Curl s'attend à ce que le port soit spécifié avec proxy cette solution a fonctionné pour moi

export http_proxy = "http: // myproxy: 80"

1
Aftab Naveed