PHP: Определяем тИЦ и PR

Как быстро и просто на PHP определить Индекс Цитирования и PageRank?

Давайте подумаем: и у Яндекса и у Гугла есть свои тулбары для браузеров, на которых показывается ИЦ (на Яндекс.Баре) и PR (на Google Toolbar). То есть оба бара откуда-то эти данные берут.

Посидев три минуты с анализатором запросов стало понятно, что Яндекс берёт данные по адресу: http://bar-navig.yandex.ru/u?ver=2&url=[URL страницы]&show=1&post=1, причём в URL можно спокойно подставлять что угодно и всё будет нормально.

Проблемы оказались с Гуглом. Его адрес выглядит так: http://www.google.com/search?c ... &ch=6[Контрольная сумма]&features=Rank&q=info:[URL страницы]. Проблема в том, что для каждого URL своя контрольная сумма, если её рассчитать неправильно или вообще убрать, то метод не сработает.

Впрочем, это тоже не стало большой проблемой.

После написания первого варианта статьи я сделал бесплатный веб-сервис определения индекса цитирования и PageRank, сервис этот расположен по адресу: http://cy-pr.net.ru. Сервис позволяет отправить запрос методом GET или POST и возвращает ответ в текстовом или в XML формате.

Всё, что нам остаётся сделать — это отправить запрос серверу cy-pr.net.ru и получить от него ответ в текстовом формате (чтобы было проще обработать).

<?php
/*

Скрипт определения тИЦ и PR при помощи сервиса
http://cy-pr.net.ru

Авторские права ©2006 — Неверов Евгений.
Все права защищены.

Пример использования:
$r=detectCyPr('www.yandex.ru');
print_r($r);

*/

function detectCyPr($url) {
//
// $url — адрес веб-сайта, для которого нужно определить тИЦ и PR
//
// Функция возвращает ассоциативный массив со структурой:
// Array
// (
// [cy] => Индекс цитирования
// [pr] => PageRank
// )
//

$rn="
";

$http_query='GET /get?url=' . $url . '&type=text HTTP/1.0' . $rn .
'Content-Type: application/x-www-form-urlencoded' . $rn .
'Host: cy-pr.net.ru' . $rn .
'Accept: */*' . $rn .
'Connection: Keep-Alive' . $rn .
'User-Agent: CyPrChecked (http://cy-pr.net.ru)' . $rn . $rn;

$f=fsockopen('cy-pr.net.ru', 80);
if (!$f) {
return FALSE;
} else {
@fwrite($f, $http_query);

$data='';
while(!@feof($f))
$data.=fread($f, 1024*1024);

@fclose($f);

preg_match('#CY=([0-9]+);#i', $data, $t);
$ret['cy']=$t[1];
preg_match('#PR=([0-9]+);#i', $data, $t);
$ret['pr']=$t[1];

return $ret;
}
}
?>

Если же Ваш сервер поддерживает модуль cURL, то код значительно упрощается:
<?php
/*

Скрипт определения тИЦ и PR при помощи сервиса
http://cy-pr.net.ru

Авторские права ©2006 — Неверов Евгений.
Все права защищены.

Пример использования:
$r=detectCyPr('www.yandex.ru');
print_r($r);

*/

function detectCyPr($url) {
//
// $url — адрес веб-сайта, для которого нужно определить тИЦ и PR
//
// Функция возвращает ассоциативный массив со структурой:
// Array
// (
// [cy] => Индекс цитирования
// [pr] => PageRank
// )
//

$ch=curl_init('http://cy-pr.net.ru/get.php?url=' . $url . '&type=text');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$data=curl_exec($ch);
curl_close($ch);

preg_match('#CY=([0-9]+);#i', $data, $t);
$ret['cy']=@$t[1];

preg_match('#PR=([0-9]+);#i', $data, $t);
$ret['pr']=@$t[1];

return $ret;
}
?>

Для вызова используется команда:

$r = detectCyPr('http://www.yandex.ru');
// естественно, вместо атрибута подставьте свой адрес

echo 'ИЦ: ' . $r['cy'] . ', PR: ' . $r['pr'];
// в $r['cy'] содержится ИЦ, а в $r['pr'] — PR.

Вот так. В общем-то всё легко и просто, пользуйтесь на здоровье.
Скачать файл txt fb2
Добавил: Сталислав (14 янв 2009 г., 11:59)
Рейтинг: (0)
Прочитано: 7669