你把 VPN 切到另一个国家,刷新商店,它仍然叫出你的名字,购物车也还是那一份。往往就在这时,指纹这个词进入对话,紧跟着的常是某个测试站,宣称你的浏览器是百万里挑一。不如按顺序处理这个问题:对普通页面请求来说,隧道只改变一个字段,浏览器仍在上报几十项,而测试量到的东西比听上去要窄。这五步正好把这三件事分开。

第 1 步:先排除那些乏味的“被认出来”的原因

先退出登录。开一个隐私窗口,访问同一个页面,看它是否仍表现得像认识你。Cookie、本地存储和一个活着的会话解释了大多数“它透过 VPN 看到我”的报告,而这些都不是指纹。

如果隐私窗口里页面仍认出了什么,就看看你带过来的可见状态:另一个标签页里的同一账号、保存过的表单条目、自动填入你地址的密码管理器,或者某个你用 URL 里的令牌授权过的站点。每一件都是被保存的引用,清掉配置文件它就不在了。

只有当干净、无会话的配置文件仍然产生与既往访问相关联的识别时,才值得谈指纹。这比“VPN 没用”窄得多,而且它是你真正能测的那件事。

第 2 步:换掉出口,并列出哪些没变

让隧道起来,然后检查隧道该动的那唯一一个值:服务器看到的地址。任何地址查询页都会显示它,或者用下面这条命令从你自己掌管的端点读:curl -s https://your-endpoint.example/ip。你用到的任何回显服务都会看见这个请求,所以自有端点能把它留在别人的日志之外。确认它变了。接下来是有意思的部分——列出浏览器还在自报哪些东西,因为其中几乎没有一样会随包头上路。

What a page can readChanged by the VPN?Where it comes from
Public source addressYesThe tunnel's exit
WebRTC candidate addressesSometimesBrowser network stack and leak protection
User agent stringNoBrowser build and platform
Language preference listNoBrowser and OS settings
Timezone offsetNoThe operating system clock
Screen size, colour depth, pixel ratioNoDisplay and window state
Installed fonts, canvas and WebGL outputNoRendering stack and GPU
Accept-Language, client hintsNoBrowser configuration

时区那一行值得停一下。它读自操作系统,所以当隧道把流量搬到另一个大洲、时钟却还说着你的城市时,这个错位本身就是一处有区分度的观测。语言列表在一国、出口在另一国也是同理:不是什么证据,只是一个扎眼的组合。表里唯一的例外是 WebRTC:打开媒体或数据通道的页面可以收集候选地址,隧道开着时候选地址可能带上出口,或者在缺少防泄漏保护时仍给出本地地址。

第 3 步:按它报告的内容去读一份指纹测试

EFF 的 Cover Your Tracks 是常见的起点。它显示你的浏览器向那个页面暴露的特征,并给出一个判断:它的样本里有多少浏览器共享这些特征。要读小字:样本就是来做过测试的人,信号是那个页面选择采集的那几项,判断是熵的比特数估计,不是普查。

所以“你的浏览器独一无二”只是在那个数据集里、今天、用那组探针而言独一无二。它不等于网站能推出你的名字,也不是永久属性——浏览器一更新,值就可能变,而你什么都没碰。

把测试当量具,而不是当分数去优化。记下报告值,只改一样东西,再比同样的字段。如果浏览器里什么都没变、读数却动了,那是样本里的噪声,不是你身上的变化。

第 4 步:改那些真正属于你的特征

现在可以对具体条目动手了。语言列表、时区和地区格式都是设置,把它们对齐到你声称所在的地方是一致的行为,而不是花招。按情境分开的浏览器配置文件把站点数据和登录隔开,这比任何反指纹扩展都更可靠地处理第 1 步里的识别。

对“加装加固扩展”这句经典建议要谨慎。每一个都在改变你可被观测的表面,而一组不寻常的设置可能让你更稀有,而不是更普通。有的会封掉页面能察觉缺失的 API;有的则留下特征明显的补丁签名。扩展的流行度并不能证明它降低了可识别性。

认真对待这件事的浏览器在结构上做了另一件事:标准化。Tor Browser 力求每个用户报出相同的值,Firefox 附带一种保护模式,报出的是来自小集合的标准化值而非你的真实值,Safari 则限制网站能读到什么。这是被一致执行的设计决定,而 W3C 的指纹指南 解释了在这个问题上标准化为何胜过逐用户随机化。

第 5 步:判断你真正需要的是哪一层

“把我藏起来”里其实捆了三件事:网络路径、浏览器可被观测的表面,以及你的账号。VPN 处理第一件。它不碰第二件,也帮不上第三件——登录是最直接的标识符,而且它扛得住每一次出口变动。

如果你的目标是让站点无法判断两次访问相关,那么你还需要浏览器这一层:每个情境一个干净配置文件、一致的设置、不共用登录。如果你的目标是让站点完全无法判断你是谁,那是一个威胁模型,在其中把路由与浏览器级标准化捆在一起的 Tor Browser 才是一致的选择,而不是隧道后面的普通浏览器。

如果你的目标只是让站点看到另一个城市、让你的运营商什么都看不到,那么单靠隧道确实够了,指纹测试的结果与这个目标无关。这里多数的失望,来自只买了一层却期待三层。

一个让步骤保持诚实的顺序:

  • 在怪隧道之前,先用干净配置文件、不登录复现那次识别。
  • 确认出口地址变了,然后记下哪些浏览器值没变。
  • 比较同样测试字段在一次改动前后的变化,而不是看头条分数。
  • 在加任何扩展之前,先把时区和语言调成与你说法一致。
  • 按目标选层:网络、浏览器表面,还是账号。

相关文章