WebRTC 泄露检测
网页通过 WebRTC 能拿到哪些地址?它们和你挂着代理的出口是不是同一个网络?
WebRTC 为什么会泄露 IP
WebRTC 是浏览器里做音视频通话和点对点传输的接口。为了建立连接,浏览器会收集一组 ICE 候选:本机各网卡的地址(host)、经 STUN 服务器看到的公网地址(srflx),以及可能的中继地址(relay)。网页的 JavaScript 能读到这些候选。
如果你的 VPN 或代理只接管了浏览器的 HTTP 流量,STUN 请求可能走了另一条路,于是网页能看到一个与 HTTP 出口不同的地址,甚至是你真实运营商的地址。
n0.wiki 怎么判定
判定的不是「地址是否相同」,而是它们是否指向同一个网络身份:
- 同一前缀视为正常。IPv6 比较 /64(临时地址让同一台机器的地址本来就经常不同),IPv4 比较 /24。
- 跨地址族也要比网络身份。最常见的真实泄露是:VPN 只接管 IPv4,原生 IPv6 从 WebRTC 直接漏出去,而用户以为自己被 VPN 罩着。
- 出口正在匿名时,暴露任何一个不同 ASN 的地址就是泄露。是不是住宅网络只影响措辞和置信度;只有候选有证据属于基础设施网络(多跳 VPN 等)时才降级为普通分歧。
- 测不到不等于安全。没有采集到任何候选时,结果是「未观测到」,而不是「没泄露」。
- 全部候选都经 TURN 中继、或本机地址被 mDNS 遮蔽(
*.local),说明没有暴露额外地址。
WebRTC 检测只描述你这台设备的配置,不是这个 IP 本身的属性,所以不计入 IP 纯净度总分。
如何防止 WebRTC 泄露
- 使用能接管全部流量的 VPN(系统级或 TUN 模式),并确认它同时处理 IPv6;不支持 IPv6 的 VPN 应关闭本机 IPv6。
- Firefox:在
about:config中把media.peerconnection.enabled设为false(会禁用网页通话)。 - Chrome / Edge:使用限制 WebRTC 网络接口的扩展,只允许经代理的连接。
- 改完后回到首页重新测试一次。
隐私说明
测试会连接 Google 与 Cloudflare 的公共 STUN 服务器,以获得公网候选。采集到的候选会发到本站服务器,只用本地数据库判定,不转发给第三方情报源,也不写入存储。详见关于与隐私。