Как снизить нагрузку на сайт от поисковых и вредоносных ботов

В начале июля Google анонсировал запуск нескольких миллионов Googlebot Smartphone и предупредил владельцев сайтов об увеличении объемов ботового трафика. Кроме того, на просторах интернета бродит много ботов, которые могут пытаться индексировать или что-то искать на вашем сайте, тем самым увеличивая нагрузку и “обваливая” сайт. А недоступность сайта в свою очередь — это потеря трафика и денег.

Поисковые боты

Снижать нагрузку от поисковых ботов будем через файл robots.txt.

Нам необходимо настроить задержку индексирования, т.е. разрешить поисковым ботам Baidu, Bing, Mail, Яндекс и т.д. обращаться к сайту только через определенные временные интервалы. Для этого создадим файл robots.txt в корневой директории сайта с таким содержимым:

User-agent: *
Crawl-delay: 5
Как снизить нагрузку на сайт от поисковых и вредоносных ботов, image #1

Файл должен находиться в корневой директории сайта:

Как снизить нагрузку на сайт от поисковых и вредоносных ботов, image #2

Готово! Мы выставили интервал для поисковых ботов в 5 секунд, т.е. только раз в 5 секунд боты смогут проиндексировать сайт.

Тем не менее, это не панацея, т.к. некоторые боты (например Google) игнорируют директиву Crawl-delay. Для Google задержку можно настроить в webmaster tools (подробнее — https://webmasters.stackexchange.com/a/56773) . К слову, подобные настройки для вебмастеров есть у многих поисковых систем.

Вредоносные боты: запрет на уровне конфигурации сервера

Теперь поговорим про ситуацию, когда сайт упал из-за большого количества трафика и боты крупных поисковых систем здесь ни при чем.

Для начала нужно выяснить, действительно ли это были боты. Для этого нужно проверить логи сервера, на котором расположен сайт. Проверять нужно, есть ли запросы с одним и тем же user agent. Например, уже больше десяти лет в сети бродит известный многим сисадминам MauiBot. Его можно блокировать без колебаний. В этот же список попадают MJ12bot, SEMrushBot, AhrefsBot. По запросу “blocking bad bots” можно найти списки с тысячами таких ботов.

Блокировка в данном случае будет происходить через файл конфигурации nginx. Для примера заблокируем вышеуказанных ботов. Предполагаем, что на вашем сервере уже установлен Keitaro при помощи нашего установочного скрипта https://keitaro.io/install.sh. В файл конфигурации nginx /etc/nginx/conf.d/vhosts.conf:

Как снизить нагрузку на сайт от поисковых и вредоносных ботов, image #3

в секцию server нужно добавить строки:

if ($http_user_agent ~* (MauiBot|MJ12bot|SEMrushBot|AhrefsBot)){

    return 403;

}

Если на сервер устанавливались SSL сертификаты, то изменения нужно вносить в файлы конфигураций каждого из доменов (для домена domain.com нужно изменять файл /etc/nginx/conf.d/domain.com.conf).

Добавить нужные строки во все файлы конфигурации можно одной командой:

find /etc/nginx/conf.d/ -type f | \
  xargs sed -i '/^server {/a if ($http_user_agent ~* (MauiBot|MJ12bot|SEMrushBot|AhrefsBot)) { return 403; }'
Как снизить нагрузку на сайт от поисковых и вредоносных ботов, image #4

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

systemctl reload nginx

Проверить, что всё сделано правильно можно выполнив команду:

curl http://localhost -H 'User-Agent: MauiBot' -I

В случае, если всё настроено правильно, вы увидите в ответе:

HTTP/1.1 403 Forbidden
Как снизить нагрузку на сайт от поисковых и вредоносных ботов, image #5

При такой блокировке боты не попадут ни на сайт, ни в трекер, и соответственно Keitaro их не учтет в статистике.

Дополнительная информация

База Знаний Keitaro
Установка Keitaro
Канал Keitaro на YouTube

494 views·3 shares