Граббер и чекер прокси на PHP


Очередная напоминалка для себя, но может кому и пригодится.

Появилась недавно задача написать граббер и, соответственно, чекер прокси серверов.

Как обычно времени практически нет, пришлось накидать как успелось.

Если в двух словах, то список серверов я буду сливать здесь - http://foxtools.ru/Proxy.

Проверять их буду на google.ru.

Парсить выдачу буду библиотекой Simple HTML DOM. Кому она интересна, подробнее тут.

Скачать проект полностью можно тут.

сам скрипт:

<?
//	парсер и чекер проксей...


require_once( 'simple_html_dom.php' );
$file = 'proxyList.txt';
$proxyList = [];




$url = 'http://foxtools.ru/Proxy';	//	буду сливать отсюда...
$html = file_get_html($url);

if ( $html )	{
	$tr = $html -> find('#theProxyList tbody tr');
	foreach ($tr as $one_tr)	{

		$ip 	= @$one_tr -> find('td', 1) -> plaintext;
		$port 	= @$one_tr -> find('td', 2) -> plaintext;

		if ( !$ip || !$port )	
			continue;

		$proxy = $ip . ':' . $port;

		if ( check('https://www.google.ru/', $proxy) )
			$proxyList[] = $proxy;
	}
}




//	запись в файл
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>';


function check($url, $proxy)	{
    $curlh = curl_init();

    curl_setopt($curlh,CURLOPT_TIMEOUT, 3);	//	3х секунд думаю будет достаточно

    curl_setopt($curlh, CURLOPT_URL, $url);
    curl_setopt($curlh, CURLOPT_FAILONERROR, true);
    curl_setopt($curlh, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curlh,	CURLOPT_NOBODY, true);	//	буду проверять по заголовкам
    curl_setopt($curlh,	CURLOPT_HEADER, true);

    curl_setopt($curlh, 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, CURLOPT_PROXY, $proxy );
    curl_setopt($curlh, CURLOPT_HTTPPROXYTUNNEL, true);
	

	$out = curl_exec($curlh);
	curl_close($curlh);

	if ( strpos($out, '200 OK') == true )
		return true;

    return false;
}

Как видно, все достаточно просто.

Сначала я качаю с сайта HTML и сразу преобразую в объект Simple HTML DOM. Затем в нем нахожу 2ой и 3ий TD, в которых находятся IP адрес и порт прокси. Если кому-то нужно больше инфы и таблицы, то можно доработать, добавив остальные колонки.

Перед сохранением прокси, он проверяется на запрос в гугл. Если ответ пришел в течении 3х секунд (см. curl_setopt($curlh,CURLOPT_TIMEOUT, 3) ) то прокси рабочий.

TIMEOUT тоже можно менять на ваше усмотрение.

 


Тэги:

Комментарии: 1

Прокомментировать »

 
 
lavr
7.09.2017
 

Граббер и чекер прокси на PHP | Метки: граббер прокси серверов, PHP proxy server, чекер прокси, проверка прокси на работоспособность, как скачать прокси на PHP,

 

Прокомментировать

 
 
Сообщение *
 
Проверочный код *
 
 
 
Яндекс.Метрика