学习目标
阅读本文后,您将能够:
- 说明 WebRTC 为什么会接触网络接口
- 分清页面请求的出口 IP 和 WebRTC 看到的地址
- 避免把「多一个地址」直接说成泄漏
它为什么会碰到网络
实时连接要先找到对方能到达的地址。浏览器因此会收集自己这边可用的地址。
这些候选地址里,可以有本机网卡上的地址,也可以有经过网络之后对外可见的公网地址。这是建立连接必需的信息,不是一份单独的「指纹文件」。
普通网页请求只让服务器看到这次 HTTP 从哪个公网地址进来。WebRTC 多了一步:页面有机会看见浏览器为了建立连接而收集到的地址。
页面可能看到什么
能看到哪些地址,取决于浏览器实现、系统和当前网络,不是每次都一样。
- 本机接口上的地址,例如局域网地址。
- 一个对外的 IPv4 或 IPv6 公网地址。
- 什么都没有:浏览器关掉了这项暴露,或当前环境没有给出候选地址。
两个地址不一样时
网页请求的出口,和 WebRTC 收集到的地址,可能不是同一个。
代理或 VPN 常常改的是浏览器页面请求的出口。WebRTC 如果仍走原来的网络路径,页面就可能同时看到「请求出口」和「另一个地址」。
IPv4 和 IPv6、不同的浏览器策略、企业网络的多条出口,也会让列表里出现多个地址。多个地址是观察结果。它是不是您关心的那一种暴露,要看这些地址各自是什么,而不是只看「数量大于一」。
为什么它把浏览器和网络接到了一起?
前面的屏幕、字体、Canvas 描述的是浏览器环境。WebRTC 让页面有机会碰到网络接口和公网地址。从此浏览器信号和网络出口不再是两条永远分开的线。
看到地址不等于泄漏结论
- 没有额外地址,也不表示网络路径一定和页面请求相同。
- 出现局域网地址,通常不是公网出口。
- 出现另一个公网地址,才需要和页面请求的 IP 对照。
- 浏览器可以限制 WebRTC 暴露哪些候选地址。
- 代理、VPN、IPv6 和浏览器实现都会改变这次能看到的列表。
常见问题
用了 VPN,WebRTC 一定会暴露真实 IP 吗?
不一定。有的浏览器或 VPN 会挡住候选地址,有的则仍可能让页面看到 VPN 之外的地址。要看这次实际收集到什么。
WebRTC 是浏览器指纹的一种吗?
它更接近网络观察。指纹组合里可以把它算进去,但它本身回答的是「还能看到哪些地址」。
关掉网站的音视频权限,就不会收集地址了吗?
摄像头和麦克风权限管的是设备。候选地址的收集可以在建立连接的过程里发生,不一定等到您同意开摄像头。