Статьи и сравнения

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 отправляют с каждым запросом три подсказки с низкой энтропией:

В списке брендов есть еще намеренно странная запись вроде "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?
Да. Полная проверка браузера SpoofLens показывает Client Hints, которые отправил ваш браузер, рядом со значениями из JavaScript.
Усложняют ли Client Hints отпечатки?
Немного: по умолчанию отправляется меньше, а запрос на большее виден. Но сайт, который просит все подробные подсказки, все равно получает подробные данные.
Строка User-Agent исчезнет?
Нет. Она по-прежнему отправляется, только с меньшей детализацией в браузерах на Chromium. Многие сайты и инструменты до сих пор на нее полагаются.

Читайте также