- Введение
- Почему важно анализировать User-Agent
- Ключевые цели анализа
- Структура User-Agent и основные элементы
- Почему UA ненадёжен сам по себе
- Признаки подделки User-Agent
- Примеры подозрительных UA
- Методы обнаружения поддельных UA
- 1. Сопоставление с базами известных UA
- 2. Сопоставление с другими заголовками и признаками запроса
- 3. Поведенческий анализ (фингерпринтинг)
- 4. Анализ сессий и частоты запросов
- 5. Детекция headless-режимов и автоматизации
- Практическая реализация: пример алгоритма
- Пример правил в псевдокоде
- Статистика и практические наблюдения
- Таблица возможных действий при обнаружении подозрительного UA
- Ограничения и ложные срабатывания
- Кейс: обнаружение массовой подмены UA на сайте новостей
- Практические рекомендации и чек-лист
- Мнение автора
- Будущие тренды
- Заключение
Введение
User-Agent (UA) — это строка, которую браузер отправляет в заголовке HTTP-запроса, чтобы идентифицировать себя и своё окружение. Она содержит информацию о браузере, его версии, операционной системе и иногда устройства. Для аналитики, безопасности и адаптивной верстки UA играет важную роль. Однако UA легко подделать — поэтому анализ UA-строк для обнаружения поддельных или подозрительных браузеров стал важной задачей для администраторов, аналитиков и специалистов по безопасности.

Почему важно анализировать User-Agent
- Защита от мошеннической активности: боты, скраперy и злоумышленники часто маскируются под популярных браузеров.
- Качество аналитики: поддельные UA и бот-трафик искажают метрики посещаемости и конверсий.
- Безопасность приложений: необычная или неконсистентная информация может указывать на эксплойты или автоматизированные атаки.
Ключевые цели анализа
- Выявление аномалий и несоответствий в UA-строках.
- Определение вероятности того, что UA поддельный.
- Мягкая или жесткая фильтрация подозрительного трафика.
Структура 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:
- Собрать UA и сопутствующие заголовки (Accept, Referrer, Accept-Language).
- Проверить соответствие UA известным паттернам (регулярные выражения, база версий).
- Сопоставить платформу и браузер с данными JS-фингерпринта (если доступно).
- Оценить поведенческие признаки (частота запросов, сессии, IP-репутация).
- Выдать оценку риска (низкий/средний/высокий) и применить политику (лог, смягчение, блокировка).
Пример правил в псевдокоде
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-адресов, принадлежащих клауд-провайдеру.
Действия и результат:
- Временное замедление для подозрительных сессий и подача капчи на момент входа.
- Внедрение правил блокировки для IP-пула и UA-шаблонов.
- Через 48 часов трафик снизился на 35%, при этом реальные пользователи не ощутили заметных изменений.
Практические рекомендации и чек-лист
Короткий чек-лист для специалистов, внедряющих детекцию поддельных UA:
- Поддерживать актуальную базу известных UA и версий.
- Собирать дополнительные заголовки и, по возможности, JS-фингерпринт.
- Анализировать поведение: частота запросов, переходы по страницам, время на странице.
- Использовать градуированную политику ответа (лог → замедление → капча → блокировка).
- Регулярно проверять возможные ложные срабатывания и обновлять правила.
Мнение автора
Анализ User-Agent — необходимый, но недостаточный инструмент. Единого «чёрного списка» UA не существует, поэтому лучше сочетать анализ UA с фингерпринтингом и поведенческой аналитикой. Это повысит точность детекции и уменьшит количество ложных блокировок.
Будущие тренды
С течением времени UA-строки будут становиться ещё менее надёжными: браузеры могут осознанно унифицировать UA ради приватности, а инструменты автоматизации будут улучшать маскировку. В ответ индустрия переходит к многомодальным подходам — server-side анализ + client-side подтверждения и распределённые репутационные сервисы внутри инфраструктуры сайта.
Заключение
Анализ User-Agent строк — это эффективный первый уровень защиты и фильтрации трафика, но только при совместном использовании с дополнительными методами он даёт надёжные результаты. Последовательный сбор метаданных, регулярное обновление правил и внимательная обработка ложных срабатываний позволят существенно сократить долю поддельного и вредоносного трафика, не ухудшая опыт реальных пользователей.
Короткое напутствие: применяйте многоуровневый подход и не полагайтесь исключительно на UA — сочетание данных улучшит безопасность и точность аналитики.