[Ищу] Proxy Checker

Статус
В этой теме нельзя размещать новые ответы.

Sergyk

Мой дом здесь!
Регистрация
1 Авг 2006
Сообщения
275
Реакции
370
Ищется скрипт простенького чекера прокси или такой скрипт
 
Бесплатных я не встречал если только писать с 0 !
Было както парочку но они 1древнии 2 слабенькие не на пост не на куки не пробивают и т.д.

А вобще если так просто на работоспособность проксю проверить то просто пингуй её а чтобы узнать кто она и что то считывай заголовки и там уже смотри аноним прозрачная и т.д.
 
вот, по материалам форума накатал под свои нужды многопоточный чекер на PHP
сразу говорю, что чекер пока еще относитально сырой, и только обкатывается, и постоянно дополняется-видоизменяется по мере моих экспериментов с multiCURL-ом
основная функция возлагаемая мною на него - фильтрация больших списокв уников, после чего уменьшеные списки работающих прокси, я прогоняю через другие программы
PHP:
<?
define("_THREAD",	100);//больше 100 потоков этот URL не выдерживает эффективно
define("_TRY",		1);//по поводу нескольких попыток, что-то я заглючил с multiCURL-ом, поэтому не трогаем
define("_URL",		"http://zerg.helllabs.net/cgi-bin/textenv.pl");
define("_TIME",		40);//+ 5-10 секунд по сравнению с тем, что нам надо

//--------------------------------------------------------------------------------
error_reporting(E_ALL);
set_time_limit(0);
ignore_user_abort(TRUE);
ob_implicit_flush();
//--------------------------------------------------------------------------------
//$fpi=fopen('2check.txt','r');
$fpi=fopen('_2check(x20).txt','r');//файл для чека
//$fpo=fopen('checked.txt','w');
$fpo=fopen('checked.txt','a');//сюда складываются все прокси
$fpc=fopen('CoDeeN.txt','a');//а сюда все CoDeeN-прокси

$count=0;
$i=0;
$mh=curl_multi_init();
$ch=array();
$proxy=array();
while(!feof($fpi))
	{
	$proxy[$i]=trim(fgets($fpi, 4096));
	$ch[$i]=curl_init();
	//curl_setopt($ch[$i],CURLOPT_URL,"http://ya.ru");	
	curl_setopt($ch[$i],CURLOPT_URL,_URL);	
	curl_setopt($ch[$i],CURLOPT_RETURNTRANSFER,1);
	curl_setopt($ch[$i],CURLOPT_CONNECTTIMEOUT,_TIME);
	curl_setopt($ch[$i],CURLOPT_TIMEOUT,_TIME);
	curl_setopt($ch[$i],CURLOPT_PROXY,$proxy[$i]);
	curl_multi_add_handle($mh,$ch[$i]);
	$i++;
	if($i==_THREAD)
		{
		for($j=0;$j<_TRY;$j++)
			check($mh,$ch,$proxy);
		for($j=0;$j<_THREAD;$j++)
			curl_multi_remove_handle($mh,$ch[$j]);
		curl_multi_close($mh);
		$i=0;
		$mh=curl_multi_init();
		$ch=array();
		$proxy=array();
		echo (++$count)."\n";
		}
		
	}

function check(&$mh,&$ch,&$proxy)
	{
	global $fpo,$fpc;
	curl_multi_exec($mh,$running);

	$active = null;
	do
		$mrc = curl_multi_exec($mh, $active);
	while ($mrc == CURLM_CALL_MULTI_PERFORM);
	while ($active && $mrc == CURLM_OK)
	if (($qwe=curl_multi_select($mh,1)) != -1)
		do
			$mrc = curl_multi_exec($mh, $active);
		while ($mrc == CURLM_CALL_MULTI_PERFORM);
	/*такая конструкция почему-то грузит проц в отличии от предыдущей
	do
		{
		curl_multi_exec($mh,$running);
		}
	while($running>0);
	*/
	
	
	for($j=0;$j<_THREAD;$j++)
		{
		$data=curl_multi_getcontent($ch[$j]);
		$temp=curl_getinfo($ch[$j]);
		if($data!='')//довольно сомнительная проверка, но она выделяет  всех тех, что хотя бы ответил
			{
			if(strpos($data,"CoDeeN")!==FALSE)//CoDeen
				{
				fwrite($fpc,$proxy[$j]."\r\n");
				}
			else
				{
				fwrite($fpo,$proxy[$j]."\r\n");
				}
			}
		}
	}


fclose($fpi);
fclose($fpo);
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху