23 ноября 2016      69      0

Управление PHP процессами

Поиск Google предоставляет пользователю возможность самостоятельно настроить поисковую выдачу под свои нужды. Например, количество результатов поиска, отображаемых на одной странице.

По умолчанию выводятся по 10 результатов на странице, но это поведение поискового движка можно изменить.

Для этого нужно кликнуть по шестеренке в правом верхнем углу экрана и выбрать пункт «Настройка поиска».

Управление PHP процессами

Форма настроек содержит несколько полей, в том числе скрытых. Одним из таких «невидимых» параметров является уже знакомый нам sig (ранее встречался при написании скрипта загрузки скриншотов). Он выставляется при открытии формы и затем используется при формировании cookie.

Внимательно изучив параметры формы настроек, мной был написан автоматический вариант получения «нужных» cookies.

function http_request($url) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_HEADER, FALSE);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7');
	curl_setopt($ch, CURLOPT_URL, $url);

	curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
	curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');

	$response = curl_exec($ch);
	$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);

	return array(
		'code' => $code,
		'body' => $response,
	);
}

$response = http_request('http://www.google.com/preferences?hl=en');

$num_of_results = 30;

$dom = new DOMDocument;
@$dom->loadHTML($response['body']);
$xpath = new DOMXPath($dom);

$sig_element = $xpath->query('//input[@name="sig"]');
$sig = $sig_element->length == 1 ? $sig_element->item(0)->getAttribute('value') : '';

unset($response, $dom, $xpath);

$url2 = 'http://www.google.com/setprefs?hl=en&lr=lang_en&safeui=off&suggon=2&newwindow=0&submit2=Save+Preferences&num='.$num_of_results.'&sig='.$sig;
//debug($url2);
$response = http_request($url2);

Таким образом, обновленные параметры поиска сохраняются в файл cookies.txt. При последующем обращении к поиску, на одной странице будут отображаться 30 результатов.

Все темы на сайте

© 2017 BorPost · Копирование материалов сайта без разрешения запрещено