Боты перегружают сайт: как их распознать и ограничить
ПечатьДалеко не все «посетители» сайта – люди. Значительная часть запросов приходит от программ: роботов поисковых систем (Googlebot, bingbot), SEO-сервисов (AhrefsBot, SemrushBot, MJ12bot), сборщиков текстов для искусственного интеллекта (GPTBot, ClaudeBot, CCBot, Bytespider) и скриптов, которые копируют контент. Пока их немного, это незаметно. Когда их становится много, они забирают процессор и память аккаунта, и сайт начинает тормозить для настоящих клиентов.
Признаки того, что дело в ботах
- Сайт замедляется в часы, когда живых посетителей мало, а в cPanel, в разделе Metrics, затем Resource Usage, видны пики нагрузки на процессор или сообщения о достижении лимитов.
- В журналах доступа (Metrics, затем Raw Access, или статистика Awstats) очень часто встречаются AhrefsBot, SemrushBot, PetalBot, Bytespider, GPTBot,
python-requestsилиcurl. - У интернет-магазинов: сотни и тысячи запросов к адресам с
?filter_,?orderby=,?min_price=или к очень дальним страницам списка вроде/page/37/. Человек никогда не перебирает столько комбинаций фильтров, а бот пробует их все.
Поэтому магазины и страдают сильнее всех: каждая комбинация фильтра и сортировки для бота – новая страница, которую должны собрать PHP и база данных.
Что уже блокирует сервер
Imunify360 и файрвол сервера автоматически отсекают часть вредного трафика, например адреса, которые за очень короткое время отправляют ненормально много запросов. Роботов поисковиков и SEO-сервисов на уровне сервера не блокируют, потому что многим клиентам они нужны. Ими Вы управляете сами с помощью мер ниже, от самой мягкой к самой жёсткой.
1. robots.txt: просьба, которую соблюдают добросовестные боты
Файл robots.txt лежит в корневой папке сайта (обычно public_html) и сообщает роботам, куда не заходить. Google, Bing и большинство SEO-сервисов его учитывают. Пример для магазина на WooCommerce, который можно адаптировать:
# Страницы без ценности для поиска: корзина, кабинет, фильтры, сортировка User-agent: * Disallow: /cart/ Disallow: /checkout/ Disallow: /my-account/ Disallow: /*?s= Disallow: /*?add-to-cart= Disallow: /*?orderby= Disallow: /*?filter_ Disallow: /*?min_price= Disallow: /*?max_price= # SEO-сервисы и ИИ-боты: доступ закрыт полностью User-agent: GPTBot User-agent: ClaudeBot User-agent: CCBot User-agent: Bytespider User-agent: AhrefsBot User-agent: SemrushBot User-agent: MJ12bot User-agent: DotBot User-agent: PetalBot Disallow: /
Первая группа позволяет поисковикам видеть товары и категории, но не тысячи комбинаций фильтров. Вторая полностью закрывает сайт для перечисленных SEO-сервисов и ИИ-ботов. Уберите из списка то, чем пользуетесь: если Вы работаете с Ahrefs или Semrush, оставьте доступ их роботу.
В Yoast SEO файл редактируется в разделе Yoast SEO, затем Tools, File editor; в Rank Math – в General Settings, затем Edit robots.txt. Не закрывайте /wp-content/, файлы CSS, JavaScript и изображения: Google нужны они, чтобы правильно понять страницу.
2. Кеш: визит бота почти ничего не стоит
Страница из кеша не запускает PHP и не обращается к базе данных, поэтому неважно, кто её запросил, человек или бот. На тарифах WordPress Hosting и Business Hosting, работающих на LiteSpeed, используйте плагин LiteSpeed Cache и настройте его по статье LiteSpeed Cache в WordPress: включение и безопасные настройки. Для магазинов важны две настройки:
- не исключайте из кеша страницы категорий, ведь именно туда приходит больше всего ботов;
- в разделе Cache плагина, в параметре Drop Query String, добавьте метки отслеживания (
utm_*,fbclid,gclid), чтобы каждая ссылка из рекламной кампании не считалась новой страницей.
На тарифах Web Hosting SSD, где работают Nginx и Apache, используйте плагин кеширования, совместимый с Apache; принцип тот же.
3. .htaccess: отказ ботам, которые игнорируют правила
Скрипты-копировщики и агрессивные боты robots.txt не читают. Таким сервер может отказать прямо в .htaccess, ещё до запуска WordPress, то есть без нагрузки на процессор.
- В cPanel откройте File Manager, перейдите в
public_htmlи включите показ скрытых файлов (Settings, затем Show Hidden Files). - Сначала скачайте копию файла
.htaccess. - Добавьте блок ниже в начало файла, над строкой
# BEGIN WordPress. Там WordPress не перезапишет его при сохранении постоянных ссылок.
# Запрещённые боты
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|ClaudeBot|CCBot|Bytespider|AhrefsBot|SemrushBot|MJ12bot|DotBot|PetalBot|BLEXBot|DataForSeoBot|MegaIndex|Barkrowler|Scrapy|python-requests|Go-http-client) [NC]
RewriteRule .* - [F,L]
</IfModule>
Боты из списка будут получать «403 Forbidden». Подправьте список: уберите то, чем пользуетесь, и добавьте имена, которые увидели в журналах. Никогда не добавляйте сюда Googlebot, bingbot и facebookexternalhit (он строит превью ссылок в Facebook).
Проверить правило можно с компьютера командой curl -I -A "AhrefsBot" https://vash-domen.md/: в ответ должен прийти код 403. Если после сохранения сайт показывает ошибку 500, загрузите обратно сохранённую копию.
Ограничение метода: бота, который представляется обычным браузером, по имени не распознать. Против него остаются Cloudflare и блокировка IP-адресов с нашей стороны.
4. Cloudflare: правила для трафика, который иначе не отфильтровать
Если сайт работает через Cloudflare (как подключить, описано в инструкции по Cloudflare), бесплатный тариф даёт несколько полезных инструментов:
- Bot Fight Mode в настройках безопасности для ботов замедляет известных вредных роботов;
- правила ограничения частоты (Rate limiting rules), например для адресов с фильтрами, когда один IP превышает заданное число запросов в минуту;
- собственные правила (Custom rules), которыми можно заблокировать по User-Agent ботов, которые Вам совсем не нужны.
5. Из WordPress, если .htaccess менять нельзя
- Wordfence (бесплатная версия): в настройках файрвола, раздел Rate Limiting, ограничьте просмотры страниц краулерами (например, 60 в минуту) и запросы несуществующих страниц (например, 30 в минуту) с действием «замедлить» или «заблокировать». Включите также опцию немедленной блокировки ботов, которые выдают себя за Google.
- LiteSpeed Cache: функцию Crawler оставьте выключенной, если она Вам не нужна; главное, чтобы страницы категорий были в кеше.
- Не ставьте одновременно два плагина безопасности. Они мешают друг другу и замедляют сайт вместо того, чтобы защищать.
Когда писать нам
Если Вы приняли меры выше, а сайт всё равно медленный, откройте тикет, укажите домен и, если есть, имена ботов из журналов. Мы проверим журналы сервера, можем заблокировать адреса, которые злоупотребляют, и подскажем, нужен ли для реального трафика тариф с большими ресурсами. Не затягивайте: по Условиям предоставления услуг аккаунт, который чрезмерно расходует ресурсы и угрожает стабильности сервера, может быть приостановлен. О причинах нагрузки подробнее в статье о нагрузке на сервер от скриптов сайта.
Чего не делать
- Не блокируйте Googlebot и bingbot, если хотите оставаться в поиске. В Google Search Console больше нет ручной настройки скорости сканирования: Google сам снижает темп, когда сервер часто отвечает ошибками 500, 503 или 429. Если Googlebot действительно перегружает сайт, у Google есть форма, чтобы сообщить о проблеме.
- Не правьте
.htaccessбез копии. Одна синтаксическая ошибка выводит из строя весь сайт с ошибкой 500. Правильные варианты файла есть в статье о .htaccess для популярных CMS. - Не полагайтесь только на
robots.txt. Это просьба, а не барьер: больше всего проблем создают как раз те боты, которые его не читают.