Я использую следующий php-скрипт для получения результатов поиска от Google.
include("simple_html_dom.php"); include("random-user-agent.php"); $query = 'facebook'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://www.google.com/search?q='.$query.''); #curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($curl, CURLOPT_USERAGENT,random_user_agent()); $str = curl_exec($curl); curl_close($curl); $html= str_get_html($str); $i = 0; foreach($html->find('li[class=g]') as $element) { foreach($element->find('h3') as $item) { $title[$i] = ''.$item->plaintext.'' ; } $i++; } print_r($title);
Когда этот скрипт работает в cronjob (с 5-секундным сном), я получаю предупреждение от Google и должен заполнять капчу (очевидно). Я всегда думал, что использование завитка и случайного агента пользователя может избежать этого. Какое правильное решение?
Лучший способ избежать капчей – установить рандомизированный сон между 3-6 секундами на запрос.
Лучшим решением является использование прокси.