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

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

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

$proxy = "cagsan:jw22wdw@108.61.25.223: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);

3 ответов


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

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

С docs:

CURLOPT_PROXYTYPE

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


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

curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:marley@localhost:12345');

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

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

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

curl_setopt($ch, CURLOPT_PROXYTYPE, 7);