浏览器身份表面:一致性实用总览
把 user-agent、client hints、navigator 属性和语言放进有界一致性检查,不收集个人信息。
BotBrowser Team
浏览器身份是相互关联的多个表面,不是一条字符串。本文连接身份主题簇,并在user-agent 简化与 client hints之外增加一致性复核。
BotBrowser 可以将授权 profile 用于重复观察并记录声明的浏览器信号,但不能识别个人、证明唯一性,也不能保证服务接受某个 profile。
要点
- 将 user-agent、client hints、navigator 属性和语言分开观察,再检查关系。
- 同时保存声明输入和观察输出。
- 缺少或被简化的字段是兼容性状态,不是身份结论。
- 不把账号数据或检测评分放进复核产物。
内容
绘制身份表面
user-agent 是旧式请求信号。client hints 是协商的请求元数据,可能被简化或不存在。navigator 属性是页面可见值,有自己的兼容规则。语言和时区表达展示选择,不表达个人身份。
先逐个比较表面,再检查它们的关系。简化策略下缺少 hint 可能是预期行为,不应直接视为不一致。做成对网络复核时,先看代理配置总览和引擎与 API 保护测试,再分配责任。
使用身份主题簇
- user-agent 简化与 client hints解释协商信号。
- client hints 指纹说明隐私边界。
- navigator 属性指纹说明页面可见值,不作身份推断。
- navigator 语言与本地化区分语言和身份。
- 团队账号的浏览器身份边界说明 profile 与账号归属。
本文负责复核顺序和共同术语,链接文章负责各自表面的细节。
执行一致性复核
使用全新受控 profile、自有页面和相同请求顺序,保存脱敏产物:
{
"runId": "identity-review-20261016-01",
"declared": { "browser": "Chrome 155", "locale": "en-US", "timezone": "UTC" },
"observed": {
"userAgent": "reduced-and-recorded",
"clientHints": "declared-or-absent",
"navigator": "recorded",
"language": "en-US"
},
"differences": [],
"testedOn": "2026-10-16"
}
不要加入 cookies、账号标识、完整请求头或检测器回应。产物用于兼容性和排障。
排查不一致
user-agent 和 client hints 不一致时,先检查协商和简化,再修改 profile。navigator 与声明语言不一致时,确认应用是否有意使用 fallback。账号隔离应遵循账号边界文章,不应把浏览器值当作个人身份。
保留第一次观察,标记责任层面,每次只改变一个声明输入。服务自己的策略不属于浏览器产物。
结论
身份一致性是请求信号、页面可见值和展示选择的关系。用本文确定顺序,用主题簇查看细节,并把结论限制在产生观察的受控 profile 和页面内。
来源
下一篇
先读user-agent 简化与 client hints,再按兼容性问题选择四个表面链接。