<?xml version="1.0" encoding="utf-8"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
<description>
<title-info>
<genre>sf_history</genre>
<author><first-name>Имя автора</first-name><last-name>Фамилия автора</last-name></author>
<book-title>PHP: Определяем тИЦ и PR</book-title>
<date>Дата</date>
<lang>ru</lang>
</title-info>
<document-info>
<author><nickname></nickname></author>
<program-used>Lib converter jcms</program-used>
<id></id>
<version>1.0</version>
</document-info>
</description>
<body><title><p>PHP: Определяем тИЦ и PR</p></title>
<section><p>Как быстро и просто на PHP определить Индекс Цитирования и PageRank?</p>
<p>Давайте подумаем: и у Яндекса и у Гугла есть свои тулбары для браузеров, на которых показывается ИЦ (на Яндекс.Баре) и PR (на Google Toolbar). То есть оба бара откуда-то эти данные берут.</p>
<p>Посидев три минуты с анализатором запросов стало понятно, что Яндекс берёт данные по адресу: http://bar-navig.yandex.ru/u?ver=2&amp;url=[URL страницы]&amp;show=1&amp;post=1, причём в URL можно спокойно подставлять что угодно и всё будет нормально.</p>
<p>Проблемы оказались с Гуглом. Его адрес выглядит так: http://www.google.com/search?c ... &amp;ch=6[Контрольная сумма]&amp;features=Rank&amp;q=info:[URL страницы]. Проблема в том, что для каждого URL своя контрольная сумма, если её рассчитать неправильно или вообще убрать, то метод не сработает.</p>
<p>Впрочем, это тоже не стало большой проблемой.</p>
<p>После написания первого варианта статьи я сделал бесплатный веб-сервис определения индекса цитирования и PageRank, сервис этот расположен по адресу: http://cy-pr.net.ru. Сервис позволяет отправить запрос методом GET или POST и возвращает ответ в текстовом или в XML формате.</p>
<p>Всё, что нам остаётся сделать — это отправить запрос серверу cy-pr.net.ru и получить от него ответ в текстовом формате (чтобы было проще обработать).</p>
<p>&lt;?php</p>
<p>/*</p>
<p>Скрипт определения тИЦ и PR при помощи сервиса</p>
<p>http://cy-pr.net.ru</p>
<p>Авторские права ©2006 — Неверов Евгений.</p>
<p>Все права защищены.</p>
<p>Пример использования:</p>
<p>$r=detectCyPr('www.yandex.ru');</p>
<p>print_r($r);</p>
<p>*/</p>
<p>function detectCyPr($url) {</p>
<p>//</p>
<p>// $url — адрес веб-сайта, для которого нужно определить тИЦ и PR</p>
<p>//</p>
<p>// Функция возвращает ассоциативный массив со структурой:</p>
<p>// Array</p>
<p>// (</p>
<p>//     [cy] =&gt; Индекс цитирования</p>
<p>//     [pr] =&gt; PageRank</p>
<p>// )</p>
<p>//</p>
<p>$rn="</p>
<p>";</p>
<p>$http_query='GET /get?url=' . $url . '&amp;type=text HTTP/1.0' . $rn .</p>
<p>'Content-Type: application/x-www-form-urlencoded' . $rn .</p>
<p>'Host: cy-pr.net.ru' . $rn .</p>
<p>'Accept: */*' . $rn .</p>
<p>'Connection: Keep-Alive' . $rn .</p>
<p>'User-Agent: CyPrChecked (http://cy-pr.net.ru)' . $rn . $rn;</p>
<p>$f=fsockopen('cy-pr.net.ru', 80);</p>
<p>if (!$f) {</p>
<p>return FALSE;</p>
<p>} else {</p>
<p>@fwrite($f, $http_query);</p>
<p>$data='';</p>
<p>while(!@feof($f))</p>
<p>$data.=fread($f, 1024*1024);</p>
<p>@fclose($f);</p>
<p>preg_match('#CY=([0-9]+);#i', $data, $t);</p>
<p>$ret['cy']=$t[1];</p>
<p>preg_match('#PR=([0-9]+);#i', $data, $t);</p>
<p>$ret['pr']=$t[1];</p>
<p>return $ret;</p>
<p>}</p>
<p>}</p>
<p>?&gt;</p>
<p>Если же Ваш сервер поддерживает модуль cURL, то код значительно упрощается:</p>
<p>&lt;?php</p>
<p>/*</p>
<p>Скрипт определения тИЦ и PR при помощи сервиса</p>
<p>http://cy-pr.net.ru</p>
<p>Авторские права ©2006 — Неверов Евгений.</p>
<p>Все права защищены.</p>
<p>Пример использования:</p>
<p>$r=detectCyPr('www.yandex.ru');</p>
<p>print_r($r);</p>
<p>*/</p>
<p>function detectCyPr($url) {</p>
<p>//</p>
<p>// $url — адрес веб-сайта, для которого нужно определить тИЦ и PR</p>
<p>//</p>
<p>// Функция возвращает ассоциативный массив со структурой:</p>
<p>// Array</p>
<p>// (</p>
<p>//     [cy] =&gt; Индекс цитирования</p>
<p>//     [pr] =&gt; PageRank</p>
<p>// )</p>
<p>//</p>
<p>$ch=curl_init('http://cy-pr.net.ru/get.php?url=' . $url . '&amp;type=text');</p>
<p>curl_setopt($ch, CURLOPT_HEADER, 0);</p>
<p>curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);</p>
<empty-line/>
<p>$data=curl_exec($ch);</p>
<p>curl_close($ch);</p>
<p>preg_match('#CY=([0-9]+);#i', $data, $t);</p>
<p>$ret['cy']=@$t[1];</p>
<p>preg_match('#PR=([0-9]+);#i', $data, $t);</p>
<p>$ret['pr']=@$t[1];</p>
<p>return $ret;</p>
<p>}</p>
<p>?&gt;</p>
<p>Для вызова используется команда:</p>
<p>$r = detectCyPr('http://www.yandex.ru');</p>
<p>// естественно, вместо атрибута подставьте свой адрес</p>
<p>echo 'ИЦ: ' . $r['cy'] . ', PR: ' . $r['pr'];</p>
<p>// в $r['cy'] содержится ИЦ, а в $r['pr'] — PR.</p>
<p>Вот так. В общем-то всё легко и просто, пользуйтесь на здоровье.</p>
</section>
</body>
</FictionBook>