Как использовать прокси 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);