Добрый вечер. Столкнулся с такой проблемой, не работают SOCKS прокси на хостинге через CURL. На домашнем сервере все нормально, однако на хостинге возникает ошибка "Failed to resolve "сайт" for SOCKS4 connect.
Собственно, сам код:
<?
$start = microtime(true);
$file = 'proxyList.txt';
$proxyList = [];
$fp = fopen ($file, "r+");
$proxy=fread($fp,filesize($file));
$proxys=explode(PHP_EOL,$proxy);
$mh = curl_multi_init();
print_r($proxys);
foreach($proxys as $proxy){
$proxy=explode(":",$proxy);
echo $ip=$proxy[0];
echo $port=$proxy[1];
if(isset($proxy[2])){
$type=$proxy[2];
}
if ( !$ip || !$port )
continue;
if(isset($proxy[2])){
$proxy = $ip . ':' . $port. ':' . $type;
}else{
$proxy = $ip . ':' . $port;
}
$curlh[$proxy]= curl_init();
curl_setopt($curlh[$proxy],CURLOPT_TIMEOUT, 10);
curl_setopt($curlh[$proxy], CURLOPT_URL, 'https://www.google.com');
curl_setopt($curlh[$proxy], CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curlh[$proxy], CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlh[$proxy], CURLOPT_NOBODY, true);
curl_setopt($curlh[$proxy], CURLOPT_HEADER, true);
curl_setopt($curlh[$proxy], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36');
curl_setopt($curlh[$proxy], CURLOPT_PROXY, $ip . ":" . $port );
if(isset($type)) {
if(stripos($type,"SOCKS5")!==false){
curl_setopt ($curlh[$proxy], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
}
if (stripos($type, "SOCKS4") !== false) {
curl_setopt($curlh[$proxy], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
}
if (stripos($type, "HTTP") !== false) {
curl_setopt($curlh[$proxy], CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
}
}
curl_setopt($curlh[$proxy], CURLOPT_HTTPPROXYTUNNEL, true);
curl_multi_add_handle($mh, $curlh[$proxy]);
}
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running);
foreach ($curlh as $key => $value) {
curl_multi_remove_handle($mh, $curlh[$key]);
echo curl_error ($curlh[$key]) . "<br>";
}
foreach ($curlh as $key => $value) {
$response[$key] = curl_multi_getcontent($curlh[$key]);
}
foreach($response as $key=> $out){
if ( strpos($out, 'Forbidden') == true ){
continue;}
if ( strpos($out, '200 OK') == true ){
array_push($proxyList,$key);}
}
if ( count($proxyList) ) {
unlink($file);
if ($fp = fopen ($file, "w")) {
for ($i=0;$i<count($proxyList);$i++)
fwrite ($fp, $proxyList[$i] . PHP_EOL);
fclose ($fp);
}
}
echo '<pre>';
print_r($proxyList);
echo '</pre>';
$time = microtime(true) - $start;
printf('Скрипт выполнялся %.4F сек.', $time);
Собственно, проблема заключается в хостинге. Что именно необходимо для использования SOCKS прокси? Какие технологии, библиотеки? Благодарю за внимание.
P.S. прокси использую исключительно для сбора и анализа информации, никаких DDOS, воровства данных и прочего.
UPD SOCKS5 тоже не работает, соответственно возникает ошибка Failed to resolve "сайт" for SOCKS5 connect. HTTP прокси работают.