IP工具箱网络检测与教程工具清单
浏览菜单

WebRTC泄露:浏览器候选地址代表什么

这里列出浏览器为连接收集到的地址和类型。列表告诉你这次收集了什么,不代表所有连接都走同一出口。

WebRTC 是浏览器的实时通信功能,网页脚本可以通过它向 STUN 服务器询问「你的公网地址是什么」,这个请求可能不走代理,从而暴露真实出口。点下面的按钮在你自己的浏览器里检测,结果只显示在本页,不会回传本站。

检测时你的浏览器会向公共 STUN 服务器 stun.l.google.com:19302 发一次询问(这是 WebRTC 标准做法,那是第三方服务器;本站不经手也不记录)。

本站这次看到的你的 IP:—。对照 WebRTC 查到的公网地址:不一样,说明浏览器暴露了和代理出口不同的地址。

浏览器为什么要找这些地址?

因为建立通信时,需要寻找能接通的路径。IP 是网络地址的编号。WebRTC 是让网页或应用采集、传送音视频等媒体的技术。

网页用 RTCPeerConnection 代表本机与另一端之间的连接。ICE 帮两端寻找通信路径,即使中间有 NAT 地址转换,也要尝试建立连接。

NAT 会把内部地址换成对外使用的地址。ICE 收集的连接候选,就是供连接尝试使用的地址和类型记录。

STUN 用来询问 NAT 分配的地址和端口。端口是连接使用的号码,和地址一起帮助你分清这条记录从哪里来。

点击检测会向哪里发请求?

会向 Google 的公共 STUN 服务地址 stun.l.google.com:19302 发1次请求,用来取得公网反射地址。反射地址指 NAT 分配给这端的公网侧地址。

页面先建立连接,再收集 ICE 候选,读取地址和类型来分类。除了上面这次 STUN 请求,IP工具箱 不保存候选地址,也不把它们上传。

这只说明本页怎样处理,不代表别的网页也这样做。也别拿它替所有浏览器作数据处理承诺。

列表怎样知道已经收集完了?

脚本看的是 icecandidate 事件,也就是浏览器发来的候选通知。每条通知会带来候选,供页面读取地址和类型。

相关字段叫 address 和 type,分别表示候选地址、候选类型。收集结束时,事件里的 candidate 值为 null。

null 是结束标记,不是另一种地址。阅读列表时,每条记录都要按自己的实际内容看。

host 等类型各是什么意思?

类型告诉你这条候选从哪里取得,不决定所有连接走哪条路。列表中的几种类型要分开看。

  • host:取自本机某个网络接口绑定的 IP 和端口。它说的是主机侧地址,不等于网页访问的公网 IP,也不说明别的候选。
  • srflx:服务器反射候选,记录 NAT 分给 ICE 这一端的地址和端口。STUN 会返回这些公网侧资料,但它不能代替别的通信路径。
  • prflx:对等反射候选,来自向对端发 STUN 请求时 NAT 产生的地址和端口分配。它和 srflx 取得地址的情形不同,不能合成同一种记录。
  • relay:从中继服务器取得的候选,例如 TURN 服务。中继就是由服务器居中转接;这里说候选来自中继,不说明网页请求或全部媒体都走它。

网页一定能看到本地 IP 吗?

不一定,要看本地策略允许交出哪些地址。本地策略就是浏览器所在环境采用的处理规则,RFC 8828 这份网络技术文档讨论了不同做法。

W3C 的 WebRTC 规范提醒,建立通信可能让网页知道网络环境,包括私有 IP。私有 IP 是内部网络使用的地址。

网页还可能从地址了解位置及联网方式,也会多一些指纹线索。指纹信息就是帮助网页区分浏览器特征的线索,不是页面已经确认你的身份。

一次候选列表只记录这次收集结果。别把它当成所有环境都会交出的固定地址清单。

.local 为什么不是一串 IP 数字?

因为浏览器可能用本地名称代替数字地址。本页把 .local 候选按这种名称展示,不能把名称当成已读到的真实 IP。

mDNS 是处理这类本地名称的机制。相关工作草案描述了动态名称替换 host 地址、由浏览器内部完成解析的做法,但这份草案已经过期。

这能解释机制,不证明某款浏览器现在默认启用了它。有没有出现名称,不能替所有浏览器判断默认行为。页面也没有因此得到名称背后的本地数字地址。

候选和网页 IP 为什么可能不同?

因为媒体连接与网页访问未必使用同一条路。RFC 8828 说,WebRTC 流量默认按常规 IP 路由传送,默认不经代理服务器。路由就是数据选择的传送路径。

代理服务器是代为转发连接的服务器。两种连接是否同一个出口,还要看路由、代理和本地策略,不能只凭有隧道就认定相同。

分流隧道是只让部分流量进入隧道的做法。在这种情况下,WebRTC 还可能发现运营商侧地址;出现不同候选不等于已经确认泄露。

网页当前看见的地址,可看 IP 检测。问的是谁解析域名时,再看 DNS 泄露检测,别拿连接候选代替解析器结果。

这页最终会列出什么?

IP工具箱 按类型展示这次收集的 ICE 候选。你能看到候选地址、类型,以及本地名称和公网反射地址的解释。

常见问题

WebRTC 本来做什么用?

它让网页或应用采集并传送音视频等媒体。这页看的是建立连接时收集到的地址记录。

检测会给外面的服务发请求吗?

会向前面注明的 Google STUN 服务请求反射地址。除此之外,本页不留存或另行上传收集到的候选。

.local 就是我的数字 IP 吗?

不是,它是本地候选的名称写法。浏览器内部处理名称解析,页面没有拿到背后的数字 IP。

地址和网页 IP 不同,就算泄露吗?

仅有这个差别还不能定下来。你还得看路由选择和本地策略,两类连接不一定同路。

relay 表示所有流量都走中继吗?

不表示,它只说这条候选的来源。别的连接和全部流量走哪里,不能靠这一条确定。

本站只读取你这次访问时 Cloudflare 边缘给出的信息(IP、国家 / 城市、ASN),不调用第三方查询接口,也不保存访问日志。「是否出现在云厂商公开范围清单里」只比对 AWS、Google Cloud、Azure 三家官方公布的 IP 范围文件,不是机房 IP 判定,也不构成评分;没出现在清单里不能推断成住宅 IP。