WebRTC 泄漏是什么
WebRTC 是浏览器内置的实时通信能力,用来支持视频会议、语音通话、P2P 文件传输等场景。为了建立点对点连接, 浏览器会通过 STUN 服务器发现自己在公网侧看到的地址。这个探测通常使用 UDP,而普通 HTTP / SOCKS 代理并不一定接管 UDP。
如果 STUN 请求绕过代理直接从本地网络发出,网页脚本就可能拿到你的真实公网 IP。这个过程通常不需要摄像头、麦克风权限, 也不会弹出额外确认框,所以它常被用来检查代理是否真正覆盖了实时通信流量。
检测 DNS / WebRTC / IPv6 / 时区 / IP 一致性是否存在泄漏。如果你用了 VPN 或代理, 这里能确认是否真正匿名。
Technical Notes
泄漏检测不是只看网页请求的出口 IP,而是同时观察浏览器实时通信、DNS 解析、IPv6 和环境一致性。 下面这些说明可以帮助你判断检测结果是真正泄漏、正常分流,还是代理模式带来的假象。
WebRTC 是浏览器内置的实时通信能力,用来支持视频会议、语音通话、P2P 文件传输等场景。为了建立点对点连接, 浏览器会通过 STUN 服务器发现自己在公网侧看到的地址。这个探测通常使用 UDP,而普通 HTTP / SOCKS 代理并不一定接管 UDP。
如果 STUN 请求绕过代理直接从本地网络发出,网页脚本就可能拿到你的真实公网 IP。这个过程通常不需要摄像头、麦克风权限, 也不会弹出额外确认框,所以它常被用来检查代理是否真正覆盖了实时通信流量。
页面会尝试向多个 STUN 服务器发起 WebRTC 探测,收集返回的公网地址,并和 HTTP 出口 IP 做对比。 如果返回地址与当前出口一致,说明 UDP 路径大概率被代理接管;如果返回本地运营商地址,就需要重点排查。
UDP 是一种无连接传输协议,常用于语音、视频、游戏和实时通信。STUN 的作用很简单:你向服务器发出 UDP 包, 服务器告诉你它看到的来源 IP。WebRTC 依赖这个结果来协商连接,因此 STUN 看到的地址就是判断泄漏的关键证据。
about:config 中关闭 media.peerconnection.enabled。如果你配置了分流,不同 STUN 服务器可能会走不同节点。例如 Google STUN 走美国出口,Cloudflare STUN 走香港出口。 这类结果不一定危险,关键是看它是否符合你的规则设计。真正需要警惕的是:所有 WebRTC 地址都指向你的物理所在地或本地 ISP。
WebRTC 泄漏暴露的是 "你的真实 IP", DNS 泄漏暴露的是 "你查询过哪些域名". 如果 DNS 请求没有走代理, 本地运营商或上游解析器仍能看到你访问过哪些站点.
本页的 DNS 泄漏检测是真探针: CleanIP.io 在东京 (ns1) 和新加坡 (ns2) 各运行一台权威 NS, 服务于 dp.cleanip.io zone. 浏览器每次检测会解析 8 个独立 <uuid>.dp.cleanip.io 子域, 这些查询经过你系统的 stub resolver -> ISP / VPN / 公共递归, 最终落到我们的权威 NS, 把发起查询的 resolver IP 和 (若有) EDNS Client Subnet 一起记录, 再返回给你做比对.
重点看两个信号: ① ECS 子网 — 若递归 resolver 转发了你的终端子网 (常见于 Google 8.8.8.8), 那子网就是确凿的客户端身份; ② resolver 国家 — 公共递归 (1.1.1.1 / 8.8.8.8) 跨国 anycast 是正常的, 关键看你以为开了 VPN 时, resolver 的位置是否跟 HTTP 出口同国家.
HTTP / SOCKS 代理通常只处理 TCP,STUN 所需的 UDP 可能无法发送,所以页面可能显示“未泄漏”。这并不代表 UDP 已被安全代理, 只是 UDP 没有成功到达 STUN 服务器。TUN 模式会接管虚拟网卡上的 TCP 和 UDP,因此更能反映真实的 UDP 出口路径。
建议在你实际使用的网络模式下重新测试:如果日常使用 TUN,就用 TUN 测;如果依赖浏览器代理,也要确认 UDP 被阻断并非误判安全。 判断 WebRTC 泄漏时,重点看返回 IP 的 ASN、归属地和是否符合你的分流预期。