Здравствуйте, дамы и господа, в этой статье расскажу о том, как заблокировать Amazonbot на своём сайте. Очень уж раздражающий робот, который даёт нагрузку, сравнимую с небольшой DDOS-атакой.

Так что давайте заблокируем ему доступ к сайту, дабы Amazonbot не приводил к проблемам с сайтом.

Amazonbot — вредный бот, который нужно блокировать

Если желаете сразу перейти к инструкции, то пролистайте до следующего заголовка.

В один прекрасный день я зашёл на хостинг и увидел нагрузку, которая выбивается за все разумные пределы.

Повышенная из-за Amazonbot нагрузка на сервер
С утра уже было исчерпано больше половины выделенного мне процессорного времени

Исходные данные: хостинг Бегет, доступно 300 CP, сразу оговорюсь, что на простом хостинге доступно только 65 CP, так что данная нагрузка вполне могла привести какой-нибудь небольшой сайт к блокировке на уровне хостинга. Хостинги не любят превышение нагрузки, потому при систематическом превышении нагрузки блокируют услугу.

И я стал разбираться в проблеме. Первым делом начал подозревать попытку взлома, но логи показали иную картину.

Логи с действиями Amazonbot
Мой сайт упорно сканировал Amazonbot

Робот сканировал все страницы, даже если они уже были просканированы, то делал это по второму кругу. Из-за чего нагрузка на сервер была слишком высокой.

Сначала я решил узнать, что это за бот, оказалось, что Amazonbot — краулер сервиса Amazon Alexa. Может быть, Alexa — полезный сервис, который может выступать голосовым помощником, воспроизводит подкасты, способен читать голосом веб-сайты. Но я решил, что это не стоит избыточной нагрузки на сайт.

Первым делом я перешёл на страницу бота: https://developer.amazon.com/support/amazonbot. Там было указано, что краулер уважает директивы, вписанные в robots.txt, потому я сразу внёс туда директивы:

User-Agent: Amazonbot
Disallow: /

Это не помогло, бот продолжал долбиться в сайт, потому я заблокировал его на уровне сервера через файл .htaccess. И это помогло. Конечно, бот продолжает уже несколько дней попасть на сайт, но всегда получает ответ сервера 403.

Логи с действиями Amazonbot

Проверка обратным запросом DNS показала, что это реально Amazonbot, ведь ответ на запрос идёт с серверов Amazon.

Обратный DNS-запрос для идентификации Amazonbot

После блокировки нагрузка снизилась, но Amazonbot продолжает пытаться попасть на сайт, даже постоянные ответы сервера 403 его не смущают.

Логи с действиями Amazonbot

А теперь расскажу о том, как заблокировать доступ Amazonbot к сайту.

Блокировка Amazonbot: пошаговая инструкция

Итак, пусть на странице Amazonbot утверждается, что он следует директивам из файла robots.txt, но мне директива Disallow не помогла. Бот продолжал создавать колоссальную нагрузку на сервер.

CloudFlare также не помогает против Amazonbot, так как не считает его вредным ботом. Соответственно, бот будет спокойно продолжать гулять по сайту. Плагины против ботов также не сработали, так как они реагируют только на специфичное поведение ботов, так что я нашёл только один способ заблокировать Amazonbot.

Я запретил для Amazonbot посещение сайта на уровне сервера через файл .htaccess. Сделать это можно с помощью такого кода:

SetEnvIfNoCase User-Agent "Amazonbot" blocked_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=blocked_bot
</Limit>

Этот код не позволит Amazonbot посетить сайт, при каждом входе Amazonbot будет получать ответ сервера 403 (Доступ запрещён).

403 Forbidden для Amazonbot

Конечно, это не уберёт нагрузку на сервер полностью, но выданная боту практически пустая страница, заметно сокращает нагрузку.

Это решение наиболее адекватное, по крайней мере, лучше, чем не делать ничего. Конечно, можно блокировать отдельные IP-адреса Amazonbot, но так как он идентифицирует себя, то это лишнее. Проще блокировать предложенным выше образом.

Также рекомендую прочитать статьи о блокировке ботов и краулеров, а также список вредных и полезных ботов. Там вы узнаете больше про ботов, которые следует заблокировать. А также про тех, которых блокировать не следует.

Если у вас хостинг на базе веб-сервера nginx, то могут возникнуть сложности, так как пользователи хостинга не могут получать доступ к конфигурации nginx. Но если у вас VDS или VPS, то проблем нет.

В папке /etc/nginx вам нужно создать файл. Например, badbot.conf. Назвать можете как угодно, главное, чтобы название было уникальным, а также сами не забыли, как он называется.

Теперь в этот файл добавьте строку:

if ($http_user_agent ~* "Amazonbot"){ return 403; }

Таким образом, всем ботам с user_agent “Amazonbot” мы будем возвращать ответ сервера 403.

Следующим шагом нужно добавить в блок server директиву:

include /etc/nginx/badbot.conf;

После перезапустите nginx командой:

service nginx restart

или

service nginx reload

Команды выполняются от root, не забывайте этого.

Готово. Если у вас хостинг, тогда придётся писать в поддержку хостинга, чтобы они это сделали за вас.

Блокировка Amazonbot — лёгкая задача

Сложности могут возникнуть только в том случае, если у вас хостинг на базе nginx, там процесс несколько сложнее. Но если у вас VPS или VDS, то ничего сложного нет.

Теперь вы знаете, как можно заблокировать Amazonbot на своём сайте, на этом с вами прощаюсь и желаю успехов. Всего доброго!

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 4.4 / 5. Количество оценок: 7

Оценок пока нет. Поставьте оценку первым.

Если материалы с данного сайта были полезны, и вы желаете поддержать блог, то можете воспользоваться формой по ссылке: Донат на поддержку блога