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 ответов

11 просмотров

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта