Где в логах сервера искать информацию о ботах
Когда боты приходят на ваш сайт, они оставляют следы. Весь трафик, в том числе от ботов, записывается в файлы логов. На 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, просто проверьте, как часто он приходит и какие пути запрашивает. Этого достаточно, чтобы понять, друг это или враг.
