跳至正文
中文
立即开始

WebRTC 泄漏

WebRTC 泄漏是指浏览器中的 WebRTC 暴露了未经过预期代理或 VPN 路径的 IP 地址,导致网站或通信对端获取网络信息。

文章目录(7 个章节)

WebRTC 泄漏是如何发生的

WebRTC 让浏览器应用能够交换音频、视频和数据。建立连接时,交互式连接建立(ICE)会从本地网络接口、STUN 探测结果和 TURN 中继收集可用的网络路径。网页可以创建仅传输数据的连接,因此即使没有摄像头或麦克风权限,也能收集候选地址。

网页的 HTTP 流量可能经过代理服务器,而 WebRTC 的 UDP 流量仍会直接发送。如果 JavaScript 获取的候选地址包含运营商侧公网地址,而不是代理出口地址,就说明流量没有按预期路径传输,发生了泄漏。

候选地址 来源 网站可能看到的内容
主机 设备网络接口 私有地址或 mDNS 名称
服务器反射 STUN 服务器 直连路径使用的公网地址
中继 TURN 服务器 TURN 中继地址

现代浏览器通常会用临时 mDNS 名称替换本地私有地址。这可以减少本地网络信息暴露,但不能保证公网 IPv4 或 IPv6 地址始终隐藏。

为什么使用代理时需要注意 WebRTC 泄漏

代理会更改经其转发的流量所显示的地址,但不会自动转发浏览器建立的所有连接。

网站可能会对比 HTTPS 来源地址和 WebRTC 候选地址。如果两者不一致,例如代理出口位于一个国家,而 WebRTC 地址位于另一个国家,就可能成为浏览器指纹识别和机器人检测的判断依据。这不能证明访问来自自动化程序,但轮换代理 IP 也无法解决这种地址不一致的问题。

禁用 WebRTC 也会改变浏览器的功能特征,并导致浏览器通话、屏幕共享和点对点数据通道无法使用。

如何防止 WebRTC 泄漏

  1. 对比地址。 在同一浏览器环境中,对比 HTTP 流量显示的代理出口地址和收集到的 ICE 候选地址。IPv4 和 IPv6 都要检查,确认是否出现陌生的公网地址。
  2. 控制直连流量。 使用浏览器策略阻止不经过代理的 UDP 流量,或配置全隧道 VPN,让 UDP 和 IPv6 流量也通过 VPN。
  3. 不需要 WebRTC 时将其禁用。 Firefox 可在 about:config 中设置 media.peerconnection.enabled。受管理的浏览器可能提供同类策略。
  4. 更改后重新测试。 浏览器更新、扩展程序和浏览器环境设置都可能改变候选地址的处理方式。

对于自动化测试或数据采集,修复泄漏并不代表可以忽视网站条款、访问规则和限速要求。

常见问题

使用 HTTP 代理时,WebRTC 会泄漏我的 IP 吗?

会。常规 HTTP 代理只转发浏览器的网页请求,不会转发 WebRTC 的直连 UDP 流量。因此,如果不限制 WebRTC 的网络路径,浏览器可能会暴露另一个公网地址。

WebRTC 泄漏需要摄像头权限吗?

不需要。网页可以通过仅传输数据的 WebRTC 连接收集 ICE 候选地址,无需申请摄像头或麦克风权限。

使用代理时应该禁用 WebRTC 吗?

这取决于具体工作流程。如果不需要 WebRTC 功能,可以将其禁用;如果应用需要通话、屏幕共享或点对点数据传输,则应控制 WebRTC 的网络路径。

相关术语

查看全部术语