WebRTC泄露
WebRTC泄露测试:一通浏览器电话会暴露你的哪些IP地址
要点速览
WebRTC泄露测试会列出浏览器通过WebRTC交给网页的所有IP地址,让你发现本想隐藏的那个地址,通常是开着VPN时你的网络服务商分配的地址[1]。从浏览器拨打电话号码时,能看到你IP的是通话服务,而不是你拨打的人,对方看到的是来电显示号码[2]。这个测试是我建议在用浏览器打电话之前做的隐私与安全检查之一。
关键事实
什么是WebRTC泄露?
在WebRTC通话开始前,浏览器会收集可能的网络路径,称为ICE候选(ICE candidate),并交给网页转发给另一方。每个候选都带有一个IP地址,或者用一个随机的.local名称代替被隐藏的局域网地址。普通网站只能看到你发出请求时的公网地址;通过WebRTC,网页可以了解到更多[1]。只要这份列表里有你不想分享的地址,就算泄露。
通话的其余部分如何传输,见WebRTC、SIP与电话网络;就泄露而言,只有候选列表才重要。MDN指出,候选中的地址总是会暴露给网页[6]。
| 候选类型 | 显示的地址 | 隐私风险 |
|---|---|---|
| host | 你的设备在局域网中的地址;如果浏览器将其隐藏,则是一个以.local结尾的随机名称[7][3] | 低于公网地址,但IETF认为私有IPv4地址是相当重要的指纹识别来源[1] |
| srflx(服务器反射) | 你的路由器或VPN向STUN服务器显示的公网地址[7] | 如果开着VPN时显示的是你的网络服务商地址,风险就高[1] |
| relay | 负责转发媒体流的TURN服务器上的地址[7] | 低:对方看到的是中继服务器的地址,而不是你的[6];但中继服务器的运营方仍然能看到你 |
IETF认为VPN这种情况最严重,因为有些人用VPN是为了保持匿名[1]。另外两种情况是你的私有地址泄露,以及WebRTC的检查绕过了代理,从而暴露你真实的公网地址[1]。
浏览器通话会暴露你的IP地址吗?
对通话服务来说,会:每个网站都能看到你的公网地址[1],而通话还会多出一条连到服务商服务器的媒体连接。对你拨打的固话或手机用户来说,不会:通话在服务商的网关离开互联网[8],电话网络传递的是主叫号码,而不是IP地址[2]。应用之间的通话则可能让两台设备直接相连。
| 通话类型 | 通话服务 | 你拨打的人 |
|---|---|---|
| 从浏览器拨打电话号码(Google Voice、TwinPhone、Yolla) | 能:媒体连接由它负责 | 不能:对方看到的是来电显示号码[2] |
| 免费网页拨号器(Call2Friends、Globfone) | 能:Call2Friends按IP地址限制免费通话次数,Globfone的隐私政策把IP地址列为它处理的技术数据和日志之一[9][10] | 不能:对方看到的是来电显示号码 |
| Messenger一对一通话 | 能 | 能:Meta表示你的IP会分享给对方的设备[4] |
| 能 | 可能,除非打开“在通话中保护IP地址”;群组通话始终经过中转[5] | |
| Telegram | 能 | 可能:Telegram在2017年的公告中说,通话会尽可能走点对点连接[11] |
拨打真实电话号码时,关键在于服务商会知道并保存哪些信息;至于你拨打的人看到的是什么,见从浏览器打电话时对方看到哪个号码。
怎样做WebRTC泄露测试
泄露测试页面做的事和拨号器在通话前做的一样:建立一个WebRTC连接,询问STUN服务器看到的公网地址,然后把每个候选地址和它通过普通HTTP看到的地址并排列出。在你用来打电话的每个浏览器里都测一遍,先关掉VPN,再打开VPN。
- 关闭VPN:打开一个泄露测试页面,比如BrowserLeaks的WebRTC Leak Test。顶部的“Your Remote IP”应该与“Your WebRTC IP”下的“Public IP Address”一致。
- 打开VPN:刷新页面。“Your Remote IP”现在应该显示VPN的地址。
- 如果WebRTC部分仍然列出你的网络服务商地址,说明WebRTC绕过了隧道[1]。
- 以.local结尾的局域网条目表示地址已被隐藏[3];以192.168.或10.开头的原始地址则没有被隐藏。
- 如果页面提供麦克风检测,允许后再测一次:拨号器需要麦克风权限,而这个权限可能会解锁更多地址[1]。测完后在网站设置里撤销这项权限[12]。
允许麦克风后,Chrome里发生了什么变化
,我在Mac上的Chrome 156里打开一个本地测试页面,没有设置STUN服务器,因此没有任何地址被发送到外部服务器。没有麦克风权限时,页面只看到一个host候选,名称是以.local结尾的随机字符串[3]。允许使用麦克风后,它收到了我真实的局域网IPv4地址。
这符合标准:只有在获得同意(比如麦克风权限)后才允许提供完整的地址列表[1];Safari的引擎WebKit在2017年也描述过同样的规则[13]。所以,你允许的拨号器可以看到你的局域网地址,这比公网地址的风险要小[1]。
限制WebRTC泄露的浏览器设置
Brave为普通用户说明了WebRTC IP设置。Google说明的Chrome控制项面向扩展程序和管理员,Microsoft则把Edge的控制项作为管理员策略来说明。Firefox默认隐藏局域网地址,并在about:config中保留了一个关闭开关。有一条规则到处适用:关闭WebRTC也会让浏览器拨号器停止工作,因为通话正是靠WebRTC传输的[14]。
| 浏览器 | 控制项 | 改变了什么 | 对浏览器通话的影响 |
|---|---|---|---|
| Brave | 隐私设置中的WebRTC IP处理策略,依据Brave的wiki(最后编辑于2018年)[15] | 默认选项Default Public Interface Only不暴露任何局域网地址[15] | 媒体流可能退而经由中继服务器传输[1] |
| Chrome | 扩展程序可以设置WebRTC IP处理策略[16];管理员可以设置WebRtcIPHandling策略[17] | 取值不同,效果也不同:停止使用私有地址,或者只通过代理发送媒体流[17] | 仅限代理的取值可能把音频推到TCP上,IETF说这会降低通话质量[1] |
| Edge | 管理员策略WebRtcLocalhostIpHandling[18] | 其中两个取值会停止暴露局域网IP地址[18] | 与Chrome相同 |
| Firefox | 默认隐藏局域网地址[19];about:config中的media.peerconnection.enabled[20] | 把这个首选项设为false就会关闭WebRTC | 浏览器拨号器停止工作 |
| Safari | 内置规则 | 没有麦克风或摄像头权限的网页拿不到host地址,这是WebKit在2017年的描述[13] | 无 |
VPN对浏览器通话有什么影响
如果VPN让所有流量(包括WebRTC)都走隧道,通话服务看到的就是VPN的地址,而不是你的。分离隧道VPN可能还会让WebRTC发现你的网络服务商地址[1],所以要在开着VPN时做泄露测试。VPN对打电话也有副作用。
打电话时怎样保护你的IP地址
根据通话类型选择对策。拨打电话号码时,你拨打的人拿不到你的IP,所以要选一个你信得过的服务,并检查你的VPN。应用之间通话时,对方的设备可能会直接连到你的设备,所以应用有中转设置的话就打开它。
常见问题
什么是WebRTC泄露测试?
我从浏览器打电话时,对方能看到我的IP地址吗?
VPN能防止WebRTC泄露吗?
能让所有流量(包括WebRTC)都走隧道的VPN可以。分离隧道VPN可能不行,因为WebRTC除了VPN的地址,还可能发现你的网络服务商分配的公网地址[1]。唯一的确认办法,是在连着VPN时,在你使用的每个浏览器里做泄露测试,并在更新后重新测试。
局域网IP地址泄露危险吗?
无痕模式或隐私浏览能防止WebRTC泄露吗?
不能。IETF指出,通过WebRTC暴露的私有地址可以充当标识符,让网站知道普通窗口和无痕窗口在同一台设备上[1],所以单靠无痕模式无法隐藏它。请使用上面介绍的浏览器设置,然后在无痕窗口里也做一次泄露测试。
防WebRTC泄露的扩展程序管用吗?
怎样在Firefox中关闭WebRTC?
怎样在Chrome中防止WebRTC泄露?
让 AI 解读这项调研
每个按钮都会在新标签页中打开对应的 AI 助手,请它总结本页内容,并附上本页链接作为来源。
资料来源
- RFC 8828: WebRTC IP Address Handling Requirements · IETF (RFC Editor) · 核实于2026年11月1日
- 47 CFR 64.1601 -- Delivery requirements and privacy restrictions | eCFR · US Code of Federal Regulations (eCFR) · 核实于2026年11月1日
- Using Multicast DNS to protect privacy when exposing ICE candidates (draft-ietf-mmusic-mdns-ice-candidates) · IETF (Internet-Draft, work in progress) · 核实于2026年11月1日
- Voice call someone or a group on Messenger - Messenger Help Center (Computer) · 核实于2026年11月1日
- How to protect your IP address on WhatsApp calls | WhatsApp Help Center · WhatsApp · 核实于2026年11月1日
- RTCIceCandidate: address property - Web APIs | MDN · MDN Web Docs (Mozilla) · 核实于2026年11月1日
- RTCIceCandidate: type property - Web APIs | MDN · MDN Web Docs (Mozilla) · 核实于2026年11月1日
- Make calls | Sonetel help · 核实于2026年11月1日
- Free call | Call2Friends - Online call · 核实于2026年11月1日
- Privacy Policy | Globfone · 核实于2026年11月1日
- Voice Calls: Secure, Crystal-Clear, AI-Powered | Telegram Blog (30 March 2017) · Telegram · 核实于2026年11月1日
- Use your camera and microphone in Chrome - Computer - Google Chrome Help · Google · 核实于2026年11月1日
- A Closer Look Into WebRTC | WebKit (3 July 2017) · WebKit (Apple) · 核实于2026年11月1日
- WebRTC API - Web APIs | MDN · MDN Web Docs (Mozilla) · 核实于2026年11月1日
- WebRTC Custom Settings · brave/brave-browser Wiki · Brave Software (official GitHub wiki) · 核实于2026年11月1日
- chrome.privacy | API | Chrome for Developers · Google (Chrome for Developers) · 核实于2026年11月1日
- Chrome Enterprise policy list: WebRtcIPHandling (WebRTC IP handling) · Google (Chrome Enterprise) · 核实于2026年11月1日
- Microsoft Edge Browser Policy Documentation WebRtcLocalhostIpHandling | Microsoft Learn · Microsoft · 核实于2026年11月1日
- Firefox source: modules/libpref/init/all.js (mozilla-firefox/firefox) · Mozilla (official Firefox source repository) · 核实于2026年11月1日
- Firefox source: modules/libpref/init/StaticPrefList.yaml (mozilla-firefox/firefox) · Mozilla (official Firefox source repository) · 核实于2026年11月1日
- Terms of Use – TextNow · 核实于2026年11月1日
- Privacy Policy – Privacy & Terms – Google · Google · 核实于2026年11月1日
- Call From Your Browser Without a SIM Card - TwinPhone · 核实于2026年11月1日