标签: client-hints

为什么 Chrome 使用 sec-ch-ua: "\"Not\\A;Brand";v="99"?

我知道使用户代理提示更加模糊的部分目的是为了使浏览器指纹识别更加困难。

我自己的(Windows 桌面)Chrome 发送标头:

user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
sec-ch-ua: "Chromium";v="86", "\"Not\\A;Brand";v="99", "Google Chrome";v="86"
sec-ch-ua-mobile: ?0
Run Code Online (Sandbox Code Playgroud)

我不明白的是:

  1. 为什么特别是字符串“Not A Brand”?还有其他人使用这个伪 UA 吗?这是某种玩笑吗?
  2. 为什么\"\\A;里面的字符串?我唯一的猜测是,这应该以某种方式与解析器混淆(就像 CSS 中的反 IE 黑客),但这似乎是一个相当奇怪的目的——而 IIRC,\A就是钟形字符。
  3. 鉴于它还发送user-agent具有特定版本号的完整标头,这应该如何实现用户代理提示歧义?
  4. 同时:为什么 Chrome 的用户代理还声称是 Mozilla、AppleWebKit 和 Safari?不是,而且这个user-agent字符串是 Chrome 特有的。它是否有来自其他浏览器的某种嵌入式组件?

user-agent privacy google-chrome client-hints

39
推荐指数
1
解决办法
2万
查看次数

尽管禁用了“实验性 Web 平台功能”,为什么 Chrome 仍发送 sec-ch-ua 和 sec-ch-ua-mobile 请求标头

我遇到了 Chrome 的情况,经过测试87.0.4280.88,在某些情况下 Chrome 会发送sec-ch-uasec-ch-ua-mobile请求标头,尽管chrome://flags/#enable-experimental-web-platform-features设置为“禁用”。

例如:

sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
sec-ch-ua-mobile: ?0
Run Code Online (Sandbox Code Playgroud)

发生这种情况时,摆脱这些标头的唯一方法是使用参数启动 Chrome --disable-features=UserAgentClientHint

有人对此有解释吗?据我了解,这些功能仍处于实验阶段,规范正在进行中(https://wicg.github.io/ua-client-hints/)。

browser google-chrome http-headers client-hints

12
推荐指数
1
解决办法
1万
查看次数

哪些 Accept-CH 值相当于用于识别浏览器的 User-Agent?

Chrome 计划于2020 年 6 月弃用并冻结其User-Agent标头。 User-Agent在调试日志中的某些错误时非常有用,因为许多浏览器根据版本的不同而有不同的怪癖。User-Agent已被弃用,取而代之的是Accept-CHSec-CH-UA-*

我需要在Accept-CH中输入哪些值才能使浏览器响应以下用户代理信息?附带的Sec-CH-UA-*标头是什么?

  • 浏览器名称和版本。
  • 操作系统名称和版本。
  • 架构(32/64 位 x86、ARM 等)。
  • 是移动的。

browser user-agent google-chrome http-headers client-hints

4
推荐指数
1
解决办法
1814
查看次数