@Zimaell

Как проверить рабочий ли прокси по средствам PHP?

Подскажите как проверить рабочий ли прокси для дальнейшего использования для парсинга сайтов через CURL.
В интернете поискав различные примеры составил свою функцию

function preg_work_proxy($arr_proxy){
	if(empty($arr_proxy)) return false;
	$proxy_work=array(); $proxy_broken=array();
	$multi=curl_multi_init();
	foreach($arr_proxy as $proxy){
		$ch=curl_init();
		curl_setopt($ch,CURLOPT_URL,"http://google.com");
		curl_setopt($ch,CURLOPT_HEADER,0);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
		curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
		curl_setopt($ch,CURLOPT_TIMEOUT,10);
		curl_setopt($ch,CURLOPT_PROXY,$proxy);
		curl_setopt($ch,CURLOPT_PROXYTYPE, 0);
    	curl_multi_add_handle($multi,$ch);
    	$channels[$proxy]=$ch;
		}
	$active=NULL; do{ $mrc=curl_multi_exec($multi,$active); } while($mrc==CURLM_CALL_MULTI_PERFORM);
	while($active && $mrc==CURLM_OK){ if(curl_multi_select($multi)==-1) usleep(100); do{ $mrc=curl_multi_exec($multi,$active); } while($mrc==CURLM_CALL_MULTI_PERFORM); }			
	foreach($channels as $proxy=>$channel){	
		$done=curl_multi_info_read($multi);
		$info=curl_getinfo($done['handle']);
		echo_var_dump($info);
		if($info['http_code']==301) $proxy_work[]=$proxy; else $proxy_broken[]=$proxy;
		curl_multi_remove_handle($multi,$done['handle']);
		}
	curl_multi_close($multi);
	return array('proxy_work'=>$proxy_work,'proxy_broken'=>$proxy_broken);
	}

в ответе содержатся и рабочие и не рабочие прокси, но как только я использую сразу рабочие для парсера то они уже не дают результата, то есть ли проверка не верна, либо я что то не правильно делаю, подскажите что не так?
  • Вопрос задан
  • 392 просмотра
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
если думаешь парсить Гугл, то Гугл таких умных на OO вертел, для гугла спец прокси канают только

обычно прокси фришный как мигалка - работает / не рабоает,работает / не рабоает,работает / не рабоает

рекомендуемое время речека - 6 часов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы