Подготовьтесь к сокращению пользовательского агента Chrome

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

До: пользовательский агент включает версию Android и модель устройства.

Mozilla/5.0 (Linux; Android 13 ; Pixel 7 ) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/95.0.0.0 Mobile Safari/537.36

После: уменьшенный пользовательский агент с фиксированной версией Android и моделью устройства.

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, посвященном сокращению пользовательского агента .