Где в логах сервера искать информацию о ботах

Когда боты приходят на ваш сайт, они оставляют следы. Весь трафик, в том числе от ботов, записывается в файлы логов. На nginx это /var/log/nginx/access.log. На Apache — похожее место. Каждая строка в этом файле — один запрос к вашему сайту.

Вот как выглядит реальная строка логов:

203.0.113.45 - - [15/Oct/2024:14:23:12 +0000] "GET /robots.txt HTTP/1.1" 200 1234 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Что здесь важно:

  • IP адрес (203.0.113.45) — откуда пришёл запрос к вашему сайту
  • HTTP-код ответа (200) — как сервер ответил боту (200 = успех, 404 = не найдено, 403 = доступ запрещён)
  • User-Agent (в кавычках в конце) — идентификатор бота, его имя и версия

User-Agent — главное. Именно по нему вы определяете, кто это и насколько этот бот безопасен для вашего проекта.

Примеры известных поисковых ботов

Поисковые роботы честно подписывают себя. Вот реальные примеры user-agent строк:

Googlebot от Google:

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Yandexbot от Яндекса:

Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

Bingbot от Microsoft:

Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

Baiduspider от Baidu:

Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

Это полезные боты. Они индексируют страницы вашего сайта, помогают вам попасть в результаты поиска. Если они есть в ваших логах — это хорошо для SEO позиций. Они аккуратно просматривают контент и не создают вредоносную нагрузку.

Есть ещё инструменты проверки: Chrome-Lighthouse проверяет скорость, Mediapartners анализирует объявления, различные боты доступности тестируют сайт. Все они работают честно и безопасны.

Какие user-agent признаки говорят о полезных ботах

Полезный бот обычно включает в свой user-agent строку ссылку на официальную документацию. Видите http://www.google.com/bot.html? Это Google. Видите http://yandex.com/bots? Это Яндекс. Эти ссылки ведут на страницы, где компания описывает своего робота.

Вредоносный бот часто скрывается. Он может притворяться обычным браузером, писать Mozilla и Chrome, но при этом его поведение совсем не как у браузера. Браузер логируется раз в день-два. Вредоносный бот приходит каждую секунду тысячу раз.

Коды ответа HTTP: что они означают

200 — успешный запрос. Бот получил страницу полностью. Нормально для поисковых ботов.

404 — страница не найдена. Если конкретный бот часто получает 404, это может показать две вещи. Либо он запрашивает старые страницы вашего сайта (обновляется), либо он слепо пытается найти уязвимости.

403 — доступ запрещён. Вы вручную блокировали этого бота на уровне сервера. Это корректный способ ограничить трафик.

429 — слишком много запросов. Сервер просит бота замедлиться. Много 429 от одного IP адреса = агрессивный сканер.

Посмотрите в свои логи. Если Googlebot получает коды 200 и иногда 404 — вполне нормально. Если неизвестный IP получает 1000 ошибок 404 в час и просит несуществующие пути вроде /admin, /wp-admin, /.env — вы смотрите на сканер уязвимостей.

Частота запросов ботов в логах

Полезные боты работают со скоростью 1–5 запросов в секунду. Они распределяют нагрузку по времени. Googlebot может работать день и ночь, но не убивает ваш сервер.

Вредоносные боты отправляют 50, 100, 1000 запросов в секунду. За минуту они создают столько нагрузки, что реальные пользователи не могут открыть ваши страницы.

Как проверить частоту? Смотрите логи каждый час. Если боты приходят равномерно днём и ночью — это поисковики. Если волнами в одно время, сразу тысячи запросов, потом исчезают — это сканеры.

Готовые команды для анализа ботов

Топ-20 IP адресов, создавших больше всего запросов:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Команда разбирает логи: awk выделяет первое поле (IP), sort сортирует, uniq -c считает повторения, ещё один sort -rn упорядочивает по убыванию. Если видите IP с десятками тысяч запросов — это вредоносный бот.

Какие боты приходят на сайт чаще всего:

awk -F'\042' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Эта команда извлекает user-agent строки и подсчитывает их. uniq -c показывает, сколько раз каждый бот посетил сайт. Вы сразу увидите Googlebot, Yandexbot и других.

Запросы с ошибками 404 (поиск несуществующих путей):

grep ' 404 ' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn

Много 404 от одного IP адреса = сканер ищет уязвимости в конфигурации вашего сервера.

Запросы к подозрительным файлам:

grep -E '.env|config.php|backup|.sql' /var/log/nginx/access.log | awk '{print $1, $7}' | sort | uniq -c | sort -rn

Если видите запросы к .env, config файлам, sql базам, бэкапам — это попытка получить доступ к конфиденциальным данным вашего сайта.

Как проверить IP адреса ботов через обратный DNS

Когда найдёте подозрительный IP в логах, проверьте его происхождение:

nslookup 203.0.113.45

Или:

dig -x 203.0.113.45

Если домен неизвестный или принадлежит дешёвому виртуальному хостингу — скорее всего, это вредоносный бот. Если домен принадлежит Google, Яндексу, Bing — это могут быть их боты (хотя проверьте IP диапазоны на официальных страницах).

Блокировка вредоносных ботов

Если найдёте агрессивный IP:

Блокируйте в nginx:

deny 203.0.113.45;

Или в robots.txt:

User-agent: MJ12bot
Disallow: /
User-agent: AhrefsBot
Disallow: /

Не все боты уважают robots.txt, но честные уважают.

Полезные боты помогают, вредные убивают сайт

К известным полезным роботам относятся:

  • Googlebot, Yandexbot, Bingbot, Baiduspider (индексация для поиска)
  • Chrome-Lighthouse (проверка скорости)
  • Различные боты доступности (проверка для людей с инвалидностью)

Вредные боты, которые стоит блокировать:

  • Сканеры уязвимостей (много 404, поиск админ-панелей)
  • Агрессивные скреперы контента (тысячи запросов в час)
  • Маскирующиеся боты (user-agent браузера, но поведение бота)

Большинство ботов, которые вы видите в логах, — совершенно обычное явление. Не паникуйте. Когда видите неизвестный user-agent, просто проверьте, как часто он приходит и какие пути запрашивает. Этого достаточно, чтобы понять, друг это или враг.