Диагностика

Как найти ботов в access.log и проверить нагрузку на сайт

Практический разбор access.log: время, IP, пути, методы, коды ответа и User-Agent. Как проверить всплеск запросов и не заблокировать поисковых роботов.

13 октября 20267 мин чтенияКоманда BotProtection
Термины:

Access.log показывает запросы к серверу, включая обращения без JavaScript и без визита в аналитике. Однако частый запрос ещё не доказывает атаку: мониторинг, поисковый обход, интеграции и пользователи общих сетей могут выглядеть похожим образом.

Подготовьте журнал и контекст

Запросите у хостинга журнал за время аномалии и сопоставимый обычный период. Запишите часовой пояс, формат логов и точку сбора: CDN, защитный прокси или исходный сервер. У origin в поле адреса может стоять IP прокси. Восстановление адреса клиента допускайте только из заголовков доверенных прокси; произвольному X-Forwarded-For из интернета доверять нельзя.

Обычный combined-формат содержит адрес, время, строку запроса, статус, объём ответа, Referer и User-Agent. Время обработки запроса часто нужно добавлять отдельно. Не меняйте конфигурацию сервера без проверки синтаксиса и возможности отката.

Учебный пример: что видно в строках

Это синтетический пример с адресом из диапазона для документации, а не журнал клиента и не подтверждённая атака:

192.0.2.10 - - [13/Oct/2026:10:00:00 +0300] "GET /catalog?page=1 HTTP/1.1" 200 2048 "-" "ExampleCrawler/1.0"
192.0.2.10 - - [13/Oct/2026:10:00:01 +0300] "GET /catalog?page=2 HTTP/1.1" 200 2048 "-" "ExampleCrawler/1.0"
192.0.2.10 - - [13/Oct/2026:10:00:02 +0300] "GET /catalog?page=3 HTTP/1.1" 200 2048 "-" "ExampleCrawler/1.0"

Последовательность похожа на обход каталога. Три запроса не показывают ущерб: нужны длительность, интенсивность, стоимость ответа, идентификация клиента и бизнес-контекст. Отсутствие Referer встречается и у обычных посетителей.

Сгруппируйте запросы и сопоставьте нагрузку

  1. Разбейте поток по минутам и маршрутам. Найдите рост запросов к поиску, фильтрам, формам и другим дорогим обработчикам.
  2. Сравните распределение IP и User-Agent, долю GET и POST, ответы 4xx и 5xx. Отдельно проверьте повторные попытки после 429.
  3. Сопоставьте время всплеска с CPU, очередями, базой данных и p95 времени ответа. Количество запросов без стоимости обработки не объясняет перегрузку.
  4. Проверьте деплой, рекламную кампанию и расписание интеграций. Всплеск 5xx может быть вызван ошибкой приложения, а не ботами.

Для небольшого файла в combined-формате можно получить наиболее частые значения первого поля командой ниже. Она подходит только если первое поле действительно содержит адрес клиента; это счётчик, а не список адресов для блокировки.

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20

Большие журналы анализируйте средствами хостинга или системы логирования, чтобы не нагружать production-сервер сортировкой. Не загружайте необезличенные файлы во внешние анализаторы.

Проверьте поисковых роботов до блокировки

User-Agent можно подделать. Анализатор User-Agent помогает разобрать строку, но не подтверждает владельца запроса. Для Googlebot сверяйте IP с опубликованными диапазонами либо проверяйте reverse DNS и обратное разрешение имени в исходный адрес; для других поисковых систем используйте их официальную методику.

Начните со справочника Googlebot и справочника YandexBot. Проверка robots.txt оценивает доступность файлов и правила обхода, но не подтверждает подлинность робота и не гарантирует индексацию.

Выберите меру и проверьте последствия

При подтверждённой нагрузке ограничьте конкретный дорогой маршрут, проверьте кеширование публичных ответов и контролируйте очередь origin. Начинайте с наблюдения и небольших изменений. После включения правила сравните доступность, p95, ошибки, реальные обращения и поисковый обход. Для связки с аналитикой и CRM смотрите методику диагностики, для подключения — инструкции платформ.

Источники и ограничения

Формат журналов Nginx, журналы Apache и проверка Googlebot. Если прокси не сохраняет клиентский адрес или часть запросов обслуживается кешем, журнал origin неполон.

Частые вопросы

Можно ли заблокировать все IP из верхних строк счётчика?

Нет. Там могут быть прокси, общие сети, мониторинг и поисковые роботы. Сопоставьте маршруты, частоту, нагрузку и подлинность клиента.

Доказывает ли User-Agent Googlebot подлинность робота?

Нет. Строку можно подделать. Используйте официальные диапазоны IP или проверку reverse и forward DNS по документации Google.

Почему в логах один IP у всех посетителей?

Возможно, origin видит адрес прокси. Проверьте схему доверенных прокси и формат журнала, прежде чем делать выводы об адресах клиентов.

Выберите защиту по задаче

Начните с подтверждённой проблемы и проверьте, какие действия должны оставаться доступными клиентам, поисковым роботам и интеграциям.

По теме материала

Защита сайта8 мин чтения

Как понять, что сайту мешают боты: простая проверка для владельца

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

Читать дальше
Технологии14 мин чтения

Как защитить API сайта от ботов: rate limiting, токены и контроль дорогих запросов

Практическое руководство по защите API от ботов: как найти дорогие маршруты, выбрать лимиты, сохранить работу клиентов и интеграций и проверить результат без лишних блокировок.

Читать дальше