VPN 会改变浏览器指纹吗?先测什么
VPN 只换掉出口地址,对普通页面请求几乎别无影响。走完这五步,看看浏览器里哪些值真的会动。
你把 VPN 切到另一个国家,刷新商店,它仍然叫出你的名字,购物车也还是那一份。往往就在这时,指纹这个词进入对话,紧跟着的常是某个测试站,宣称你的浏览器是百万里挑一。不如按顺序处理这个问题:对普通页面请求来说,隧道只改变一个字段,浏览器仍在上报几十项,而测试量到的东西比听上去要窄。这五步正好把这三件事分开。
第 1 步:先排除那些乏味的“被认出来”的原因
先退出登录。开一个隐私窗口,访问同一个页面,看它是否仍表现得像认识你。Cookie、本地存储和一个活着的会话解释了大多数“它透过 VPN 看到我”的报告,而这些都不是指纹。
如果隐私窗口里页面仍认出了什么,就看看你带过来的可见状态:另一个标签页里的同一账号、保存过的表单条目、自动填入你地址的密码管理器,或者某个你用 URL 里的令牌授权过的站点。每一件都是被保存的引用,清掉配置文件它就不在了。
只有当干净、无会话的配置文件仍然产生与既往访问相关联的识别时,才值得谈指纹。这比“VPN 没用”窄得多,而且它是你真正能测的那件事。
第 2 步:换掉出口,并列出哪些没变
让隧道起来,然后检查隧道该动的那唯一一个值:服务器看到的地址。任何地址查询页都会显示它,或者用下面这条命令从你自己掌管的端点读:curl -s https://your-endpoint.example/ip。你用到的任何回显服务都会看见这个请求,所以自有端点能把它留在别人的日志之外。确认它变了。接下来是有意思的部分——列出浏览器还在自报哪些东西,因为其中几乎没有一样会随包头上路。
| What a page can read | Changed by the VPN? | Where it comes from |
|---|---|---|
| Public source address | Yes | The tunnel's exit |
| WebRTC candidate addresses | Sometimes | Browser network stack and leak protection |
| User agent string | No | Browser build and platform |
| Language preference list | No | Browser and OS settings |
| Timezone offset | No | The operating system clock |
| Screen size, colour depth, pixel ratio | No | Display and window state |
| Installed fonts, canvas and WebGL output | No | Rendering stack and GPU |
| Accept-Language, client hints | No | Browser configuration |
时区那一行值得停一下。它读自操作系统,所以当隧道把流量搬到另一个大洲、时钟却还说着你的城市时,这个错位本身就是一处有区分度的观测。语言列表在一国、出口在另一国也是同理:不是什么证据,只是一个扎眼的组合。表里唯一的例外是 WebRTC:打开媒体或数据通道的页面可以收集候选地址,隧道开着时候选地址可能带上出口,或者在缺少防泄漏保护时仍给出本地地址。
第 3 步:按它报告的内容去读一份指纹测试
EFF 的 Cover Your Tracks 是常见的起点。它显示你的浏览器向那个页面暴露的特征,并给出一个判断:它的样本里有多少浏览器共享这些特征。要读小字:样本就是来做过测试的人,信号是那个页面选择采集的那几项,判断是熵的比特数估计,不是普查。
所以“你的浏览器独一无二”只是在那个数据集里、今天、用那组探针而言独一无二。它不等于网站能推出你的名字,也不是永久属性——浏览器一更新,值就可能变,而你什么都没碰。
把测试当量具,而不是当分数去优化。记下报告值,只改一样东西,再比同样的字段。如果浏览器里什么都没变、读数却动了,那是样本里的噪声,不是你身上的变化。
第 4 步:改那些真正属于你的特征
现在可以对具体条目动手了。语言列表、时区和地区格式都是设置,把它们对齐到你声称所在的地方是一致的行为,而不是花招。按情境分开的浏览器配置文件把站点数据和登录隔开,这比任何反指纹扩展都更可靠地处理第 1 步里的识别。
对“加装加固扩展”这句经典建议要谨慎。每一个都在改变你可被观测的表面,而一组不寻常的设置可能让你更稀有,而不是更普通。有的会封掉页面能察觉缺失的 API;有的则留下特征明显的补丁签名。扩展的流行度并不能证明它降低了可识别性。
认真对待这件事的浏览器在结构上做了另一件事:标准化。Tor Browser 力求每个用户报出相同的值,Firefox 附带一种保护模式,报出的是来自小集合的标准化值而非你的真实值,Safari 则限制网站能读到什么。这是被一致执行的设计决定,而 W3C 的指纹指南 解释了在这个问题上标准化为何胜过逐用户随机化。
第 5 步:判断你真正需要的是哪一层
“把我藏起来”里其实捆了三件事:网络路径、浏览器可被观测的表面,以及你的账号。VPN 处理第一件。它不碰第二件,也帮不上第三件——登录是最直接的标识符,而且它扛得住每一次出口变动。
如果你的目标是让站点无法判断两次访问相关,那么你还需要浏览器这一层:每个情境一个干净配置文件、一致的设置、不共用登录。如果你的目标是让站点完全无法判断你是谁,那是一个威胁模型,在其中把路由与浏览器级标准化捆在一起的 Tor Browser 才是一致的选择,而不是隧道后面的普通浏览器。
如果你的目标只是让站点看到另一个城市、让你的运营商什么都看不到,那么单靠隧道确实够了,指纹测试的结果与这个目标无关。这里多数的失望,来自只买了一层却期待三层。
一个让步骤保持诚实的顺序:
- 在怪隧道之前,先用干净配置文件、不登录复现那次识别。
- 确认出口地址变了,然后记下哪些浏览器值没变。
- 比较同样测试字段在一次改动前后的变化,而不是看头条分数。
- 在加任何扩展之前,先把时区和语言调成与你说法一致。
- 按目标选层:网络、浏览器表面,还是账号。