User Agent постепенно утрачивает роль основного источника данных, Client Hints — более современный механизм передачи сведений о клиенте. Так ли это? Давайте разбираться, что это за технология, какие данные она передает, а какие нет, можно ли её использовать для обнаружения фрода и бот-трафика.
Что такое Client Hints
Client Hints — это механизм, при котором сайты получают структурированные данные об устройстве пользователя, браузере или сети частично. То есть он не отправляет единый массив идентификационных данных, как User-Agent, а делится только той информацией, которую запрашивает ресурс.
Пример запроса сервера:
Accept-CH: Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model
Пример заголовков, которые браузер может отправить в ответ на такой запрос:
Sec-CH-UA: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
Sec-CH-UA-Platform-Version: "10.0.0"
Sec-CH-UA-Arch: "x86"
Sec-CH-UA-Model: ""
Для чего он нужен
Механизм используется для улучшения пользовательского опыта, маркетинга и аналитики:
- Адаптация содержимого на сайте под устройство
- Уведомление о входе пользователя в систему
- Загрузка исполняемых файлов
- Журналирование и отладка
- Маркетинговая аналитика
- Рекламные таргетинги
- Фингерпринтинг и др.
Подробнее ознакомиться с применениями технологии можно в этом отчете.
Типы
Некоторые строки, такие как Sec-CH-UA, передаются по умолчанию, друге — только по запросу.
| Название | Описание | Пример значения (код) |
|---|---|---|
| Sec-CH-UA | Название браузера (бренд) и основная версия. Отправляется по умолчанию | «Chromium»;v=»122″, «Not(A:Brand»;v=»24″, «Google Chrome»;v=»122″ |
| Sec-CH-UA-Mobile | Признак мобильного устройства. Отправляется по умолчанию | ?0 (не мобильное) / ?1 (мобильное) |
| Sec-CH-UA-Platform | Название операционной системы. Отправляется по умолчанию. | «Windows», «macOS», «Linux», «Android», «iOS» |
| Sec-CH-UA-Platform-Version | Версия операционной системы | «14.0.0» |
| Sec-CH-UA-Arch | Архитектура процессора | «x86», «arm» |
| Sec-CH-UA-Bitness | Разрядность архитектуры | «64», «32» |
| Sec-CH-UA-Model | Модель устройства (актуально для мобильных) | «Pixel 8», «SM-G991B» |
| Sec-CH-UA-Full-Version-List | Полная версия браузера | «Chromium»;v=»122.0.6261.95″, «Google Chrome»;v=»122.0.6261.95″ |
| Sec-CH-UA-WoW64 | Запущен ли 32-битный браузер на 64-битной Windows | ?0 / ?1 |
| Sec-CH-UA-Form-Factors | Форм-фактор устройства | «Desktop», «Mobile», «Tablet», «XR», «EInk», «Watch», «Automotive» |
| Sec-CH-Prefers-Color-Scheme | Предпочитаемая цветовая схема | «light», «dark» |
| Sec-CH-Prefers-Reduced-Motion | Предпочтение уменьшенной анимации | «no-preference», «reduce» |
| Sec-CH-Prefers-Reduced-Transparency | Предпочтение уменьшенной прозрачности | «no-preference», «reduce» |
| Sec-CH-Prefers-Contrast | Предпочитаемый контраст | «no-preference», «more», «less», «custom» |
| Sec-CH-Forced-Colors | Режим принудительных цветов (высокий контраст ОС) | «active», «none» |
Какие браузеры поддерживают Client Hints
Client Hints поддерживается большинством современных браузеров, однако не в равной степени:
- Полная поддержка: Chrome (в т. ч. на Android), Edge, Opera, Brave.
- Частично или не поддерживает: Firefox (в ограниченном формате, отключено по умолчанию), Safari (строгие правила конфиденциальности), Chrome и Edge на iOS.
Яндекс Браузер также использует эту технологию как замену устаревшему User-Agent из-за того, что второй стал слишком сложным и избыточным.
Чем Client Hints отличается от User Agent
CH и UA отличаются механизмом передачи, форматом, приватностью и другими критериями.
| Критерий | User-Agent (UA) | Client Hints (UA-CH) |
|---|---|---|
| Механизм передачи | Заголовок User-Agent отправляется с каждым HTTP-запросом автоматически | Набор заголовков Sec-CH-UA-*, отправляемых по запросу сервера через заголовок Accept-CH |
| Формат | Одна длинная строка | Структурированные заголовки: каждый параметр — отдельный заголовок |
| Объём данных по умолчанию | Полная строка отправляется всегда | По умолчанию отправляются только название браузера, главная версия. Детали — по явному запросу. |
| Поддержка браузерами | Все браузеры | Chromium (Chrome, Edge, Opera), Яндекс Браузер. Firefox и Safari не поддерживают |
| Стандарт | Часть HTTP-спецификации | Спецификация W3C — UA Client Hints |
| Приватность | Строка фактически уникальна и используется для фингерпринтинга | Разработана Google в рамках Privacy Sandbox для снижения пассивного фингерпринтинга |
| Защита приватности | Слабее — отображает все данные | Сильнее — сервер получает детали, только если явно запрашивает |
CH лучше UA?
Client Hints не заменяют User-Agent полностью — они работают параллельно. UA-строка продолжает отправляться, но в частично сокращенном виде (Reduced UA). По сути, CH — это эволюция защиты приватности пользователя в сети.
Пример. Если пользователь на устройстве с разрешением 640×960 просматривает контент в ландшафтном (альбомном) режиме, то Client Hints сможет лучше объяснить, что формат 960×640 больше подходит в текущем UX-сценарии.
И наоборот. Есть случаи, когда CH могут не совсем соответствовать поставленной задаче. Например:
- Ресемплинг видео, изображений.
- Определение возможностей ОС Android / аппаратного обеспечения для обеспечения правильной сборки APK для каждого пользователя.
- Политика безопасности контента (CSP): Динамическая адаптация на лету, чтобы разные браузеры получали разные заголовки CSP.
- Обнаружение подмены User-Agent.
- Способы устранения ошибок в браузере.
- Определение того, просматривают ли пользователи веб-страницы в приложении WebView для Android/iOS.
Кроме того, CH сокращает область сбора цифрового отпечатка настолько, насколько это возможно. И тогда обнаружение мошенничества с рекламой, аналитика, поддержка клиентов и выявление ошибок могут стать намного сложнее.
Например, сейчас можно анализировать рекламные визиты на сайт, сверять поведение пользователей по гео, ОС, марке устройств и выявлять общие паттерны. Что, если передача таких данных прекратится? Организации больше не смогут использовать широкий спектр ценных инструментов.
Можно ли подделать Client Hints?
Злоумышленники могут подделывать Client Hints, прибегая к технологии спуфинга. Однако это труднее сделать, чем манипулировать User-Agent.
Почему так:
- Браузеры проверяют структуру.
- Серверы должны явно запрашивать хинты.
- Некоторые хинты зависят от аппаратного обеспечения (например, модель устройства).
- Механизмы защиты от обнаружения должны последовательно моделировать несколько уровней данных.
Для обычных скриптов подделать хинты клиента не так просто, как изменить один заголовок. Тем не менее, продвинутые инструменты, особенно антидетект-браузеры, используемые в мошенничестве с рекламой и анти-трекеры, способны эмулировать реальную среду и подделывать CH.
Однако это запускает целую цепочку требуемой синхронизации следующих данных:
- User-Agent
- CH-заголовки
- Свойства, предоставляемые JS
- Поведение Canvas/WebGL
- Аппаратные показатели
Если какая-либо деталь не соответствует действительности, антибот‑ и антифрод-системы, применяющие технологию фингерпринтинга, используют эти расхождения между UA и CH для обнаружения ботов.
Можно ли с помощью анализа Client Hints обнаружить бот-трафик
Да, как мы сказали выше, по расхождениям в передаваемых данных. Однако не как единственный метод.
В каких случаях можно использовать:
- Фильтрация спама и обнаружение ботов.
- Блокировка известных ботов и краулеров.
Client Hints — один из сигналов в многослойной системе обнаружения недействительного и вредоносного трафика. Его ценность заключается именно в перекрёстной проверке с другими параметрами.
По каким параметрам можно определить бота
Ниже приведены лишь возможные способы обнаружения, которые зависят от способностей ботов и используемых технологий в подмене CH и данных.
Полное отсутствие Client Hints
В Chromium-браузерах по умолчанию отправляются некоторые базовые подсказки, а дополнительные передаются по запросу сервера. Если бот построен на HTTP-библиотеке, он сможет подделать UA-строку, но CH не отправит, так как потребуется синхронизация множества данных.
Несогласованность между UA и Client Hints
| Сигнал | Пример аномалии | Что это значит |
|---|---|---|
| Версия браузера | UA: Chrome/120, а Sec-CH-UA содержит «Chromium»;v=»114″ | Забыли синхронизировать при подмене |
| Платформа | UA: Windows NT 10.0, а Sec-CH-UA-Platform: «macOS» | Ручная подмена одного из источников |
| Мобильность | UA содержит Mobile, а Sec-CH-UA-Mobile: ?0 | Конфликт |
Невалидные значения
Windows использует версии вида 10.0.0, 13.0.0, 14.0.0 и т. д. Если сервер получил ответ с версией 15.1 для Windows, то есть формат версионности macOS, то это будет говорить о фроде.
Поведение при Critical-CH
Сервер может отправить запрос:
Accept-CH: Sec-CH-UA-Full-Version-List
Critical-CH: Sec-CH-UA-Full-Version-List
Critical-CH заставляет реальный браузер повторить запрос с добавленными хинтами.
Браузер должен повторно отправить запрос, если критичные хинты не были переданы в исходном запросе:
Запрос 1 → без Sec-CH-UA-Full-Version-List
Ответ: 200 + Accept-CH + Critical-CH
Запрос 2 (автоматический retry) → с Sec-CH-UA-Full-Version-List
Простой бот:
Запрос 1 → без Sec-CH-UA-Full-Version-List
Ответ: 200 + Accept-CH + Critical-CH
(бот не знает про Critical-CH → retry не происходит)
Сложности в обнаружении ботов с помощью CH
Технологии фрода эволюционируют вместе с развитием AdTech-платформ и других инструментов. Когда анализ только Client Hints будет бессилен:
- Боты работают через качественные антидетект-браузеры, такие как Multilogin, GoLogin и аналоги на реальном Chromium, подменяют UA, CH-заголовки и JS API согласованно — по одним CH их не поймать.
- Боты на реальном Chrome (Puppeteer, Playwright) будут отправлять валидные CH.
- Client Hints работают только через защищенное HTTPS-соединение, то есть без него работать не будут.
- Значения могут быть чувствительны к регистру.
- Целевые атаки отражать сложнее, так как подготовленный атакующий изучит, какие CH проверяет сервер, и подготовит корректные ответы.
- Firefox и Safari-трафик — эти браузеры не поддерживают CH, поэтому для их анализа метод неприменим.
- Начиная с версии 116, Android WebView поддерживает User-Agent Client Hints, но только для приложений, которые отправляют стандартную строку User-Agent. Пустые Sec-CH-UA, Sec-CH-UA-Platform, Sec-CH-UA-Mobile — норма для WebView.
Client Hints дают ценность в обнаружении ботов именно в комбинации с остальными слоями. Расхождение CH с TLS-фингерпринтом или JS API — надёжный сигнал. Сами по себе CH — необходимый, но недостаточный инструмент.
Что делать и как защитить сайт от бот-трафика?
Для защиты сайтов от недействительного трафика, бот-накруток и спама используйте комплексные инструменты и антифрод-системы. Помимо цифрового отпечатка они анализируют весь профиль пользователя, включая поведенческие метрики. Это актуально и при атаках примитивных ботов, и при использовании модифицированных антидетект-браузеров.
Защитите сайт от ботов с помощью современной антибот-системы «Ботфактор». Попробуйте бесплатно на 7 дней. Подробнее →