Logo

Блокировка нежелательных роботов

Роботы бывают разные есть полезные типа yandex или googlebot которые помогают поднять посещаемость сайта, но бывают и вредные которые сильно нагружают сервер или пытаются навредить. После того как вредные работы были найдены в логах нужно как то ограничить их деятельность. Самое простое это добавить пару правил для apache в файлике .htaccess

Если вы используете модуль mod_rewrite то правила выглядят так:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Purebot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^DotBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Ezooms [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Robot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ichiro [NC,OR}
RewriteCond %{HTTP_USER_AGENT} ^VoilaBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Rankur [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^DLE_Spider [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^cmsworldmap [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^libwww-perl [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SurveyBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^RadioClicker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Embedly [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^TweetmemeBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^discobot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Admin search system: bezonanet@mail.ru [OR]
RewriteCond %{HTTP_USER_AGENT} ^AhrefsBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SearchBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^kmbot
RewriteRule ^(.*)$ — [F,L]

Перечисляем всех роботов которых хотим заблокировать и в последней строчке запрещаем им доступ.

Тем кому больше нравиться модуль mod_setenvif правила для .htaccess выглядят так:

<IfModule mod_setenvif.c>
SetEnvIf User-agent ^-?$ bad
SetEnvIfNoCase User-Agent Snake Bot bad
SetEnvIfNoCase User-Agent DLE_Spider bad
SetEnvIfNoCase User-Agent cmsworldmap bad
SetEnvIfNoCase User-Agent SurveyBot bad
SetEnvIfNoCase User-Agent Purebot bad
SetEnvIfNoCase User-Agent DotBot bad
SetEnvIfNoCase User-Agent Robot bad
SetEnvIfNoCase User-Agent Apache-HttpClient bad
SetEnvIfNoCase User-Agent gigabot bad
SetEnvIfNoCase User-Agent discobot bad
SetEnvIfNoCase User-Agent Nutch bad
SetEnvIfNoCase User-Agent HuaweiSymantecSpider bad
SetEnvIfNoCase User-Agent GarlikCrawler bad
SetEnvIfNoCase User-Agent SearchBot bad
SetEnvIfNoCase User-Agent Ezooms bad
SetEnvIfNoCase User-Agent ichiro bad
SetEnvIfNoCase User-Agent VoilaBot bad
SetEnvIfNoCase User-Agent Rankur bad
SetEnvIfNoCase User-Agent RadioClicker bad
SetEnvIfNoCase User-Agent Embedly bad
SetEnvIfNoCase User-Agent TweetmemeBot bad
SetEnvIfNoCase User-Agent discobot bad
SetEnvIfNoCase User-Agent Admin search system: bezonanet@mail.ru bad
SetEnvIfNoCase User-Agent AhrefsBot bad
SetEnvIfNoCase User-Agent kmbot bad
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad
</Limit>
</IfModule>

Первое правило чтобы заблокировать доступ всем у кого пустое поле User-Agent. Дальше идет список роботов и в конце правила блокировки.

Для порядочных роботов желательно в файлик robots.txt добавить директиву Crawl-delay:

User-agent: *
Disallow: /search
Crawl-delay: 5

Это говорит роботу что он должен делать пяти секундную паузу после загрузки каждой страницы.

Пример кода со списком роботов взят здесь:

http://serveradministrator.ru/howto/blocking-bad-robots/

Рекомендации по использованию Crawl-delay:

http://help.yandex.ru/webmaster/?id=1022359

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

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