Сохранение статистики внешних входящих ссылок из Яндекс.Вебмастер

Решил ради интереса посмотреть статистику изменения количества входящих внешних ссылок (и ссылаюшихся сайтов) через Я.Вебмастер — и с удивлением не обнаружил в нем такой возможности. Может быть «Выгрузка внешних ссылок в виде архива» — то, что мне нужно, но формирования архива придется ждать неделю и только потом можно будет узнать, что же в нем.

Запрос через Яндекс-поиск с ключом link (вида http://yandex.ru/yandsearch?text=link%3D%22dimio.org%2F*%22&lr=2) выдает сильно отличающийся от вывода Я.Вебмастер результат. Интернеты вообще сообщают, что ключ link не поддерживается Яндексом уже несколько лет.

Оставалось только одно — забирать интересующую информацию прямо со страницы из Вебмастера. Сделал небольшой скрипт на perl, который и решает поставленную задачу. Скрипт целиком доступен на отдельной странице, в заметке остановлюсь подробнее только на паре моментов.

Итак, первое, что нужно сделать для получения информации от сервиса Яндекс.Вебмастер (помимо того, что зарегистрироваться в самом сервисе и добавить в него нужные сайты конечно) — это авторизоваться в службах Яндекса. В интернете нашел несколько примеров для php, снабженных домыслами разной степени достоверности о значениях скрытых полей формы авторизации. Моя функция для входа в Яндекс выглядит так (неочевидные значения полей прокомментированы):

sub ya_login {
my ($ua, $opt) = @_;

my $response = $ua->post( $opt->{ya_login_url},
[
'from' => 'passport',
'idkey' => ya_get_idkey($ua, $options),
'display' => 'page',
'login' => $opt->{ya_login},
'passwd' => $opt->{ya_pass},
'timestamp' => time * 1000,
]);
die "$response->status_line\n" unless $response->is_success;
}

Вызывают интерес поля timestamp и idkey. Первое представляет собой просто число миллисекунд, прошедших от «начала эпохи Unix«. Соответственно результат вызова функции time (число в секундах) нужно перевести в миллисекунды. Второе поле — idkey — генерируется при заходе на какую-либо страницу Яндекса. И самое простое — получить его значение из кода страницы следующим образом:

sub ya_get_idkey {
my ($ua, $opt) = @_;

my $response = $ua->get( $opt->{ya_login_url} );
die "$response->status_line\n" unless $response->is_success;
#my $idkey = $1 if
my @idkey = $response->decoded_content =~
m{ name="idkey" \s value="([\d\w]{22})" \s /> }msx;

return $idkey[0];
#return $idkey;
}

Остальные поля формы авторизации вопросов вызывать не должны — логин и пароль от Яндекса указываются внутри скрипта как значения ya_login и ya_pass.

Сайты, для которых нужно сохранять значения внешних входящих ссылок, перечисляются в $hosts:

my $hosts = {
'dimio.org' => '0000001',
'dimio-blog.lj' => '0000002',
};

Названия указываются произвольные (они будут присвоены именам файлов, хранящих статистику, так что не стоит использовать неподдерживаемые оболочкой символы), цифры — копируются из панели Я.Вебмастер (id сайтов). В savedir указывается путь до каталога, в котором будут созданы файлы со статистикой.

Я добавил вызов скрипт в расписание cron несколько раз в сутки (поскольку значения числа входящих внешних ссылок и ссылающихся сайтов имеют свойство колебаться от запроса к запросу). Результаты можно обработать в электронных таблицах типа Calc или Excell либо каким-то скриптом с построением графика по среднесуточным значениям через gnuplot например.

8 мыслей о “Сохранение статистики внешних входящих ссылок из Яндекс.Вебмастер”

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

    1. Там же есть, в вебмастере. Да и куча программ это делать умеет, парся выдачу поиска по запросу конкретного адреса сайта.

      1. Где? Всё облазил…
        Или, речь идёт о ручном «листании» 10 000 страниц навигации, чтобы увидеть список? 🙁

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *