Плагин «Позиции в Яндексе»
Пора наполнять полезные утилиты новыми плагинами. Это мой первый плагин который добавлен в рубрику «Seo», надеюсь что не последний.

Пользоваться плагином определения позиций в яндексе можно уже сейчас. Вот как он работает:
- Вводите поисковую фразу, например «рыбалка»
- Вбиваете хостнейм, позицию которого нужно найти, например «rybalka.tv»

Мой определитель позиций отправляет максимум 2 XML запроса на сервер яндекса, в каждом ответе ожидается по 100 ссылок (кстати странно что в документации говорится о возвращаемом максимуме в 20 ссылок), поэтому если ваш сайт находится дальше двухсотой позиции, то плагин уведомит об этом.
Разработчикам:
Работает этот плагин на основе сервиса Яндекс.XML. К сожалению есть ограничения которые установил сам яша. Это количество запросов в сутки. На данный момент их должно быть не более 1000 в сутки.
Если захочется установить определитель позиций на свой сайт, придется сделать следующие действия:
- Авторизуйтесь (ссылка «Войти» вверху страницы). Если у вас нет логина и пароля на Яндексе — зарегистрируйтесь.
- Введите свой IP-адрес. Здесь я остановлюсь подробнее. Яндекс.XML просит ввести и зарегистрировать IP адрес с которого будут делаться запросы на их XML сервер.

Поэтому вводим IP адрес на этой странице. Только после этого можно делать запросы.
Исходники:
В примерах на Яндекс.XML есть исходные коды подобной утилиты для определения позиций для языков php и perl. Посмотрите здесь — http://xml.yandex.ru/examples.xml?id=372989. Ее я взял за основу для моего плагина. Внес несколько изменений, и получилась полезная утилита.
Итак исходник моего плагина:
<?php
function get_title(){
echo 'Определение позиций сайта в Яндексе —';
}
function get_content(){
if( isset($_POST["send"]) && isset($_POST["key"]) && isset($_POST["hostname"]) ){
$key = htmlspecialchars($_POST["key"]);
$hostname = htmlspecialchars($_POST["hostname"]);
$host = preg_replace("[^http://|www\.]",'',$_POST["hostname"]);
$page = $found = 0;
$pages = 2;
$error = false;
$exit = $_SERVER["REQUEST_METHOD"] != 'POST';
// мы должны получить место сервера в выдаче по некому запросу.
// делаем запрос по десять ссылок на страницу и запрашиваем 50
// страниц. при нахождении сервера останавливаемся и выдаем его
// место в выдаче
while (!$exit && $page < $pages && $host){
// XML запрос
$xml_code = "<?xml version='1.0' encoding='utf-8'?>" .
"<request>" .
"<query>$key</query>" .
"<page>$page</page>" .
"<maxpassages>0</maxpassages>" .
"<groupings>" .
"<groupby attr='d' mode='deep' groups-on-page='100' docs-in-group='1' curcateg='-1'/>" .
"</groupings>" .
"</request>";
$context = stream_context_create(
array(
'http' => array(
'method'=>"POST",
'header'=>"Content-type: application/xml\r\n" .
"Content-length: " . strlen($xml_code),
'content'=>$xml_code
)
)
);
if( $response = file_get_contents('http://xmlsearch.yandex.ru/xmlsearch',true,$context) ){
$xmldoc = new SimpleXMLElement($response);
$xmlresponce = $xmldoc->response;
if ($xmlresponce->error) {
echo "Возникла следующая ошибка: " . $xmlresponce->error . "<br/>\n";
$exit = 1;
$error = true;
break;
}
$pos = 1;
$nodes = $xmldoc->xpath('/yandexsearch/response/results/grouping/group/doc/url');
foreach ($nodes as $node) {
$found++;
// если URL начинается с имени хоста, выходим из цикла
if ( preg_match("/^http:\/\/(www\.)?$host/i", $node) ) {
$exit = 1;
break;
}
$pos++;
}
$page++;
}else{
echo "внутренняя ошибка сервера\n";
$exit = 1;
}
}
if( !$error ) {
if( $found < 200 ) {
echo "<table align=\"center\" id=\"info\"><tr><td><h1>«" . $host . "»</h1></td><td><h3>находится на месте</h3></td><td><h1 style=\"color: blue;\">№" . $found . "</h1></td><td><h3>по запросу</h3></td><td><h1>«$key»</h1></td></tr></table>";
}
else{
echo "<center>На первых 20 страницах этого сайта нет.</center>";
}
}
}
?>
<br /><br />
<form method="post">
<table cellpadding="4" style="font-size: 18px;" align="center">
<tr>
<td>Ключевое слово:</td><td><input type="text" name="key" /></td>
</tr>
<tr>
<td>Хостнейм:</td><td><input type="text" name="hostname" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="send" value="Узнать позицию!" /></td>
</tr>
</table>
</form>
<?php
}
?>
Постовой:
Рыбалка — разговоры о рыбалке. Секреты рыбной ловли, место встречи рыбаков
http://www.samborsky.com/yandex-positions/


Полезная штука!
Спасибо!