Curl и системный прокси

В настоящее время я пересылаю весь свой трафик через туннель ssh:

ssh -ND 8080 user@remote-machine

И установил прокси-систему system socks5 (в настройках системы в разделе сети) значение 127.0.0.1:8080. Все работает нормально, Google Chrome и другие программы используют прокси socks, как и предполагалось.

Проблема возникает, когда я пытаюсь использовать curl (либо в терминале, либо в PHP). Что я получаю, это:

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

Я пытался гуглить вокруг, но не мог найти ничего подходящего. Так как мне заставить curl работать с системным прокси (если есть)? Я хотел бы иметь возможность настроить псевдоним, который будет работать в обоих случаях (прокси и без прокси), потому что я не всегда буду хотеть использовать прокси.

2
задан 3 December 2012 в 11:48

1 ответ

Для HTTP-прокси используйте -x.

Имейте $HOME/.curlrc с

-x 127.0.0.1:8080

или создайте псевдонимы, используя curl -x 127.0.0.1:8080 ... для использования прокси.

Для SOCKS прокси, глядя на 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.

Итак, используйте curl --socks5 127.0.0.1:8080, т.е. curl --socks5 $socks_proxy.

0
ответ дан 3 December 2012 в 11:48

Другие вопросы по тегам:

Похожие вопросы: