代理会不会露出你的真实地址
代理会改变浏览器访问网站时使用的地址。WebRTC 是通话和视频用的一条独立通道,它能直接建立连接,绕开代理。这样一来,网站就能通过 JavaScript 在一秒钟之内、不打招呼地拿到你的真实地址。
在你要检测的那个配置文件里打开这个页面,然后点按钮。
这里需要一个第三方服务器,我们直说这一点。在指纹检测里,一切都是在你的浏览器里计算完成的。这里不行:浏览器只能通过 STUN 服务器才能知道自己的外部地址 —— 这正是要检测的那种泄漏。请求会发往 stun.cloudflare.com 和 stun.l.google.com;它们看到的信息,和任何带通话功能的网站能看到的完全一样。我们不保存检测结果。
结果
浏览器发现了什么
| 这是什么 | 地址 |
|---|
如何解读结果
这里只有一项比对,但它是决定性的:STUN 服务器看到的你的地址,与其余流量出口地址的对比。
一致 —— 说明 WebRTC 走的是和其他流量一样的路径,没有泄漏任何新信息。不一致 —— 说明代理被绕过了:不管你在配置文件里怎么设置代理,网站都能得知你的真实地址。
我们会单独列出你的局域网(家庭网络)地址。Chrome 默认会把它们隐藏在类似 ….local 这样的随机名字后面 —— 这是它自带的保护机制,而且是有效的。这些地址本身并不会暴露你:192.168.1.5 这个地址有数百万台机器在用。但它们会告诉网站你的网络是怎么搭建的,在这份数据里多出了这么一条本不必要的信息。
为什么这个问题不能靠命令行参数解决
这里很容易白费功夫,所以我们直说:只有在浏览器本身里设置 WebRTC 策略,才能修复这种泄漏。启动 Chrome 时加的命令行参数并不能关闭它 —— 在这一部分,浏览器根本不理会这个参数。我们在真实的配置文件上验证过这一点。
这个设置是存在的,是浏览器自带的功能,但要在每一个配置文件里手动去设置一遍,是没有人愿意重复一百次的活。
所以在 Morfiade 里,只要给配置文件设置了代理,这项设置就会自动打开:既然有代理,就意味着要隐藏地址,如果还让 WebRTC 绕过代理,就没有意义了。你不需要去找什么单独的开关。
如果检测发现了泄漏,该怎么办
- 配置文件没有代理。 那就没问题:没什么需要隐藏的,反正地址本来就是你自己的。只有配上代理之后,这才会变成一种泄漏。
- 有代理,但地址对不上。 说明这个配置文件里的 WebRTC 策略还没有设置好。在 Morfiade 里,只要给配置文件设置代理就够了 —— 剩下的会自动完成。
- 屏蔽 WebRTC 的扩展程序。 它能堵住泄漏,但方式比较粗暴:一部分带通话和视频功能的网站会因此无法使用,而「WebRTC 被完全关闭」这件事本身也是一种特征,而且相当少见。
这项检测查不出什么
DNS 泄漏。 这是另一条通道:即便流量本身走了代理,域名查询请求也可能绕开代理。这里我们不测量这一点,也不会假装测量了。
国家是否和时区、语言一致。 这项检测在指纹检测里 —— 那个页面上有最常导致验证码出现的三项比对。
再说一遍:这个页面上「没有泄漏」只有一个确切的含义 —— WebRTC 没有报告出一个和出口地址不同的地址。这不是对匿名程度的整体评价,我们也不会画出百分比。
