User-Agent Client Hints 与 UA 缩减
基于 Chromium 的浏览器发送缩减版 User-Agent 字符串:最能精确识别设备的细节被冻结为固定值,精确数据则转移到了 User-Agent Client Hints(UA-CH)中,网站必须主动请求才能获得。本指南将 Android 上 Chrome 的旧版字符串与缩减版字符串并排解析。
实例解析
Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36
- 浏览器
- Chrome 99.0.4844.88
- 渲染引擎
- Blink
- 操作系统
- Android 12
- 设备类型
- 移动
- 设备
- Samsung SM-G991B
- CPU 架构
- 未知
- 机器人 / 爬虫
- 否
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
- 浏览器
- Chrome 120.0.0.0
- 渲染引擎
- Blink
- 操作系统
- Android 10
- 设备类型
- 移动
- 设备
- K
- CPU 架构
- 未知
- 机器人 / 爬虫
- 否
旧版字符串暴露了 Android 12、Samsung 机型 SM-G991B 和完整版本号 99.0.4844.88。在缩减版字符串中,Android 10 和机型 K 都是每台 Android 设备都会发送的占位值,版本号以 .0.0.0 结尾。解析器如实报告字符串内容——Android 10、机型 K——因此只有主版本号 120 和 Mobile 标识仍带有真实信息。
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List
关键规则
- 缩减版 Chrome 字符串只保留主版本号;次版本号、构建号和补丁号始终为 0.0.0。
- 在 Android 上,操作系统版本固定为 10,设备型号被替换为 K。在桌面端,平台被冻结为 Windows NT 10.0; Win64; x64、Macintosh; Intel Mac OS X 10_15_7 或 X11; Linux x86_64 等值。
- 通过 HTTPS 访问时,Chromium 浏览器默认发送三个低熵提示:Sec-CH-UA(品牌和主版本号)、Sec-CH-UA-Mobile 和 Sec-CH-UA-Platform。
- Sec-CH-UA-Platform-Version、Sec-CH-UA-Model 和 Sec-CH-UA-Full-Version-List 等详细提示,只有在服务器通过 Accept-CH 响应标头请求后才会发送。在 JavaScript 中,请使用 navigator.userAgentData.getHighEntropyValues()。
- 品牌列表中包含一个故意伪造的“GREASE”条目,例如“Not_A Brand”。请查找所需的品牌,而不是比较整个标头。
- Windows 11 在 User-Agent 字符串中仍发送 Windows NT 10.0;Sec-CH-UA-Platform-Version 为 13.0.0 或更高即表示 Windows 11。
- Client Hints 是 Chromium 的功能,因此请为其他浏览器保留基于 User-Agent 的回退方案。本解析器只读取 User-Agent 字符串,不读取 Client Hints。