User-Agent и, соответственно, от navigator.userAgent в js API страницы. Начиная с выпуска М81 разработчики будут получать предупреждения в консоли при попытке обратиться к этому полю.
В замен будет использоваться продвинутая система User-Agent Client Hints (UA-CH). Черновик котрой родился в переписке рабочей группы w3c по вопросам HTTP (ietf-http-wg@w3.org). На сегодняший день спецификация не имеет статуса стандарта или рекомендации. Это просто наработка инкубатора w3c.
Что предлагает эта спецификация?
Сейчас при запросе любого HTTP ресурса клиент отправляет с каждым своим запросом заголовок User-Agent. например так:
"Mozilla/5.0 (X11; Linux x86_64)
AppleWebKit/537.36 (KHTML, like Gecko)
Ubuntu Chrome/79.0.3945.117
Safari/537.36"
Достаточно много информации, часть из которой не корректна. Более того, информации достаточно для детального фингерпринтинга клиентов.
Вместо этого рабочая группа предлагает другой протокол. При первом запросе клиент отправляет свое только название и мажорную версию.
Sec-CH-UA: "Chrome 74"
Важно отметить, что все взаимодействие происходит только по закрытому каналу связи. Для HTTP без SSL поддержка CH-UA должна быть отключена.
Сервер отвечает заголовком Accept-CH: в котором перечисляет все данные о клиенте, которые его интересуют. Например:
Accept-CH: UA, UA-Platform, UA-Arch
и получает в ответ:
Sec-CH-UA: "Chrome 74.0.3424.124"
Sec-CH-UA-Platform: "macOS 12"
Sec-CH-UA-Arch: "ARM64"
Спецификацией предлагается такой набор полей с примерами значений:
- brand (например: "cURL", "Edge", "The World’s Best Web Browser")
- major version (например: "72", "3", or "28")
- full version (например: "72.0.3245.12", "3.14159", or "297.70E04154A")
- platform brand and version (например: "Windows NT 6.0", "iOS 15", or "AmazingOS 17G")
- platform architecture (например: "ARM64", or "ia32")
- model (например: "", or "Pixel 2 XL")
- mobileness (например: ?0 or ?1)
Ботов станет легче пилить и сложнее вычислять
Обсуждают сегодня