169 похожих чатов

Разработчики браузера Chromium заявили о намерении отказаться от поддержки HTTP-заголовка

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)

1 ответов

14 просмотров

Ботов станет легче пилить и сложнее вычислять

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта