Ответ 1
Вам нужно указать cURL, прокси - прокси SOCKS5, иначе cURL предполагает HTTP-прокси:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
Из docs:
CURLOPT_PROXYTYPE
Либо CURLPROXY_HTTP (по умолчанию), либо CURLPROXY_SOCKS5.
Обычные прокси (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);
Вам нужно указать 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:[email protected]:12345');
Дополнительная информация в документации libcurl.
Для тех, кто хочет подключиться через имя хоста (localhost?) и не работает с CURLPROXY_SOCKS5
, вы можете попробовать CURLPROXY_SOCKS5_HOSTNAME
.
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
В некоторых более ранних версиях PHP вам нужно будет:
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);