浏览器指纹检测衡量的是什么
审计衡量的是一致性:浏览器中相互独立的各个子系统,对同一台机器给出的答案是否相容。它可以把 JavaScript 与 CSS 对比,把主页面与 worker 或 iframe 对比,把声称的浏览器家族与只有特定引擎才具备的 API 对比,还可以把报告的 GPU 与实际生成图像的渲染管线对比。
这与衡量稀有度不同。一台少见但内部一致的设备可以通过;一个看起来很常见的身份,只要有两处信号相互矛盾,就可能不通过。因此,大多数检查项都不需要群体基线:比较的双方都由浏览器自己提供。
一致性得分如何计算
得分是适用且计分的检查项中结果一致的比例。它不是访客为真人的概率,不是检出率,也不能保证自动化会话不可见。得分 92 表示:在适用且计分的比对中,有 92% 是一致的。
情境性发现不计入得分,因为普通环境也会产生它们:无障碍工具、扩展程序、远程桌面、受策略管理的浏览器、隐私保护措施以及缺失的硬件,都会改变可观测的信号。无法运行的检查会报告为“未测量”,绝不会计为通过。
为什么有些测量需要网络探针
JavaScript 无法读取 TLS ClientHello、HTTP/2 帧顺序、QUIC 传输参数,也读不到 WebRTC 使用的公网地址。这些信息位于页面运行时之下,要测量它们,必须由服务器报告实际经网络到达的内容。
审计会向 tls.clearcotelabs.com 建立两条连接,以比较两次相互独立的 TLS 握手。其 WebRTC 泄漏测试会连接 stun.l.google.com(这意味着 Google 能看到发起连接的 IP),并将该地址与提供审计服务时看到的地址进行比较。任一服务无法访问时,相应结果会标为“未测量”,而不是“干净”。
数据收集与研究语料库
运行审计时,会把一份浏览器特征数据发送给 Clearcote 用于内部分析。运行开始前,工具上的同意声明会列出涉及的字段。独立的研究语料库存储的是一份更粗粒度的配置记录,用于研究覆盖范围和误报;它不是反欺诈或账号信誉数据库。
完整的保留期限、删除方式和逐字段披露见审计隐私政策。把这份政策单独列出,既能让检测页面保持简洁,又不会隐瞒哪些数据离开了浏览器。
公开的浏览器检测无法确定什么
公开页面看不到全局的配置文件年龄、跨站浏览历史、账号信誉、其他源上的私有 Cookie,也看不到商业反机器人系统使用的服务端风险模型。行为输入可以暴露机械化的时序或过于完美的插值,但一次简短的交互并不等于一个训练过的行为分类器。
因此,对高分只能作狭义解读:已运行的测量没有发现太多内部矛盾。至于信誉、意图、账号历史,或生产环境中的检测系统可能综合使用的每一个信号,它都无法给出定论。
有一种情况值得直说,因为它最常被误读:自动化分组中的每一项检查都可能通过,而会话仍然被判定为自动化。在一篇公开发表的、针对某个已部署商业检测脚本的拆解分析中,从一个通过 DevTools 协议驱动的浏览器上捕获的 payload,返回的判定是 webdriver 机器人且检测到开发者工具——而同一个 payload 报告的所有自动化标志都是 false,与普通窗口的区别只在于会话标识符、时钟读数和一个网络时序字段。服务端究竟依据什么做出判定,无法从客户端还原;对于测量不到的东西,本页刻意不为它增加一行。诚实的结论是:是否存在调试协议,是在页面能读取的数值之外判定的。所以,自动化部分干净,只说明这些特定的信号是干净的,并不说明这条连接没有被观察到。
本页之所以只报告若干读数而不为它们打分,原因也来自同一篇拆解分析。完全相同的已捕获 payload,间隔一周重新提交给同一家厂商,得到的“篡改”和“指纹浏览器”判定却有实质差异——原因是模型漂移、重放历史,还是两者兼有,并未区分。线上检测系统给出的绝对分数会漂移;只有在同一会话中相对于对照组测得的差异才有意义。这一点同样适用于本页自己的得分,所以每次运行都会报告你的浏览器给出的答案有多稳定,而不是把单次运行的结果当作基准事实。