API подсказок клиента User-Agent
Экспериментально: Это экспериментальная технология
Перед использованием в продакшене внимательно ознакомьтесь со таблицей совместимости с браузерами.
API подсказок клиента User-Agent расширяет Client Hints, предоставляя способ отображения информации о браузере и платформе через заголовки ответа и запроса User-Agent, а также JavaScript API.
Концепции и использование
В прошлом получение информации о браузере или устройстве пользователя осуществлялось путем парсинга строки User-Agent. Типичная строка User-Agent выглядит следующим образом, идентифицируя Chrome 92 на Windows:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
User agent Client Hints нацелены на предоставление этой информации более безопасным для конфиденциальности способом, применяя модель, в которой сервер запрашивает набор информации. Браузер принимает решение о том, что возвращать. Этот подход означает, что user-agent может предоставлять настройки, которые позволяют пользователю скрывать часть информации, которая могла бы идентифицировать его при таких запросах.
Для принятия решения о возвращаемой информации, данные, доступные через этот API, разделены на две группы — подсказки с низкой энтропией и высокой энтропией. Подсказки с низкой энтропией — это те, которые не раскрывают много информации, API предоставляет к ним легкий доступ при каждом запросе. Подсказки с высокой энтропией могут раскрывать больше информации и поэтому ограничены таким образом, что браузер может принять решение о том, предоставить их или нет. Это решение может быть основано на предпочтениях пользователя или запросе разрешения.
Сценарии использования подсказок клиента User-Agent
Возможные сценарии использования включают:
- Предоставление настраиваемых полифиллов пользователям, определяющим, что их браузеру не хватает некоторых функций веб-платформы.
- Обход ошибок браузера.
- Запись аналитики браузера.
- Адаптация контента на основе информации о user-agent. Это включает предоставление разного контента для мобильных устройств, в частности, для устройств, определённых как маломощные. Это может также включать адаптацию дизайна для настройки интерфейсов под ОС пользователя или предоставление ссылок на специфичные для ОС.
- Предоставление уведомления, когда пользователь входит в систему с другого браузера или устройства, как функция безопасности.
- Предоставление правильного исполняемого файла на сайте, предлагающем загрузку.
- Сбор информации о браузере и устройстве для выявления ошибок приложения.
- Блокировка спамеров, ботов и веб-краулеров.
Интерфейсы
-
Предоставляет свойства и методы для доступа к данным о браузере и операционной системе пользователя.
Расширения других интерфейсов
-
Возвращает объект
NavigatorUAData, который предоставляет доступ к информации о браузере и операционной системе пользователя. -
Возвращает объект
NavigatorUAData, который предоставляет доступ к информации о браузере и операционной системе пользователя.
Примеры
Получение брендов
Следующий пример выводит значение NavigatorUAData.brands в консоль.
console.log(navigator.userAgentData.brands);
Возврат значений высокой энтропии
В следующем примере с помощью метода NavigatorUAData.getHighEntropyValues() запрашивается ряд подсказок. При разрешении обещания эта информация выводится в консоль.
navigator.userAgentData
.getHighEntropyValues([
"architecture",
"model",
"platform",
"platformVersion",
"fullVersionList",
])
.then((ua) => {
console.log(ua);
});
Спецификации
| Спецификация |
|---|
| User-Agent Client Hints |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
User-Agent_Client_Hints_API |
90 | 90 | Нет | 76 | Нет | 90 | Нет | 64 | Нет | 15.0 | Нет |
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
User-Agent_Client_Hints_API |
90 | 90 | Нет | 76 | Нет | 90 | Нет | 64 | Нет | 15.0 | 119 |
secure_context_required |
90 | 90 | Нет | 76 | Нет | 90 | Нет | 64 | Нет | 15.0 | 119 |
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
User-Agent_Client_Hints_API |
90 | 90 | Нет | 76 | Нет | 90 | Нет | 64 | Нет | Нет | Нет |
brands |
90 | 90 | Нет | 76 | Нет | 90 | Нет | 64 | Нет | Нет | Нет |
getHighEntropyValues |
90 | 90 | Нет | 76 | Нет | 90 | Нет | 64 | Нет | Нет | Нет |
mobile |
90 | 90 | Нет | 76 | Нет | 90 | Нет | 64 | Нет | Нет | Нет |
platform |
93 | 93 | Нет | 79 | Нет | 93 | Нет | 66 | Нет | Нет | Нет |
toJSON |
93 | 93 | Нет | 79 | Нет | 93 | Нет | 66 | Нет | Нет | Нет |
api.NavigatorUAData
Таблицы BCD загружаются только в браузере
api.Navigator.userAgentData
Таблицы BCD загружаются только в браузере
api.WorkerNavigator.userAgentData
Таблицы BCD загружаются только в браузере
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/User-Agent_Client_Hints_API