Мульти-айпишный парсер

January 7, 2008

Бывают такие ситуации, когда нужно быстренько напарсить контента, а проксей хороших под рукой нету.

Вот, написал небольшую функцию для использования нескольких айпишек для исходящих соединений.

Что делать дальше с контентом - решать Вам. В качестве примера - парсинг сниппетов блогсерча.

 

$keyword - кейворд в urlencode();

__________________________________
error_reporting(0);

function parsenewsnippets($keyword)
{

$ip[0]=’77.77.77.72′;
$ip[1]=’77.77.77.73′;
$ip[2]=’77.77.77.74′;
$ip[3]=’77.77.77.75′;

for ($k=0;$k<count($ip);$k++)
{
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$sourceip = $ip[$k];
socket_bind($sock, $sourceip);
socket_connect($sock, ‘blogsearch.google.com’, 80);
if($k==”0″){$ss=”0″;}else{$ss = $k . “00″;}
$request = ‘GET /blogsearch?hl=en&num=100&start=$ss&ie=UTF-8&sa=N&q=’ . $keyword . ‘ HTTP/1.0′ .
“\r\n” .’Host: blogsearch.google.com ‘ . “\r\n\r\n”;
socket_write($sock, $request);
while(!socket_last_error($sock)){
if($buffer=socket_read($sock,1,PHP_NORMAL_READ)){
$content .= $buffer;
}
}
socket_close($sock);
sleep(5/count($ip));
}
$d = $content;
$content = “”;
return $d;

}

—————

Chippa.name