Отслеживание прихода бота на сайт

Как-то я решил написать код и отслеживать, какие боты, когда и на какую страницу моего сайта… Вот что получилось…


Если у вас есть более оптимальный метод, то напишите его, я отредактирую статью и допишу ваш способ (если он будет лучше).

Мне нужно быть отследить, какие боты и как часто заходят и прочее…

Вот код, который я использую.

if (strstr($_SERVER['HTTP_USER_AGENT'], 'Butterfly')){ $bot='Butterfly';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot-Image')){$bot='Google-Image';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')){$bot='Google';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Windows NT 6.1; rv:6.0')){$bot='Google +1';}


else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Sitemaps Generator')){$bot='Sitemaps Generator';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'UnwindFetchor')){$bot='Unwind Fetchor';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'JS-Kit URL Resolver')){$bot='JS-Kit URL Resolver';}

else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexMirrorDetector')){$bot='Yandex MirrorDetector';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexImages')){$bot='Yandex Images';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexVideo')){$bot='Yandex Video';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexMedia')){$bot='Yandex Media';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexBlogs')){$bot='Yandex Blogs';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexAddurl')){$bot='Yandex Addurl';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexMetrika')){$bot='Yandex Metrika';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexCatalog')){$bot='Yandex Catalog';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexNews')){$bot='Yandex News';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexImageResizer')){$bot='Yandex ImageResizer';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Yandex')){$bot='Yandex';}



else if (strstr($_SERVER['HTTP_USER_AGENT'], 'MetaURI')){$bot='MetaURI';}

else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Crowsnest')){$bot='Crowsnest (Twitter)';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'TweetmemeBot')){$bot='Tweetmeme Bot';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Twitterbot')){$bot='Twitter bot';}

else if (strstr($_SERVER['HTTP_USER_AGENT'], 'facebook')){$bot='Facebook External Hit';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'StackRambler')){$bot='Rambler';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'MRSPUTNIK')){$bot='Спутник Mail.ru';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mail.RU')){$bot='Mail.RU';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'MailRuConnect')){$bot='MailRu Connect';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mediapartners-Google')){$bot='Google Adsense';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Slurp')){$bot='Hot Bot search';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'WebCrawler')){$bot='WebCrawler search';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'ZyBorg')){$bot='Wisenut search';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'scooter')){$bot='AltaVista';}  
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Aport')){$bot='Aport';}  
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'lycos')){$bot='Lycos';}  
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'WebAlta')){$bot='WebAlta';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'yahoo')){$bot='Yahoo';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'msnbot')){$bot='msnbot';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'ia_archiver')){$bot='Alexa search engine';}
else if (strstr($_SERVER['HTTP_USER_AGENT'], 'FAST')){$bot='AllTheWeb';}


if(isset($bot))
{
…
}

Я конечно понимаю, что каждый раз происходит много проверок, но зато работает.
Список я составлял самостоятельно.

Сначала я просто записывал всех кто приходил на сайт. Потом нажимал всякие лайки, поделиться и прочее и отслеживал, кто приходил на сайт после различных моих действий.

Вот такой вот список и получился.

Народ! Если можете придумать что-то более действующее, то есть, чтобы не было много проверок и код выполнялся намного быстрее, то просьба написать тут))

Ваш более оптимальный вариант я прикреплю к статье.

6 комментариев

avatar
  • ABC
Зачем вы 39 раз написали
else if (strstr($_SERVER['HTTP_USER_AGENT'],
???

Почему нельзя было сделать:
$ref=$_SERVER['HTTP_USER_AGENT'];
$bot=array('facebook','google','yandex');
foreach($bot as $val)
{
    if(stristr($ref,$val))
    {
         echo $val;
         break;
    }
}
avatar
  • frops
А какие преимущество нам дает то, что мы узнаем какой бот к нам зашел? Спасибо.
avatar
Лично мне — анализ. Как часто ко мне заходят боты. Что смотрят. Какие боты. Как это отображается на переиндексации и.т.п.)
avatar
Ясно. А как сильно при этом страдает производительность сайта?
avatar
Если просто писать в БД каждого кто заходит а потом анализировать по крону, то незначительно.
avatar
А как вы определяете, как отразилось на переиндексации, после того как к вам зашёл определённый бот?