Анализ User-Agent строк: как обнаружить подделанные и подозрительные браузеры

Введение

User-Agent (UA) — это строка, которую браузер отправляет в заголовке HTTP-запроса, чтобы идентифицировать себя и своё окружение. Она содержит информацию о браузере, его версии, операционной системе и иногда устройства. Для аналитики, безопасности и адаптивной верстки UA играет важную роль. Однако UA легко подделать — поэтому анализ UA-строк для обнаружения поддельных или подозрительных браузеров стал важной задачей для администраторов, аналитиков и специалистов по безопасности.

Почему важно анализировать User-Agent

  • Защита от мошеннической активности: боты, скраперy и злоумышленники часто маскируются под популярных браузеров.
  • Качество аналитики: поддельные UA и бот-трафик искажают метрики посещаемости и конверсий.
  • Безопасность приложений: необычная или неконсистентная информация может указывать на эксплойты или автоматизированные атаки.

Ключевые цели анализа

  1. Выявление аномалий и несоответствий в UA-строках.
  2. Определение вероятности того, что UA поддельный.
  3. Мягкая или жесткая фильтрация подозрительного трафика.

Структура User-Agent и основные элементы

Пример типичной UA-строки:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36

  • Product (например, Mozilla/5.0) — исторический префикс.
  • Platform (скобки) — ОС и архитектура.
  • Rendering engine — WebKit, Gecko и т. п.
  • Browser/Version — собственно браузер и его версия.

Почему UA ненадёжен сам по себе

UA легко изменяется с помощью расширений, параметров запуска браузера или простых сетевых прокси. К тому же разнообразие форматов и сокращений затрудняет универсальную классификацию.

Признаки подделки User-Agent

Список часто встречающихся аномалий при поддельных UA:

  • Несовместимые комбинации: например, Safari с «Windows NT» и упоминанием «Mobile».
  • Чрезмерно старые или слишком новые версии, несовместимые с датой запроса.
  • Присутствие явных маркеров ботов: «curl», «Wget», «python-requests».
  • Отсутствие ожидаемых маркеров для мобильных устройств (например, «Mobile», «Android» для UA, заявляющей мобильность).
  • Повторяющиеся и одинаковые UA в короткий интервал времени с разных IP — признак автоматизации.

Примеры подозрительных UA

UA-строка Причина подозрения
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Отсутствует «Chrome» при наличии WebKit/537.36 — несоответствие (подмена)
curl/7.88.1 Явный инструмент автоматизации — скорее всего бот/скрапер
Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/123.45 (KHTML, like Gecko) Chrome/999.0.0.0 Mobile Safari/123.45 Нереалистично высокая версия Chrome — вероятна подмена

Методы обнаружения поддельных UA

Сочетание нескольких методов даёт наилучшие результаты. Описание ключевых подходов ниже.

1. Сопоставление с базами известных UA

Сравнение строки с базой данных актуальных UA (по версиям браузеров, движкам и ОС). Если комбинация неизвестна или редка — повышенный риск подделки.

2. Сопоставление с другими заголовками и признаками запроса

  • Accept, Accept-Language, Accept-Encoding: мобильные браузеры обычно имеют конкретные значения.
  • Отсутствие заголовков, которые должен отправлять конкретный браузер, — подозрительно.

3. Поведенческий анализ (фингерпринтинг)

Использование JS-скриптов для сбора информации о поддерживаемых API, разрешении экрана, таймингах рендеринга и других признаках. Сопоставление этих данных с заявленным UA даёт более надёжную оценку.

4. Анализ сессий и частоты запросов

Боты часто отправляют много запросов в короткое время, имеют похожие UA и находятся на одном IP-пулле. Метрики, на которые стоит обратить внимание:

  • Частота запросов с одного UA
  • Число различных сессий с тем же UA
  • Сессии без выполненного JavaScript (позволяет выявить headless-процессы)

5. Детекция headless-режимов и автоматизации

Популярные headless-браузеры и автоматизационные фреймворки оставляют специфические признаки: отображение свойства navigator.webdriver, отличия в Canvas/Font fingerprint, необычные тайминги загрузки.

Практическая реализация: пример алгоритма

Ниже приведён упрощённый алгоритм, который можно внедрить в логику веб-приложения или в систему SIEM:

  1. Собрать UA и сопутствующие заголовки (Accept, Referrer, Accept-Language).
  2. Проверить соответствие UA известным паттернам (регулярные выражения, база версий).
  3. Сопоставить платформу и браузер с данными JS-фингерпринта (если доступно).
  4. Оценить поведенческие признаки (частота запросов, сессии, IP-репутация).
  5. Выдать оценку риска (низкий/средний/высокий) и применить политику (лог, смягчение, блокировка).

Пример правил в псевдокоде

if UA.matchesKnownBotPatterns or UA.contains(«curl») or UA.contains(«Wget»):
risk = HIGH
elif UA.platform inconsistentWithJSFingerprint:
risk = MEDIUM
elif requestsPerMinute > threshold:
risk = MEDIUM
else:
risk = LOW

Статистика и практические наблюдения

На практике распределение поддельных UA зависит от отрасли и конфигурации сайта, но есть общие цифры, которые наблюдаются в крупных проектах:

  • 10–30% веб-трафика на публичных ресурсах может приходить от автоматизированных агентов (ботов, скрапов) — часть из них ясно идентифицируется по UA.
  • Из числа явных ботов примерно 40–60% скрывают свою реальную идентичность, маскируясь под популярные браузеры.
  • Около 5–15% интерактивного трафика может иметь несогласованные UA и JS-фингерпринт, что указывает на попытки маскировки или использование старых/экзотических клиентов.

Эти числа зависят от источников трафика: e-commerce, медиа-сайты, API-платформы показывают разные профили.

Таблица возможных действий при обнаружении подозрительного UA

Уровень риска Рекомендуемое действие Примечание
Низкий Логирование, мониторинг Не мешает UX пользователей
Средний Замедление ответов, капча на чувствительных маршрутах Применять избирательно
Высокий Блокировка, чёрный список IP Требует проверки ложных срабатываний

Ограничения и ложные срабатывания

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

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

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

Кейс: обнаружение массовой подмены UA на сайте новостей

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

  • Повторяющиеся UA без изменений в Accept-Language и других заголовках.
  • Наличие navigator.webdriver = true в JS-проверках у 70% таких сессий.
  • Большинство запросов приходило с небольшого пула IP-адресов, принадлежащих клауд-провайдеру.

Действия и результат:

  1. Временное замедление для подозрительных сессий и подача капчи на момент входа.
  2. Внедрение правил блокировки для IP-пула и UA-шаблонов.
  3. Через 48 часов трафик снизился на 35%, при этом реальные пользователи не ощутили заметных изменений.

Практические рекомендации и чек-лист

Короткий чек-лист для специалистов, внедряющих детекцию поддельных UA:

  • Поддерживать актуальную базу известных UA и версий.
  • Собирать дополнительные заголовки и, по возможности, JS-фингерпринт.
  • Анализировать поведение: частота запросов, переходы по страницам, время на странице.
  • Использовать градуированную политику ответа (лог → замедление → капча → блокировка).
  • Регулярно проверять возможные ложные срабатывания и обновлять правила.

Мнение автора

Анализ User-Agent — необходимый, но недостаточный инструмент. Единого «чёрного списка» UA не существует, поэтому лучше сочетать анализ UA с фингерпринтингом и поведенческой аналитикой. Это повысит точность детекции и уменьшит количество ложных блокировок.

Будущие тренды

С течением времени UA-строки будут становиться ещё менее надёжными: браузеры могут осознанно унифицировать UA ради приватности, а инструменты автоматизации будут улучшать маскировку. В ответ индустрия переходит к многомодальным подходам — server-side анализ + client-side подтверждения и распределённые репутационные сервисы внутри инфраструктуры сайта.

Заключение

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

Короткое напутствие: применяйте многоуровневый подход и не полагайтесь исключительно на UA — сочетание данных улучшит безопасность и точность аналитики.

Понравилась статья? Поделиться с друзьями: