Интернет — это постоянно меняющийся и расширяющийся океан информации. Важную роль в исследовании и сборе этих огромных данных играют веб-краулеры (Web Crawler), широко известные как боты (Bot), автоматизированные программы. Эти боты обходят веб-пространство, индексируют информацию, собирают данные и предоставляют различные услуги, становясь важной частью веб-экосистемы. Однако не все боты полезны для сети. Иногда существуют вредоносные боты, которые могут причинять вред веб-сайтам или использовать их в своих интересах.

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


Популярные боты, часто встречающиеся в сети (полезные боты)

Большая часть веб-трафика создается не людьми, а ботами. Среди них наиболее важные и полезные представлены ниже.

1. Боты поисковых систем (Search Engine Bots)

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

  • Googlebot (Google): 대표ственный 웹 크롤러 Google. Он обходится почти все страницы в интернете, обновляет поисковые результаты и предоставляет данные для услуг Google (карты, новости и т. д.). Отображается в User-Agent как Googlebot или Mediapartners-Google.

  • Bingbot (Microsoft Bing): Кроллер поисковой системы Bing от Microsoft. Отображается в User-Agent как Bingbot.

  • Baidu Spider (Baidu): Кроллер крупнейшей китайской поисковой системы Baidu. Если вы нацелены на китайский рынок, посещение Baidu Spider также важно. Отображается в User-Agent как Baiduspider.

  • Yandex Bot (Yandex): Кроллер крупной российской поисковой системы Yandex. Отображается в User-Agent как YandexBot.

  • Yeti (Naver): 대표ственный 웹 크롤러 Naver в Южной Корее. Он собирает поисковые результаты, специфичные для корейского рынка, и отображается в User-Agent как Yeti.

2. Боты социальных медиа (Social Media Bots)

Они используются для создания предпросмотр(Pod标题, описания и изображений) ссылок, когда ссылки делятся в социальных медиаплатформах.

  • Facebook External Hit (Facebook): Извлекает информацию о странице, когда ссылка делится на Facebook. Отображается в User-Agent как facebookexternalhit.

  • Twitterbot (Twitter/X): Создает предпросмотр ссылок на Twitter (X). Отображается в User-Agent как Twitterbot.

  • Slackbot (Slack): Создает предпросмотр при обмене ссылками в Slack. Отображается в User-Agent как Slackbot.

3. Боты мониторинга/аналитики (Monitoring/Analytics Bots)

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

  • UptimeRobot, Pingdom: Мониторят время безотказной работы веб-сайта и отправляют уведомления, когда сайт недоступен.

  • Установочные краулеры (Screaming Frog, Ahrefsbot, SemrushBot и т. д.): SEO-инструменты анализируют сайты, чтобы найти возможности для улучшения SEO или собрать данные для анализа конкурентов. В User-Agent включается название инструмента.

  • Ahrefsbot (Ahrefs): Ahrefs — один из самых мощных веб-краулеров для SEO, и Ahrefsbot — коммерческий краулер, который активно работает в интернете. Он собирает обширные данные SEO, такие как обратные ссылки, ранжирование ключевых слов и органический трафик, чтобы предоставить пользователям услуг Ahrefs. Особенно он обширно краулит, чтобы создать базу данных обратных ссылок, из-за чего часто попадает в логи веб-серверов после Googlebot. Отображается в User-Agent как AhrefsBot.


Различие между вредоносными и полезными ботами

Сравнение хороших и плохих ботов

Влияние бот-трафика на веб-сайт сильно зависит от целей и поведения бота. Вредоносные боты могут исчерпывать ресурсы сайта, красть данные или эксплуатировать уязвимости безопасности.

Характеристики полезных ботов

  • Соблюдение robots.txt: Большинство полезных ботов уважают файл robots.txt веб-сайта и следуют правилам, указанным в нем (разрешенные/запрещенные области для краулинга, скорость краулинга и т.д.).

  • Нормальные паттерны запросов: На запросы между ними есть соответствующая задержка, чтобы не перегружать сервер.

  • Официальный User-Agent: Используют четкие и известные строки User-Agent, часто включая информацию о владельце бота (например, Googlebot/2.1 (+http://www.google.com/bot.html)).

  • Подлинные IP-адреса: Отправляют запросы из фактического диапазона IP-адресов их владельца. (например, Googlebot использует IP-адреса, принадлежащие Google).

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

  • Игнорирование robots.txt: Пытаются получить несанкционированный доступ к запрещенным областям, игнорируя файл robots.txt.

  • Ненормальные паттерны запросов: Повторные запросы к определенной странице за короткий промежуток времени (попытка DDoS-атаки), чрезмерно быстрая скорость краулинга и т.д., нагружают сервер.

  • Поддельные User-Agent: Подделывают User-Agent полезных ботов (например, Googlebot) или используют случайно сгенерированные строки User-Agent.

  • Неизвестные IP-адреса: Используют прокси-серверы или VPN, меняя IP-адреса или скрывая их.

  • Злонамеренные действия:

    • Копирование контента (Content Scraping): Незаконно копируют контент веб-сайта и размещают его на других веб-сайтах или перепродают.

    • Снайпинг инвентаризации (Inventory Sniping): Быстро отслеживают товарные запасы на сайтах электронной коммерции и используют эту информацию для перепродажи.

    • Подмена учетных данных (Credential Stuffing): Пытаются войти, используя украденные учетные данные пользователей на других вебсайтах.

    • Спам-регистрация: Автоматически размещают спам-контент на форумах или в разделах комментариев.

    • DDoS-атака: Генерируют массовый трафик, чтобы вывести веб-сайт из строя.

    • Сканирование уязвимостей: Автоматически сканируют известные уязвимости веб-сайта для поиска точек атаки.


Эффективные способы блокировки вредоносных ботов

Злонамеренные боты игнорируют такие правила, как robots.txt, и пытаются проникнуть на веб-сайт, выдавая себя за реальных пользователей. Поэтому для их блокировки требуется продвинутая стратегия, способная распознать их ненормальные поведения и избирательно блокировать соответсвующие запросы.

1. Блокировка по IP-адресу и User-Agent (ограниченная первичная защита)

Если вредоносный трафик 지속ительно исходит от определенного IP-адреса или диапазона, или же если используется явно вредоносная строка User-Agent, применение временной блокировки может оказаться эффективным.

  • Настройки веб-сервера (Apache, Nginx):

    • Блокировка определенного IP-адреса:
# Пример для Nginx
deny 192.168.1.100;
deny 10.0.0.0/8;
- **Блокировка вредоносного `User-Agent`:**
# Пример .htaccess для Apache
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "BadBotString|AnotherBadBot" [NC]
RewriteRule .* - [F,L] # Вернуть 403 Forbidden

Ограничения: IP-адреса могут быть динамическими или легко обходиться через прокси, VPN, Tor сети. Вредоносные боты могут менять IP-адреса практически бесконечно, поэтому блокировка по IP-адресу может лишь увеличить нагрузку на управление и не является долгосрочным решением. User-Agent также легко подделать, и этим методом трудно остановить более сложные вредоносные боты.

2. Ограничение скорости запросов (Rate Limiting)

Когда количество запросов от конкретного IP-адреса, User-Agent или для конкретного URL резко возрастает в течение короткого времени, эти запросы ограничиваются или блокируются. Это эффективно для предотвращения DDoS-атак или чрезмерных попыток спарсить данные.

  • Настройки веб-сервера (пример для Nginx):
# В рамках http блока Nginx
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

# В рамках server или location блока
location / {
    limit_req zone=mylimit burst=10 nodelay; # Разрешает 5 запросов в секунду, до 10 за раз
    # ...
}

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

3. Создание системы защиты на основе поведения и её настройка (самая эффективная стратегия)

Это самый изощренный и эффективный метод. Злонамеренные боты могут маскировать свой IP или User-Agent, но их поведение на сайте всегда будет отличаться. Анализ этих ненормальных действий позволит выявить вредоносные боты и создать системы защиты против этих паттернов.

  • Мониторинг трафика и анализ логов:

    Логи веб-сервера (Access Log) являются важнейшим источником данных для понимания поведения ботов. Важно регулярно (более раз в день) проверять и анализировать логи. Анализ логов может помочь выявить ненормальные действия вредоносных ботов.

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

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

    • Подозрительные запросы URL: Повторяющиеся обращения к известным уязвимым маршрутам, которые не существуют на сайте (например, /wp-admin/, /phpmyadmin/, .env и т.д.).

    • Анализ HTTP-заголовков: Ненормальные сочетания или порядок HTTP-заголовков, отсутствующие заголовки и т. д.

  • Примеры паттернов поведения вредоносных ботов:

    Необходимо выявить конкретные паттерны поведения вредоносных ботов на основе логов и реализовать логику защиты на их основе.

    • GET /cgi-bin/luci/;stok=.../shell?cmd=RCE

      • Описание: Попытка атаки на уязвимость выполнения удаленного кода (RCE) через панель управления OpenWrt. Исследует уязвимости в системах на основе Linux, используемых в маршрутизаторах и встроенных устройствах.
    • POST /wp-login.php (повторные попытки входа)

      • Описание: Попытка брутфорс-атаки на страницу управления WordPress или попытка подмены учетных данных.
    • GET /HNAP1/

      • Описание: Попытка сканирования и атаки, направленная на уязвимость HNAP1 (Протокол управления домашней сетью), обнаруженную в маршрутизаторах D-Link.
    • GET /boaform/admin/formLogin

      • Описание: Попытка проникновения в панель администратора веб-серверов Boa, используемых в старых маршрутизаторах или веб-камерах.
    • GET /.env или GET /.git/config

      • Описание: Попытка украсть чувствительную информацию, получив доступ к .env файлу (файл переменных окружения) или директории .git.

    При обнаружении таких паттернов можно блокировать соответствующие запросы или временно добавлять адреса в черный список. Это может быть реализовано на серверной стороне с помощью промежуточного ПО (например, Django middleware) или настроек веб-сервера (модули map для Nginx, mod_rewrite для Apache и т.д.).

  • Проверка выполнения JavaScript:

    Большинство вредоносных ботов не могут полностью исполнять JavaScript, как это делает настоящий браузер. Можно проверять неявный JavaScript-код (например, нажатие на определенные элементы DOM), пинг-принтинг на canvas или вызовы API браузера, чтобы определить, является ли клиент ботом, и блокировать тех клиентов, которые не выполняют JavaScript.

4. Использование Honeypot (ловушки)

Ханипот (Honeypot) — это намеренная 'ловушка', используемая для привлечения и идентификации вредоносных ботов. Это элементы, которые скрыты на веб-странице, чтобы не быть заметными для обычных пользователей, но предназначены для взаимодействия автоматизированных ботов.

  • Принцип работы:

    1. Скрытые ссылки/поля: Создаются элементы, которые не видны для пользователя с использованием CSS (display: none;, visibility: hidden;, height: 0; и т.д.) или динамически генерируемых элементов с помощью JavaScript, которые переносятся за пределы экрана, чтобы создать ссылки или поля формы, полностью невидимые для пользователя.

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

    3. Идентификация вредоносных ботов: Если скрытые поля получают значения или происходит обращение к скрытым ссылкам, это можно считать явным вредоносным поведением.

    4. Автоматическая блокировка: Адреса IP или сеансы, для которых обнаруживается такое поведение, могут быть немедленно добавлены в черный список или заблокированы.

  • Пример реализации:

<form action="/submit" method="post">
    <label for="username">Имя пользователя:</label>
    <input type="text" id="username" name="username">

    <div style="position: absolute; left: -9999px;">
        <label for="email_hp">Это поле должно быть пустым:</label>
        <input type="text" id="email_hp" name="email_hp">
    </div>

    <label for="password">Пароль:</label>
    <input type="password" id="password" name="password">
    <button type="submit">Войти</button>
</form>
На сервере, если поле `email_hp` содержит значение, соответствующий запрос считается ботом и блокируется.
  • Преимущества: Эффективно идентифицировать вредоносные боты, не нарушая пользовательского опыта. В сравнении, его реализация относительно проста, и подделка трудна.

5. Защитные брандмауэры приложений в вебе (WAF) и специальные решения по управлению ботами

Если вы управляете крупными веб-сайтами или чувствительными услугами, использование профессиональных WAF решений (Cloudflare, AWS WAF, Sucuri и т.д.) или решений по управлению ботами (Cloudflare Bot Management, Akamai Bot Manager, PerimeterX и т.д.) является наиболее эффективным. Эти решения обеспечивают:

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

  • Интеллект угроз: Используют глобальные шаблоны атак и базы данных черного списка IP для выявления широкого спектра угроз.

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

  • Автоматизированные реакции: Автоматически блокируют или предлагают вызов, когда обнаруживаются вредоносные боты.


Заключение: активные и многослойные стратегии защиты от ботов

Вредоносные боты постоянно эволюционируют и пытаются атаковать веб-сайты. robots.txt — это просто руководство для честных ботов, но не может служить щитом от злоумышленников. Поэтому для защиты веб-сайтов необходимость в активной и многослойной стратегии защиты, способной анализировать и идентифицировать поведение ботов и избирательно блокировать только вредоносные боты является обязательной.

Путем анализа логов для выявления ненормальных паттернов поведения, умного настройки ограничения скорости запросов, установки ловушек с использованием 'Ханипот' и, если необходимо, внедрения профессиональных решений по управлению ботами или WAF, веб-сайты можно защитить более эффективно и поддерживать плавное взаимодействие с полезными ботами, предоставляя пользователям комфортный сервис. Каковы ваши уязвимости к угрозам ботов? Пора задуматься о надлежащих стратегиях защиты.