浏览器与追踪

WebRTC

约 4 分钟阅读

什么是 WebRTC

WebRTC(Web Real-Time Communication)是一种 Web 标准技术,无需插件即可在浏览器之间实现实时音视频和数据通信。Google Meet、Discord、Facebook Messenger 等的视频通话功能都基于 WebRTC 构建。

为了提高通信效率,WebRTC 采用浏览器之间直接连接的 P2P(点对点)方式。为建立这种直接连接,需要通过 STUN/TURN 服务器将自己的 IP 地址通知对方,这就产生了隐私问题。

STUN/TURN 服务器的作用

建立 WebRTC P2P 连接首先需要确定自己在网络中的位置。这里使用 STUN 和 TURN 两种服务器。

STUN 服务器
Session Traversal Utilities for NAT 的缩写。客户端向 STUN 服务器发送请求后,服务器会回复「你的 IP 地址是这个」。它使 NAT 内部的设备能够获知自己的公网 IP 地址和端口号。Google 免费提供 stun.l.google.com:19302,许多 WebRTC 应用都在使用。
TURN 服务器
Traversal Using Relays around NAT 的缩写。当对称型 NAT 或防火墙导致无法建立 P2P 连接时,TURN 服务器负责中继通信。由于所有流量都经过服务器,带宽成本较高,是 P2P 连接的最后手段。

从隐私角度来看,问题在于 STUN 服务器的查询可能绕过 VPN 隧道。在这种情况下,VPN 本应隐藏的真实 IP 地址会被发送到 STUN 服务器,并可通过 JavaScript 获取。

ICE Candidate 与 IP 泄露机制

WebRTC 使用 ICE(Interactive Connectivity Establishment)框架来建立连接路径。ICE 收集多个连接候选(ICE Candidate)并选择最优路由。

ICE Candidate 收集过程会生成三种类型的候选:

  • Host Candidate:从设备网络接口直接获取的本地 IP 地址(192.168.x.x10.x.x.x)。即使在 VPN 连接期间,物理网卡的 IP 地址也可能被包含
  • Server Reflexive Candidate (srflx):STUN 服务器返回的公网 IP 地址。如果 STUN 查询绕过了 VPN,VPN 外部的真实 IP 就会暴露
  • Relay Candidate:TURN 服务器的地址。隐私风险较低

恶意网站只需创建 RTCPeerConnection 对象并启动 ICE Candidate 收集,无需实际进行通话,就能通过 JavaScript 获取这些 IP 地址。由于只需几行代码即可实现,它与 DNS 泄露并列为使用 VPN 时最常见的信息泄露途径。

各浏览器的应对方法

  • Firefox:在地址栏输入 about:config,将 media.peerconnection.enabled 设为 false 可完全禁用 WebRTC。更精细的控制方式是将 media.peerconnection.ice.default_address_only 设为 true,仅公开默认网络接口的 IP,防止其他接口(如 VPN 适配器)的 IP 泄露。
  • Chrome:无法从设置页面禁用。需使用「WebRTC Leak Prevent」等扩展,将 ICE Candidate 收集策略限制为 disable_non_proxied_udp,阻止未经代理的 UDP 通信,防止真实 IP 泄露。
  • Safari:在「设置」→「高级」→「WebRTC」中启用 ICE Candidate 限制选项。Safari 默认对 WebRTC IP 泄露采取了相对保守的设置。
  • Brave:默认启用 WebRTC IP 泄露防护。可在「设置」→「隐私和安全」→「WebRTC IP 处理策略」中确认。

即使启用了 VPN 终止开关,也可能无法防止 WebRTC 泄露。浏览器端的防护措施必不可少。

WebRTC 的正当用途

虽然 WebRTC 的隐私风险备受关注,但它是一项无需插件即可实现实时通信的强大技术。了解其主要用途有助于判断禁用后的影响。

  • 视频会议:Google Meet、Zoom(网页版)、Microsoft Teams(网页版)都使用 WebRTC。禁用后将无法通过浏览器参加会议
  • 语音通话:Discord 网页版、Facebook Messenger 的通话功能等
  • P2P 文件共享:WebTorrent 和浏览器间直接文件传输服务
  • 实时游戏:基于浏览器的多人游戏中用于低延迟通信
  • 直播:越来越多的超低延迟(亚秒级)直播采用 WebRTC

如果经常使用视频会议,与其完全禁用 WebRTC,不如使用 VPN 提供商的 WebRTC 泄露防护功能或浏览器的 ICE Candidate 限制设置,这样更为实际。

WebRTC 泄露的检测方法

您可以使用专门的测试网站轻松检查浏览器是否存在 WebRTC 泄露。在连接 VPN 的状态下运行测试,如果显示了 VPN 服务器 IP 以外的 IP 地址,则说明存在泄露。

检测步骤如下:

  1. 连接 VPN
  2. 访问 WebRTC 泄露测试网站
  3. 查看显示的 IP 地址
  4. 如果出现 VPN 服务器 IP 以外的地址,则存在泄露

定期结合浏览器指纹测试进行检查,有助于验证隐私设置的有效性。

常见误解

使用 VPN 就不会发生 WebRTC IP 泄露
WebRTC 可以绕过 VPN 隧道直接访问网络接口,因此仅靠 VPN 无法防止泄露。需要在浏览器中禁用 WebRTC 或使用泄露防护扩展。
禁用 WebRTC 会导致无法上网
禁用 WebRTC 不会影响正常的网页浏览、视频观看和文件下载。受影响的仅限于浏览器内的视频通话和 P2P 文件共享等实时通信功能。
分享

相关术语