User-Agent Client Hints: что пришло на смену строке User-Agent
Годами строка User-Agent сообщала каждому сайту точную версию браузера, операционную систему, а часто и модель устройства. Браузеры на Chromium ее урезали и перенесли эти детали в User-Agent Client Hints: набор HTTP-заголовков и JavaScript API, которые по умолчанию раскрывают меньше, а больше только по запросу.
Проверьте свой браузер прямо сейчас
Проверяю браузер…
Почему User-Agent урезали
Полная строка User-Agent была готовым отпечатком и отправлялась с каждым запросом, нужна она сайту или нет. Chrome завершил сокращение в 2023 году: младшие номера версии теперь нули, версия Windows всегда показывается как Windows NT 10.0, а модели Android-устройств скрыты. Детали не исчезли, они переехали в Client Hints, где сайт должен о них попросить.
Что отправляется по умолчанию
Без запроса браузеры на Chromium отправляют с каждым запросом три подсказки с низкой энтропией:
- Sec-CH-UA: список брендов и старших версий, например Google Chrome и Chromium.
- Sec-CH-UA-Mobile: ?1 на телефонах, ?0 в остальных случаях.
- Sec-CH-UA-Platform: название операционной системы, например "Windows" или "Android".
В списке брендов есть еще намеренно странная запись вроде "Not(A:Brand". Она меняется между версиями, чтобы сайты разбирали список правильно, а не искали фиксированные строки.
Подробные подсказки
Больше деталей доступно по запросу: точная версия платформы, архитектура и разрядность процессора, модель устройства и полная версия каждого бренда. Сервер просит их заголовком ответа Accept-CH и получает в следующих запросах; скрипт получает их через navigator.userAgentData.getHighEntropyValues(). Так, например, надежно отличают Windows 11 от Windows 10: в Windows 11 версия платформы начинается с 13.
Какие браузеры их поддерживают
Chrome, Edge, Opera, Brave и другие браузеры на Chromium. Firefox и Safari Client Hints не реализуют, поэтому для них сайтам до сих пор приходится читать строку User-Agent. Отсутствие подсказок у Firefox и Safari нормально и ничего не говорит о подделке.
Почему Client Hints помогают заметить подделку
Одни и те же факты теперь есть в нескольких местах: заголовок User-Agent, заголовки Sec-CH-UA, navigator.userAgent и navigator.userAgentData на странице, а также те же значения внутри Web Worker. Настоящий браузер держит их согласованными. Инструменты подделки часто меняют строку User-Agent и забывают про подсказки или меняют значения в JavaScript, но не заголовки.
Проверка SpoofLens сравнивает все это: версию браузера в User-Agent и в Client Hints, платформу, которую называет каждый источник, сходятся ли они насчет мобильного устройства и совпадает ли заголовок Sec-CH-UA-Platform с тем, что сообщает JavaScript. Каждое расхождение показывается с объяснением.
Для владельцев сайтов
- Читайте Client Hints для браузеров на Chromium, а для остальных используйте строку User-Agent.
- Запрашивайте только те подробные подсказки, которые действительно используете: каждая добавляет идентифицирующих деталей.
- Не считайте отсутствие подсказок у Firefox или Safari подозрительным.
- Расхождение между User-Agent и подсказками считайте сигналом риска, а не доказательством.
Частые вопросы
- Можно ли увидеть свои Client Hints?
- Да. Полная проверка браузера SpoofLens показывает Client Hints, которые отправил ваш браузер, рядом со значениями из JavaScript.
- Усложняют ли Client Hints отпечатки?
- Немного: по умолчанию отправляется меньше, а запрос на большее виден. Но сайт, который просит все подробные подсказки, все равно получает подробные данные.
- Строка User-Agent исчезнет?
- Нет. Она по-прежнему отправляется, только с меньшей детализацией в браузерах на Chromium. Многие сайты и инструменты до сих пор на нее полагаются.
Читайте также
- Отпечаток браузера: что это такое и как он работает
- Как сайты обнаруживают ботов и автоматизированные браузеры
- Отпечатки canvas, WebGL и аудио: как они работают
- Утечка WebRTC: что это такое и как проверить свой браузер
- Часовой пояс против IP: почему сайты замечают ваш VPN
- Как сайты распознают антидетект-браузеры