Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Отображение последнего захода поискового бота на текущую страницу
Почитывая однажды сайт www.rukv.ru обнаружил в самом низу страницы интересную статистику, а именно время проверки страницы поисковыми ботами. Весьма полезно и удобно анализировать в таком наглядном виде статистику захода поисковых ботов.
Обозначив интерес в разговоре с fof и описав полезность и удобство такого подхода, буквально на следующий день я получил простенький и удобный скрипт, который просто подключается на всех страницах.
Теперь на многих моих сайтах в самом низу выводятся идентификаторы поисковых ботов и время их захода на страницу. Очень интересно наблюдать эти цифры на страницах блога, т.к. после пинга поисковые боты приходят довольно быстро и можно делать ставки какой придет раньше. Конечно на первом месте практически всегда оказывается googlebot, потом приходит Yandex, но в последнее время что-то он стал лениться.
Ниже представлен скрипт, который очень просто реализует такую статистику. К описанным идентификаторам ботов можно достаточно просто добавлять свои. Количество имен поисковых ботов ограничено только размером оперативной памяти. Можно еще более усложнить систему и сохранять не только время последнего захода, но и все заходы за время существования сайта (правда в таком случае лучше использовать MySQL). Информация сохраняется в одном файле, статистика отображается на каждой странице сайта (точнее на тех, в которые вы подключите этот скрипт).
$logfile = "botlog.txt";
if (!file_exists ( $logfile ) ) {
$log = array ( );
file_put_contents ( $logfile, serialize ( $log ) );
}
else $log = unserialize ( file_get_contents ( $logfile ) );
$uri = $_SERVER [ 'REQUEST_URI' ];
$remap_agents = array (
'googlebot' => 'Google',
'yahoo' => 'Yahoo',
'msnbot' => 'MSN',
'yandex' => 'Yandex',
'stackrambler' => 'Rambler',
'aport' => 'Aport'
);
$agent=@$_SERVER [ 'HTTP_USER_AGENT' ];
if ( preg_match('/(googlebot|yahoo|msnbot|yandex|stackrambler|aport)/i',
$agent, $match ) ) {
$match = strtolower ( $match [ 1 ] );
$agent = $remap_agents [ $match ];
$date = date ( "d.m-H:i", time ( ) );
$log[$uri][$agent] = $date;
file_put_contents ( $logfile, serialize ( $log ) );
}
printf ( "Google:%s Yahoo:%s Msn:%s Yandex:%s Rambler:%s Aport:%s",
@$log[$uri]['Google'],
@$log[$uri]['Yahoo'],
@$log[$uri]['MSN'],
@$log[$uri]['Yandex'],
@$log[$uri]['Rambler'],
@$log[$uri]['Aport']
);
printf ( "G:%s Y:%s M:%s Y:%s R:%s A:%s",
@$log[$uri]['Google'],
@$log[$uri]['Yahoo'],
@$log[$uri]['MSN'],
@$log[$uri]['Yandex'],
@$log[$uri]['Rambler'],
@$log[$uri]['Aport']
);
/*
function file_put_contents ( $n, $d )
{
$f = @fopen ( $n, "w" );
if ( !$f )
return false;
else
{
fwrite ( $f, $d );
fclose ( $f );
return true;
}
}
*/
Если вы используете PHP четвертой версии, а не пятой, то вам будет нужна функция file_put_contents, которая в данном примере закрыта комментариями, раскомментируйте ее.
Автор скрипта – Бедарев Егор.
.
Прокомментировать/Отблагодарить