Код:
<?php
@set_time_limit(0);
$filename = 'sitesproxy.txt';
$n = 15; //количество потоков при проверке проксей
$regular = '#[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]{2,5}#';
$ban = array();
$proxy = array();
foreach (file($filename) as $url)
{
$url = trim($url);
$page = curlPage($url);
preg_match_all($regular, $page, $p);
if (!count($p[0]))
$ban[] = $url;
else
$proxy = array_merge($proxy, $p[0]);
}
$proxies = __array_unique($proxy);
$countProxy = count($proxies);
if ($countProxy <= $n)
{
chk($proxies);
}
else
{
$c = floor($countProxy / $n);
for ($i = 1; $i <= $c; $i++)
chk(array_slice($proxies, $n * $i, $n));
chk(array_slice($proxies, $n * ($c + 1), $countProxy - $n * $c));
}
if (count($ban) == 1)
echo '<hr>Сайт не принес пользы: ' . $ban[0];
if (count($ban) > 1)
{
echo '<hr>Сайты не приносят пользы:<br>';
foreach ($ban as $sitename)
echo $sitename . '<br>';
}
function chk($proxies)
{
$mc = curl_multi_init ();
for ($thread_no = 0; $thread_no < count($proxies); $thread_no++)
{
$c [$thread_no] = curl_init ();
curl_setopt($c [$thread_no], CURLOPT_URL, "http://google.com");
curl_setopt($c [$thread_no], CURLOPT_HEADER, 0);
curl_setopt($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($c [$thread_no], CURLOPT_TIMEOUT, 10);
curl_setopt($c [$thread_no], CURLOPT_PROXY, trim($proxies [$thread_no]));
curl_setopt($c [$thread_no], CURLOPT_PROXYTYPE, 0);
curl_multi_add_handle($mc, $c [$thread_no]);
}
do
{
while (($execrun = curl_multi_exec($mc, $running)) == CURLM_CALL_MULTI_PERFORM)
if ($execrun != CURLM_OK)
break;
while ($done = curl_multi_info_read($mc))
{
$info = curl_getinfo($done ['handle']);
if ($info ['http_code'] == 301)
echo trim($proxies [array_search($done['handle'], $c)]) . "<br>\r\n";
curl_multi_remove_handle($mc, $done ['handle']);
}
} while ($running);
curl_multi_close($mc);
}
function curlPage($url) //curl
{
if (!function_exists('curl_init'))
die('На сервере не установлено или отключено расширение cURL. Скрипт завершил работу.');
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json',
'User-Agent: Mozilla/5.0 (X11; U; Gentoo-Linux; ru; rv:1.9.2.3)socks-php-bot Gecko/20100404 Firefox/3.7.0 GTB7.0',
'Accept-Encoding: deflate',
'Accept-Charset: UTF-8,*'));
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 300);
return curl_exec($curl);
}
function __array_unique($array)
{
$r = array();
foreach ($array as $key => $value)
{
if (!in_array($value, $r))
$r[] = $value;
}
return $r;
}




