92

BrowserLeaks指纹检测王牌网站 · 技术架构

BrowserLeaks 的技术架构是一套贯穿协议栈的分层检测体系。网络层由 TCP/IP Fingerprint 承担,实测输出 OS 判定 Windows、MTU 1500、Link Type 为 Ethernet or modem、Distance 21 Hops,以及 JA4T 值 65535_2-1-1-4-1-3_1460_10;传输层覆盖 ClientHello、cipher suites、TLS extensions 与 ECH,产出 JA3 Hash 与 JA4;应用层用 Akamai Hash 刻画 HTTP/2 帧特征,并逐条列出 Sec-CH-UA、Sec-Fetch 系列与 Accept-Encoding;浏览器层则由 Canvas、WebGL、Font、JavaScript API 组成;泄漏面还包括 WebRTC 的 STUN 探测、DNS 与 IPv6。/canvas 页甚至把 PNG 的 IHDR、IDAT、IEND 区块与 CRC 逐块解析,实现深度已经下探到文件字节层。工程上更难的一点是双通道结果的会话关联:TCP 握手、TLS 参数与 HTTP/2 帧特征只能在连接建立时由服务端被动采集,而画布、显卡与字体数据必须由客户端脚本主动上报,站点需要把两侧结果拼接成同一次检测的完整画像,同时还要维护外部探测服务器与注册局数据源。这套后端复杂度远高于普通信息展示型站点。

最值得称道的是它的分层完整性。绝大多数检测站只做浏览器层,能测 Canvas 与 WebGL 就算合格,而 BrowserLeaks 把检测点铺满了整条协议栈。最底层是 TCP/IP Fingerprint,通过被动分析握手包的窗口大小、选项排列、最大报文段长度等参数,推断出操作系统为 Windows、MTU 为 1500、链路类型为 Ethernet or modem、与服务器相距 21 Hops,并压缩成 JA4T 值 65535_2-1-1-4-1-3_1460_10。这一层的关键意义在于:它完全脱离浏览器控制,指纹浏览器再怎么改 JavaScript 环境也影响不了 TCP 握手,只有代理软件的实现方式和中间链路才决定这里的输出。卖家如果发现浏览器层声称是 macOS 而这里判定为 Windows,那就是致命矛盾。

往上一层是 TLS。/tls 页覆盖协议版本、ClientHello 结构、cipher suites 列表、TLS extensions 以及 ECH 支持情况,同时测试混合内容处理;/ip 页的 TLS Fingerprint 模块直接输出 JA4 与 JA3 Hash 两套值。JA3 通过对握手参数排序拼接后取哈希来识别客户端,JA4 则改进了排序与 GREASE 处理,抗干扰能力更强。对做多账号的人来说,这一层是分水岭:真实 Chrome 的 JA3 值是有限几种,而很多自动化工具、二次开发的内核、老旧代理客户端会产生在真实用户中几乎不存在的握手特征,平台只要维护一张常见 JA3 白名单,就能低成本识别出非常规客户端,这比查 Cookie 或 IP 有效得多。

第三层是 HTTP。站点用 Akamai Hash 表达 HTTP/2 指纹,把 SETTINGS 帧参数、窗口更新值、优先级设置与伪头顺序编码成一串可比对的字符串。HTTP Headers 模块则把每一个请求头摊开:Sec-CH-UA 为 “Not_A Brand”;v=“99”, “Chromium”;v=“142”,Sec-CH-UA-Mobile 为 ?0,Sec-CH-UA-Platform 为 “Windows”,User-Agent 为 Mozilla/5.0 (Windows NT 10.0; Win64; x64) 加 Chrome/142.0.0.0 Safari/537.36,Accept-Language 为 en-US,en;q=0.9,Accept-Encoding 为 gzip, deflate, br, zstd,Priority 为 u=0, i,还有完整的 Sec-Fetch-Site、Mode、User、Dest。头字段的顺序、大小写和取值组合本身就是指纹,很多改机工具只改了 User-Agent 字符串,却把 Sec-CH-UA 里的 Chromium 版本号留在原处,两者版本对不上就是明显破绽。

第四层是浏览器与图形层。Canvas 检测的实现深度尤其突出:它不只输出 Signature 062284bbd0ab00fb76e4bf6e18fef42a 与 Uniqueness 100%,还把生成的图像解剖开来,给出 File Size 6840 bytes、Number of Colors 1023,并逐块列出 PNG 的 IHDR、IDAT、IEND 区块的 Length 与 CRC 校验值,图像规格标注为 220×30、8 bits/sample、truecolor+alpha、noninterlaced,同时说明指纹可由 toDataURL 输出的 base64 取 MD5 得到,也可直接取文件末尾倒数第 16 到第 12 字节处 IDAT 区块的 CRC。能做到字节级解析,说明后端不是简单调用现成库,而是自己实现了 PNG 结构解析。WebGL 侧则暴露显卡型号与图形能力,Font 侧通过枚举字体、测量文本与 Unicode 字形尺寸、比对渲染差异来构造指纹。

第五是数据侧的支撑能力。IP 归属判定不是简单查一张免费库:实测对 202.181.17.57 这样一条冷门线路,站点仍能给出 Bangladesh、Dhaka Division、Dhaka 市 Motijheel、ISP 为 Level3 Carrier Limited、Organization 为 Level3 Network AS58682 LEVEL3 CARRIER LIMITED (CARRIER)、Usage Type 为 Corporate / Business、时区 Asia/Dhaka (BST)、坐标 23.7322 与 90.4108 这样一整套字段,Whois 模块还能返回 Source Registry 为 APNIC、Net Range 为 202.181.17.0 至 202.181.17.255、CIDR 为 /24、Net Type 为 ALLOCATED NON-PORTABLE 以及注册时间与滥用举报联系人。此外还实时判定 Tor Relay 状态,本次返回 This IP is not identified to be a Tor Relay。这背后是注册局数据、路由数据与线路类型库的多源整合。

架构上的代价也很清楚:整套检测重度依赖客户端脚本。禁用 JavaScript 时,地图返回 Failed to load the map – JavaScript Disabled,WebRTC 与 DNS 检测项显示 n/a (no js),意味着浏览器层与泄漏层的能力会整体失效,只剩服务端可见的网络层与头字段。另外站点不提供可编程接口,无法把检测嵌入自动化流水线,管理数百个环境的团队只能靠人工逐个打开页面;Uniqueness 的判定依赖站点自有签名库,而库的规模与更新周期从未对外披露,同一个签名在不同时间可能得到不同的唯一性结论,这个数值只适合当相对参考而不宜作为绝对指标。

把实现链路拆开看,会发现它同时维护着两条性质完全不同的采集通道。第一条是服务端被动采集:TCP 握手参数、TLS 的 ClientHello 与扩展列表、HTTP/2 的帧设置与伪头顺序,这些数据只能在连接建立的瞬间从底层抓取,需要在协议栈层面做定制,普通的应用框架根本拿不到。第二条是客户端主动采集:画布绘制结果、显卡型号、字体枚举、各类 Web 接口返回值,必须由脚本在浏览器里执行后上报。两条通道的数据要拼接成同一次检测的完整画像,还得保证拼接过程本身不引入额外的会话标识,这个工程复杂度远超一般的信息展示型站点。

外部依赖的组织同样体现工程能力。WebRTC 泄漏检测需要可用的会话穿透服务器,才能在存在网络地址转换的情况下把内网与公网地址逼出来;DNS 泄漏检测需要一套能统计解析来源的域名基础设施,否则无法知道请求最终由哪些服务器发出;归属判定要整合路由数据与线路类型库,才能给出城市级定位与线路用途标注;Whois 要实时对接各地区注册局,本次实测返回的注册局为 APNIC 并附带完整的滥用举报联系人信息;中继节点判定还需要维护一份持续更新的节点名单。这些子系统任何一个失效,对应模块就会静默降级,而站点并不区分展示。

最后要提精度边界,这直接关系到卖家怎么读数。被动式的网络层指纹在多层转发场景下会失真:实测给出的 21 Hops 表示的是从检测服务器视角看到的跳数,经过代理隧道后这个数字反映的是出口节点到服务器的距离,而不是卖家真实机器的位置;MTU 显示 1500 属于以太网默认值,但某些隧道协议会改写这个数值,出现非典型的 MTU 反而是使用隧道的信号;链路类型判定为以太网或调制解调器是一个粗粒度分类,参考价值有限。同理,画布唯一性百分比依赖站点自有样本库,样本量随时间增长,同一签名的判定会漂移。理解这些边界之后再看数据,才能避免把工具的推断当成事实,也才能明白为什么需要多个来源交叉验证。

优势

["检测点铺满整条协议栈,从 TCP 握手一路覆盖到画布与显卡渲染", "输出 JA3、JA4、JA4T 与 Akamai 哈希,能识别浏览器层改不掉的特征", "画布检测下探到文件字节层,逐块解析图像区块长度与校验值", "归属判定整合注册局与线路类型多源数据,冷门线路仍输出完整字段", "实时判定中继节点状态,并逐条展示请求头顺序与取值组合"]

劣势

["浏览器层检测重度依赖脚本执行,脚本受限时能力会整体失效", "不提供可编程接口,数百个环境的巡检无法接入自动化流水线", "唯一性判定依赖自有签名库,库规模与更新周期从未对外披露", "各层结果彼此独立,不做跨层矛盾检测,需要用户自行交叉比对"]

其他维度

商业模式 42 BrowserLeaks 以 Browserleaks - Check your browser for privacy...
SEO优化 78 BrowserLeaks 的站点信息架构本身就是一套按搜索意图切分的着陆页体系。域名由 browser 与 leaks ...
产品迭代 74 判断一个检测站是否还在活跃迭代,最硬的证据不是更新日志,而是它检测了哪些新特征。BrowserLeaks 的 /ip 页...
流量分析 58 BrowserLeaks 的流量结构可以从站点自身特征反推:没有社媒矩阵、没有邮件订阅入口、没有付费投放痕迹,也没有任何...
用户体验 66 BrowserLeaks 的体验设计遵循一条原则:把原始数据摊开,不做任何加工。/ip 页把结果切成 My IP Add...
内容策略 88 BrowserLeaks 的内容策略可以概括为用可复现的实验代替说教。/canvas 页不仅解释 Canvas API ...
社交媒体 35 社交媒体是 BrowserLeaks 最薄弱的一环。抓取到的首页与 /ip、/canvas 两个子页中,看不到任何社交账...
变现能力 38 从变现效率看,BrowserLeaks 几乎是把一手好牌摊在桌上不打。它的流量意图纯度极高:搜 canvas finge...
竞争分析 83 在指纹检测这条赛道上,BrowserLeaks 的护城河来自深度与中立两点。深度体现在它把检测下探到别人不碰的层级:TC...
用户画像 71 BrowserLeaks 的用户可以分成四类:隐私用户来验证 VPN 是否漏了真实地址,安全与反爬工程师用它校准自己的客...
趋势预测 76 BrowserLeaks 的检测项清单,本身就是一张指纹技术演进的路线图。它同时输出 JA3 Hash 与 JA4、并在...