Chrome продолжает сокращать объем информации, передаваемой в строке пользовательского агента, чтобы защитить конфиденциальность пользователя.
Начиная с Chrome 110 (февраль 2023 г.) мы постепенно вводим фиксированное значение для версии Android и модели устройства — на модели K
значением по умолчанию всегда будет Android 10
. Если вы полагаетесь на пользовательский агент для определения версии операционной системы посетителя, модели устройства Android или подробной версии браузера, вам, возможно, придется принять меры — подробности читайте дальше.
Пользовательский агент — это строка, которая предоставляет информацию о браузере пользователя и его среде, например, о том, что посетитель вашего сайта использует Chrome версии 110 на Android. Ваш браузер отправляет это в HTTP-заголовке и делает его доступным через JavaScript.
Проблема с полной строкой пользовательского агента заключается в том, что она по умолчанию передает подробную информацию о браузере при каждом запросе , что является основным фактором, позволяющим осуществлять межсайтовое отслеживание. Наша цель — сократить возможности пассивного сбора этих данных, одновременно предоставляя API, позволяющие вам активно получать доступ к данным, когда они вам нужны.
Сокращение пользовательского агента на данный момент
Мы уже начали удалять некоторые данные пользовательского агента, доступные по умолчанию, и заменять их фиксированными значениями.
В Chrome 101 мы заменили дополнительный номер версии нулями, например Chrome/101 .3.2.1 стал Chrome/101 .0.0.0 .
В Chrome 107 мы заменили версию операционной системы для настольных компьютеров и информацию о процессоре фиксированным значением для платформы.
Мак | ➡ | Макинтош; Intel Mac OS X 10_15_7 |
Окна | ➡ | Windows НТ 10.0; Вин64; х64 |
ChromeOS | ➡ | Х11; КрОС x86_64 14541.0.0 |
Линукс | ➡ | Х11; Linux x86_64 |
Исправлена версия Android и модель устройства, начиная с Chrome 110.
Начиная с Chrome 110, мы постепенно вводим фиксированное значение для версии Android и модели устройства . Вместо того, чтобы видеть что-то вроде Android 13
на Pixel 7
значением по умолчанию всегда будет Android 10
на модели K
Mozilla/5.0 (Linux; Android 13 ; Pixel 7 ) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/95.0.0.0 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 10 ; K ) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/95.0.0.0 Mobile Safari/537.36
Никаких изменений в формате пользовательского агента.
Сокращение пользовательского агента изменяет значения, возвращаемые в пользовательском агенте, но формат остается прежним. Если вы используете пользовательский агент только для считывания типа операционной системы или основной версии браузера, эти данные будут продолжать обновляться, как и раньше, и вам не нужно предпринимать никаких действий .
Альтернативы пользовательскому агенту
Если вы в настоящее время используете более подробные данные, всегда полезно проверить, можете ли вы вместо этого использовать прогрессивное улучшение или обнаружение функций .
Всегда помните, что пользовательский агент аналогичен любому другому значению, предоставленному пользователем — вы должны проверить его, а не предполагать, что оно точное. Значение user-agent может быть легко изменено пользователем, расширениями и другими клиентами или может просто не отправляться вообще. В большинстве случаев вы сможете доставлять работающий контент посетителям без данных пользовательского агента .
Запросите подробные данные с помощью подсказок клиента User-Agent.
Существует множество веских причин для доступа к подробным данным пользовательского агента, например предоставление контента для конкретного устройства, функции защиты от мошенничества или детальное ведение журналов. Если вам нужны более подробные данные, вы можете использовать API User-Agent Client Hints (UA-CH) для доступа к ним. Как и пользовательский агент, UA-CH доступен через заголовки HTTP или JavaScript.
Возможно, вы уже видели, что заголовки по умолчанию отправляются с префиксом Sec-CH-UA-
, который сообщает вам браузер, его основную версию, операционную систему и является ли браузер мобильным устройством.
⏫ Заголовки запросов клиента User-Agent по умолчанию из Chrome:
Sec-CH-UA: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"
Вы можете использовать заголовок Accept-CH
в своем ответе, чтобы запросить дополнительные данные. В этом случае вы можете запросить Sec-CH-UA-Platform-Version
и Sec-CH-UA-Model
чтобы получить эту версию Android и тип устройства обратно в последующих запросах.
⏬ Заголовок ответа от вашего сервера с указанием версии и модели платформы:
Accept-CH:
Sec-CH-UA-Platform-Version,
Sec-CH-UA-Model
⏫ Запросите заголовки обратно из Chrome, включая версию Android и название модели:
Sec-CH-UA-Platform-Version: "13.0.0"
Sec-CH-UA-Model: "Pixel 7"
Вы можете сделать то же самое в JavaScript, вызвав getHighEntropyValues()
в API userAgentData
, передав массив нужных вам значений: platformVersion
и model
. Это возвращает обещание с объектом, содержащим определенные значения.
navigator.userAgentData
.getHighEntropyValues(
['platformVersion', 'model']
).then(ua => { console.log(ua)
});
{
"platformVersion": "13.0.0",
"model": "Pixel 7"
}
Перекрестное происхождение или первоначальные запросы
Если на вашей странице есть ресурсы с перекрестным происхождением, которым нужны эти значения, вы можете разрешить доступ через HTTP-заголовок Permissions-Policy
или с помощью метатега Delegate-CH
в своем HTML.
Если вашему сайту необходимо иметь эти конфиденциальные значения в самом первом запросе верхнего уровня, вы можете использовать HTTP-заголовок Critical-CH
, который сообщит браузеру повторить первоначальный запрос с добавлением этих дополнительных подсказок. Это может быть полезно для устаревших систем, которые сложно обновлять, но в идеале вам не следует полагаться на эти конфиденциальные значения для обслуживания исходного HTML.
Узнать больше
Чтобы увидеть сокращенную строку пользовательского агента в действии, проверьте следующее:
- См. сокращенную строку пользовательского агента для вашего устройства на странице goo.gle/reduced-ua-demo.
- Посмотреть все подсказки для клиента User-Agent в заголовках JavaScript и HTTP для вашего устройства можно на странице goo.gle/ua-ch-demo.
- Отправьте сокращенную строку пользовательского агента в свой браузер, включив флаг Chrome
#reduce-user-agent
.
Вы также можете зарегистрироваться для участия в пробной версии User Agent Reduction Origin, чтобы получить сокращенный пользовательский агент на своем сайте, хотя мы завершим эту пробную версию в начале марта, поскольку мы продолжаем наращивать отправку сокращенного пользовательского агента по умолчанию.
У нас есть больше ресурсов на целевой странице сокращения пользовательского агента , и вы также можете поднять вопросы в нашем специальном репозитории GitHub, посвященном сокращению пользовательского агента .