Ботфактор

Client Hints: что это, чем отличается от User-Agent и как его используют в антифроде

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 дней. Подробнее →

Об авторе

Редакция Botfaqtor

Пишем о ботах и кибербезопасности

Просмотреть все сообщения

Добавить комментарий