Сокращение данных User-Agent
Сокращение данных User-Agent
Сокращение данных User-Agent — широко поддерживаемая инициатива браузеров, направленная на уменьшение объёма конфиденциальной информации, передаваемой в строках user agent (UA).
В этой статье показано, как изменяются строки UA в результате сокращения данных User-Agent, а также объясняется, как при необходимости получить как сокращённую, так и дополнительную информацию UA.
Общие сведения
Строка user agent (UA), доступная в HTTP-заголовке User-Agent и связанных API, таких как Navigator.userAgent, Navigator.appVersion и Navigator.platform, позволяет серверам и сетевым узлам определять приложение, операционную систему, производителя и/или версию запрашивающего user agent.
Определение браузера
Теоретически строка UA полезна для определения браузера и предоставления кода, позволяющего обойти специфичные для браузера ошибки или отсутствие поддержки функций. Однако этот способ ненадёжен и не рекомендуется:
- В будущих версиях браузеров ошибки будут исправляться, а поддержка новых функций — добавляться. Поэтому код определения браузера придётся регулярно обновлять, чтобы не исключить браузеры, которые действительно поддерживают проверяемые функции. Гораздо надёжнее использовать определение функций.
- Нет никаких гарантий, что user agent, указанный этим свойством, действительно соответствует браузеру, в котором загружен ваш сайт. Производители браузеров могут делать со строкой UA практически всё что угодно, и исторически они возвращали фиктивные значения для подобных свойств, чтобы некоторые сайты не блокировали доступ.
- Некоторые браузеры позволяют пользователям изменять значение этого поля (подмена UA).
Для обхода ошибок и различий в поддержке браузерами существуют гораздо более надёжные подходы:
- Определение функций: проверка поддержки функции, а не версии браузера.
- Постепенное улучшение: предоставление базового набора необходимого содержимого и функций как можно большему числу пользователей с одновременным обеспечением наилучшего взаимодействия в браузерах, способных выполнять весь необходимый код.
Подробнее о том, почему предоставление разного содержимого разным браузерам обычно является плохой идеей, см. в статье Определение браузера с помощью user agent.
Вопросы конфиденциальности
Кроме того, сведения, раскрываемые в строке UA, исторически вызывали опасения по поводу конфиденциальности: их можно использовать для идентификации конкретного user agent, а значит, и для снятия цифрового отпечатка.
Чтобы снизить эти риски, поддерживающие эту функцию браузеры сокращают данные user agent: обновляют заголовок User-agent и связанные API, предоставляя меньше информации.
Изменения строки UA после сокращения
В поддерживающих эту функцию браузерах сокращение данных User-Agent удаляет из строки UA три типа сведений: точную версию платформы/ОС, модель устройства и младшую версию браузера.
Рассмотрим пример, чтобы увидеть, как это выглядит. Раньше строка UA для Chrome на Android могла выглядеть так:
Mozilla/5.0 (Linux; Android 16; Pixel 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.12.45 Mobile Safari/537.36
После обновления, сокращающего данные User-Agent, она выглядит так:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36
В разделах ниже подробнее описаны изменения строки UA.
Версия платформы/ОС и модель устройства
Версия платформы и модель устройства всегда представлены фиксированными значениями:
-
Android 10; Kна Android. -
Macintosh; Intel Mac OS X 10_15_7на macOS. -
Windows NT 10.0; Win64; x64на Windows. -
X11; CrOS x86_64 14541.0.0на ChromeOS. -
X11; Linux x86_64на Linux.
Младшая версия браузера
Номер основной версии браузера указывается верно, но номера младших версий всегда отображаются как нули — 0.0.0.
Запрос сведений UA с помощью клиентских подсказок
Возможно, в вашем коде всё ещё используются подробные данные строки UA, которые нельзя заменить определением функций или постепенным улучшением. Например, это может быть детализированное ведение журналов, меры по предотвращению мошенничества или сайт со справочными материалами по программному обеспечению, который показывает разное содержимое в зависимости от типа устройства пользователя.
В таком случае подробные данные строки UA всё ещё можно получить с помощью заголовков Sec-CH-UA-* (также известных как клиентские подсказки User-Agent). Эти заголовки обеспечивают более безопасный способ передачи такой информации с лучшей защитой конфиденциальности: серверы должны явно запрашивать нужные им сведения, вместо того чтобы они постоянно передавались в строке User-Agent. Кроме того, этот способ предоставляет доступ к более широкому набору сведений.
Подробнее см. в статье Клиентские подсказки User-Agent.
Доступ к клиентским подсказкам через JavaScript
API клиентских подсказок User-Agent позволяет получать сведения из клиентских подсказок с помощью JavaScript. Свойство Navigator.userAgentData предоставляет доступ к объекту NavigatorUAData, содержащему свойства с низкоэнтропийными клиентскими подсказками.
Чтобы получить высокоэнтропийные подсказки, например Sec-CH-UA-Model и Sec-CH-UA-Form-Factors, необходимо использовать метод NavigatorUAData.getHighEntropyValues().
Подробнее см. в статье API клиентских подсказок User-Agent.
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/User-agent_reduction