web-dev-qa-db-fra.com

Curl et proxy système

Je suis actuellement en train de transférer tout mon trafic dans un tunnel ssh:

ssh -ND 8080 user@remote-machine

Et définissez le proxy système socks5 (dans les paramètres système de la section réseau) sur 127.0.0.1:8080. Tout fonctionne bien, Google Chrome et d'autres programmes utilisent le proxy socks comme supposé.

Le problème survient lorsque j'essaie d'utiliser curl (soit dans un terminal, soit dans PHP). Ce que je reçois est ceci:

user@laptop:~$ curl -v google.com
* About to connect() to proxy 127.0.0.1 port 8080 (#0)
*   Trying 127.0.0.1... connected
> GET HTTP://google.com HTTP/1.1
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: google.com
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
* Empty reply from server
* Connection #0 to Host 127.0.0.1 left intact
curl: (52) Empty reply from server
* Closing connection #0

J'ai essayé de chercher sur Google, mais je n'ai rien trouvé de pertinent. Alors, comment puis-je faire en sorte que curl fonctionne avec un proxy système (le cas échéant)? J'aimerais pouvoir configurer un alias qui fonctionnerait avec les deux cas (proxy et pas de proxy) car je ne serais pas toujours disposé à utiliser le proxy.

2
s3v3n

Pour le proxy HTTP, utilisez -x.

Avoir un $HOME/.curlrc avec

-x 127.0.0.1:8080

ou créez des alias en utilisant curl -x 127.0.0.1:8080 ... pour une utilisation par proxy.

Pour le proxy SOCKS, regarder man curl dit:

   --socks5 <Host[:port]>
          Use the specified SOCKS5 proxy - but resolve the Host name locally. 
          If the port number is not specified, it is assumed at port 1080.

          This option overrides any previous use of -x, --proxy, as they are mutually exclusive.

Donc, utilisez curl --socks5 127.0.0.1:8080, c'est-à-dire. curl --socks5 $socks_proxy.

2
Tuminoid