1. 浏览器指纹中的 Client Hints 是什么?
Client Hints (CH) 是一种基于 HTTP 的机制,允许网站直接从客户端请求特定的设备和浏览器属性,补充(或替换)传统的User-Agent字符串解析。
自 Chrome、Firefox 和 Edge 逐步弃用完整 User-Agent 字符串以来,Client Hints 已成为主要指纹来源,暴露诸如以下数据点:
- 设备型号与品牌 (
Sec-CH-UA-Model,Sec-CH-UA-Platform) - 浏览器版本与供应商 (
Sec-CH-UA,Sec-CH-UA-Full-Version-List) - 屏幕尺寸 (
Sec-CH-Viewport-Width,Sec-CH-Width) - 首选语言与编码 (
Sec-CH-Lang,Sec-CH-Prefers-Reduced-Motion) - 硬件状态 (
Sec-CH-Save-Data,Sec-CH-DPR用于显示像素比率)
与 User-Agent 不同,Client Hints 需要明确的服务器许可(通过 Accept-CH 标头),浏览器才会发送它们——尽管如此,许多侵犯隐私的脚本仍通过 JavaScript 或 iframe 技巧强制其发送。
2. 平台如何检测并使用 Client Hints 进行指纹识别
现代反机器人和欺诈检测系统主动探测 Client Hints 以构建高熵指纹,检查诸如以下异常:
- 版本不一致
Sec-CH-UA与User-Agent字符串不匹配- 不可能的浏览器/OS 组合(例如,Chrome 120 在 Windows 7 上)
- 标头时序攻击
- 检测延迟或缺失的标头(伪装中间件的迹象)
- 跨会话比较
Accept-CH许可
- 硬件/软件相关性
Sec-CH-UA-Model与navigator.hardwareConcurrencySec-CH-DPR与window.devicePixelRatio
- 强制 Client Hints 提取
- 使用
<iframe>或带有importance: 'high'的fetch()绕过隐私限制 - 记录默认 vs. 覆盖的提示以检测 VM/容器化环境
Client Hints 对匿名性特别危险,因为它们绕过了传统的 User-Agent 伪装工具——需要深度浏览器集成才能令人信服地操纵。
3. FlashID 如何控制 Client Hints 指纹
FlashID 为用户提供对 Client Hints 标头的细粒度控制,确保每个浏览器配置文件:
✔️ 仅发送许可的提示(匹配其指纹配置文件)
✔️ 保持跨 API 一致性(例如,JS 与 HTTP 标头)
✔️ 通过许可掩码阻止强制提示提取
关键伪装功能包括:
➠ 1. Client Hints 白名单
- 按配置文件选择暴露哪些
Sec-CH-*标头 - 使用
Accept-CH和Critical-CH模拟合法提示协商
➠ 2. 动态标头生成
- 自动生成匹配浏览器版本、OS 和设备类型的
Sec-CH-UA-*字符串 - 将
Sec-CH-Viewport-Width与实际窗口尺寸同步(调整大小时)
➠ 3. 反检测保护
- 通过 JS/iframe 注入阻止强制提示提取
- 模拟自然的标头发送延迟(~100-300ms)以规避时序检查
➠ 4. 硬件/软件对齐
- 强制以下一致性:
Sec-CH-DPR↔devicePixelRatioSec-CH-UA-Model↔navigator.userAgentDataSec-CH-Width↔screen.width
通过在网络层精确覆盖 Client Hints,FlashID 击败下一代指纹识别,同时允许在依赖这些信号进行欺诈评分平台上安全使用多账户。
您可能还喜欢

