Сайт внезапно начал тормозить, страницы отдают 503 или 504, а в статистике хостинга упёрлись в лимит CPU. Первая мысль — наплыв посетителей или атака. Но всё чаще причиной оказываются не люди, а краулеры ИИ-компаний и SEO-сервисов: они скачивают тысячи страниц, а платит за это ваш сервер.
Реальный случай: нагрузка выросла в четыре раза
Недавно на одном из наших shared-серверов нагрузка за несколько минут выросла примерно вчетверо. Сайт на WordPress с разделом загрузок обходил распределённый бот msh-pdfmin/1: около 400 страниц файлов в минуту с множества IP. Интернет-магазин параллельно сканировали краулеры Meta — meta-externalagent и meta-webindexer, примерно 400 запросов в минуту по категориям и фильтрам. К ним добавились MJ12bot и SemrushBot.
После блокировки этих user agent через .htaccess с ответом 403 нагрузка за считанные минуты упала с ~250 до ~40. Обычные посетители ничего не заметили, заказы шли как обычно. Бот-трафик почти не виден, но может занимать сервер сильнее живых пользователей.
Как распознать нагрузку от ботов
Признаки типичны: сайт открывается медленно, периодически появляются 503/504, CPU у лимита, а в аналитике посетителей не прибавилось — боты не выполняют JavaScript и не видны счётчикам. Реальную картину даёт access-лог, где у каждого запроса есть IP, адрес страницы и user agent.
Команды ниже выводят самых активных по user agent и по IP, последняя считает запросы конкретного бота. Если IP разбросаны, а user agent один и тот же, перед вами распределённый краулер:
awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
grep -c "meta-externalagent" access.log
Если доступа к логам нет или сложно разобраться в результатах, обратитесь в техподдержку sayt.uz: специалисты определят, какие боты нагружают сервер, и подскажут, что стоит ограничить.
Поисковые боты и боты для обучения
Блокировать всех подряд — ошибка. Googlebot и Bingbot индексируют сайт и приводят посетителей. Боты для обучения моделей собирают контент и почти ничего не дают взамен, а SEO-краулеры работают на анализ конкурентов и оставляют вам только нагрузку.
| Бот | Владелец | Назначение |
|---|---|---|
GPTBot / OAI-SearchBot, ChatGPT-User | OpenAI | обучение / ИИ-поиск |
ClaudeBot / Claude-SearchBot, Claude-User | Anthropic | обучение / ИИ-поиск |
PerplexityBot | Perplexity | ИИ-поиск |
meta-externalagent, Bytespider, CCBot | Meta, ByteDance, Common Crawl | обучение |
AhrefsBot, SemrushBot, MJ12bot, DotBot, PetalBot | SEO-сервисы | анализ |
Google-Extended — не отдельный краулер, а токен robots.txt: он управляет использованием контента в моделях Gemini и не влияет на поисковый индекс. Так же устроен Applebot-Extended: страницы смотрит обычный Applebot, а токен разрешает или запрещает обучение на них.
robots.txt: для вежливых ботов
Боты крупных компаний обычно соблюдают robots.txt, поэтому начинать стоит с него. В примере боты обучения и тяжёлые SEO-краулеры закрыты полностью, а поисковики продолжают индексировать сайт, но не ходят по тяжёлым страницам:
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Bytespider
User-agent: meta-externalagent
User-agent: Google-Extended
User-agent: MJ12bot
User-agent: DotBot
Disallow: /
User-agent: *
Disallow: /*?filter=
Disallow: /*?s=
Disallow: /*add-to-cart=
Crawl-delay: 5
Crawl-delay учитывают Bing и часть SEO-ботов, а Google его игнорирует: Googlebot сам подстраивает скорость под ответы сервера и снижает её, если видит 503.
.htaccess и nginx: для тех, кто правила игнорирует
robots.txt — лишь рекомендация, а боты вроде msh-pdfmin/1 его не читают. Таких нужно отсекать на сервере. На Apache добавьте в .htaccess:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (msh-pdfmin|MJ12bot|SemrushBot|DotBot|Bytespider) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (meta-externalagent|meta-webindexer) [NC]
RewriteRule .* - [F,L]
[NC] отключает учёт регистра, [F] возвращает 403. Отказ обходится намного дешевле генерации страницы: PHP не запускается, к базе нет запросов, и нагрузка падает почти сразу. На своём VPS с nginx то же правило пишется в блоке server:
if ($http_user_agent ~* (msh-pdfmin|MJ12bot|Bytespider|meta-externalagent)) {
return 403;
}
Ограничение скорости и Cloudflare
Некоторых ботов достаточно притормозить. Модуль nginx limit_req ограничивает запросы с одного IP, например двумя в секунду, и на лишние отвечает 429. Это работает и против ботов, маскирующихся под браузер, ведь человек так быстро страницы не открывает. В Cloudflare есть блокировка ИИ-ботов одной кнопкой, Bot Fight Mode и правила firewall, которые останавливают запросы ещё до вашего сервера.
Закройте тяжёлые страницы
Часто проблема не в числе ботов, а в том, что они открывают. Фильтры магазина порождают тысячи уникальных URL с тяжёлыми запросами к базе, а внутренний поиск и ссылки «в корзину» не кешируются. Закройте их через Disallow, добавьте noindex и rel="nofollow" на ссылки фильтров — тогда поисковики будут индексировать только полезные страницы.
Решайте по каждому боту отдельно
У блокировки есть цена. Закрыв OAI-SearchBot, PerplexityBot или Claude-SearchBot, вы рискуете реже появляться в ответах ChatGPT и Perplexity, а через них сегодня ищут многие. Разумный подход — ограничить ботов обучения и тяжёлых SEO-краулеров, оставив поисковых. После изменений пару дней следите за нагрузкой и трафиком.