Curl e proxy do sistema

2

No momento, estou encaminhando todo o meu tráfego por um túnel ssh:

ssh -ND 8080 user@remote-machine

E definiu o proxy socks5 do sistema (nas configurações do sistema, na seção de rede) como 127.0.0.1:8080 . Tudo funciona bem, o Google Chrome e outros programas estão usando o proxy socks como deveria.

O problema surge quando tento usar curl (no terminal ou usando em PHP ). O que eu obtenho é isto:

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

Eu tentei pesquisar no Google, mas não consegui encontrar nada relevante. Então, como obtenho o curl para trabalhar com o proxy do sistema (se presente)? Eu gostaria de poder configurar um alias que funcionasse com ambos os casos (proxy e sem proxy) porque eu não estarei sempre disposto a usar o proxy.

    
por s3v3n 03.12.2012 / 08:40

1 resposta

2

Para o proxy HTTP, use -x .

Tenha um $HOME/.curlrc com

-x 127.0.0.1:8080

ou crie aliases usando curl -x 127.0.0.1:8080 ... para uso de proxy.

Para o proxy SOCKS, olhando para man curl :

   --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.

Então, use curl --socks5 127.0.0.1:8080 , ou seja. curl --socks5 $socks_proxy .

    
por Tuminoid 03.12.2012 / 08:55