Подтвердить что ты не робот

Как использовать прокси-сервер SOCKS 5 с cURL?

Обычные прокси (ex: 72.41.132.22:3128) хорошо работают с cURL, однако, когда я использую SOCKS 5 прокси с именем пользователя /pass, он просто дает мне "[1" на странице.

Есть ли способ использовать SOCKY 5 прокси с cURL?

$proxy = "cagsan:[email protected]:34792";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
4b9b3361

Ответ 1

Вам нужно указать cURL, прокси - прокси SOCKS5, иначе cURL предполагает HTTP-прокси:

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

Из docs:

CURLOPT_PROXYTYPE

Либо CURLPROXY_HTTP (по умолчанию), либо CURLPROXY_SOCKS5.

Ответ 2

так как cURL 7.21.7, вы можете использовать CURLOPT_PROXY и указать протокол SOCKS:

curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:[email protected]:12345');

Дополнительная информация в документации libcurl.

Ответ 3

Для тех, кто хочет подключиться через имя хоста (localhost?) и не работает с CURLPROXY_SOCKS5, вы можете попробовать CURLPROXY_SOCKS5_HOSTNAME.

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

В некоторых более ранних версиях PHP вам нужно будет:

curl_setopt($ch, CURLOPT_PROXYTYPE, 7);