什么是 WebRTC 泄露?
为了接通通话,WebRTC 会收集所有能联系到你的地址:网卡上的局域网地址,以及 STUN 服务器看到的公网地址。网页几行脚本就能读到,不需要任何权限。如果 VPN 或代理只转发网页请求,STUN 请求就会从你自己的线路出去,网页就能拿到 VPN 背后的真实 IP。
浏览器里的视频通话靠的是 WebRTC,任何网页都能直接启动它,不用你同意。它会通过 UDP 去问 STUN 服务器(专门告诉你「外面看到的你是哪个地址」的服务器),而很多 VPN 和代理不转发 UDP。下面是 WebRTC 暴露出来的地址,以及它和网站看到的地址的对比。
你正在 的内置浏览器里,下面的结果是这个内置浏览器的。想测你平时用的浏览器,请复制链接,到 Safari 或 Chrome 里打开。你正在某个 App 的内置浏览器里,下面的结果是这个内置浏览器的。想测你平时用的浏览器,请复制链接,到 Safari 或 Chrome 里打开。你正在微信里打开,下面的结果是微信内置浏览器的。想测你平时用的浏览器,请点右上角 ··· 选「在浏览器打开」。
口口口口口口口口口口口,现在人在口口口口口口口口口口口口口口口口口口。你说口口口口口口口,电脑的时区是口口口口口口口,时钟用口口口口口口。
口口口口口口口口口口口口口口口口口口口口口口
你用的是口口口口口口口口口口,浏览器是口口口口口口口口口口口口,屏幕口口口口口口口口口口口,显卡是口口口口口:口口口口口口口口口口口口口口口口口口口口口口口口口口。
你通过口口口口口口口口上网,口口口口口口口口口口,口口口口口口口口口口口口口口口口口;帮你把网址换成 IP 地址的 DNS 服务器在口口口口口。口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口。
你喜欢口口口口口,口口口口口口口口口口,口口口口口口口口口口口口口口。口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口。装的字体透露了一点:口口口口口口。至于年龄,口口口口口口口口口口口口口口。
在网站眼里,这是口口口口口口口口口口口口口口口口口口口口口口口口口。口口口口口口口口口口口口。你在口口口口口口口口口口口口口打开了这个页面,口口口口口,口口口口口口口口口口口。
放在人群里,口口口口口口口口口口口口口口口口口口口口口口口。
比特越多越罕见:每多 1 比特,和你一样的人就少一半。各项之间并不独立(比如 4K 屏和高端显卡常一起出现),所以整个指纹按它自己的真实次数算,不是把各项乘起来。
为了告诉你有多少人和你一样,本站会累计匿名计数:不存 IP,不存完整指纹,也没有单次访问的记录。 ·
CF-Connecting-IPrequest.cf.cityrequest.cf.latituderequest.cf.asOrganizationedns.ip-api.comrequest.cf.timezoneDNS PTRrequest.cf.colorequest.cf.tlsVersion/cdn-cgi/trace · kex, sni/cdn-cgi/trace · warpTLS ClientHelloprobe.zs.al · TCP SYNprobe.zs.al · JA4probe.zs.al · HTTP/2 SETTINGSprobe.zs.al · HTTP/3 · QUIC JA4Date.now()RTCPeerConnection · STUNWebRTC host candidateIPv6 EUI-64 (ff:fe)1.1.1.1 · /cdn-cgi/tracechatgpt.com/cdn-cgi/traceclaude.ai/cdn-cgi/tracewww.cloudflare.com/cdn-cgi/traceCloudflare Radar · IPv4 / IPv6User-AgentAccept-LanguageSec-CH-UASec-CH-UA-PlatformAccept-EncodingDNT · Sec-GPCReferer · document.referrernavigator.languagesIntl.DateTimeFormatIntl …timeZoneIntl …hourCycleIntl.Locale weekInfoIntl.NumberFormatIntl.supportedValuesOfnavigator.keyboardspeechSynthesisError.messageJS feature probesFunction.prototype.toString · iframeCSS.supportscanvas text antialiasingcanvas.toDataURLWebGL getParameterOfflineAudioContextMath.* → SHA-256emoji measureTextfonts → SHA-256getClientRects · RangeSVG getBBox · getComputedTextLengthmeasureText actualBoundingBoxWebGL readPixelswindow · HTMLElement · CSS keysperformance.now() resolutionrecursion depthSHA-256screen · cores · GPU · fonts → SHA-256HTTP cache · ETag / If-None-Matchcanvas × 2navigator.brave · noise · liesuserAgentDatauserAgentData.brands…architecture · bitnessscreen · devicePixelRatiorequestAnimationFramescreen.isExtended · screenXinnerWidth · availHeightoffsetWidth − clientWidthWebGL RENDERERnavigator.gpu adapter.infoGPUAdapter limits · featuresWebGL2 · MAX_TEXTURE_SIZEhardwareConcurrencynavigator.deviceMemoryperformance.memorymaxTouchPoints · pointernavigator.getBatterygeolocation (on request)devicemotion (on request)navigator.connectionenumerateDevicesAudioContext.sampleRatePublicKeyCredentialbluetooth.getAvailabilityMediaSource.isTypeSupportedRTCRtpSender.getCapabilitiesMediaRecorder.isTypeSupportedmediaCapabilities.decodingInforequestMediaKeySystemAccessstorage.estimateprefers-color-schemeprefers-reduced-motioncolor-gamut · dynamic-rangeprefers-contrast · forced-colorsfont-size: medium · AccentColordisplay-modedoNotTrack · GPCnavigator.cookieEnabledpermissions.queryusb · serial · hid · IdleDetector …pdfViewerEnablednavigator.webdriverWorker · navigatorbait element7 tracker scripts (on request)window.ethereum · DOM markschrome-extension:// fileshistory.lengthlocalStorage · IndexedDB · Cache · window.namecanvas measureText为了接通通话,WebRTC 会收集所有能联系到你的地址:网卡上的局域网地址,以及 STUN 服务器看到的公网地址。网页几行脚本就能读到,不需要任何权限。如果 VPN 或代理只转发网页请求,STUN 请求就会从你自己的线路出去,网页就能拿到 VPN 背后的真实 IP。
页面向 Cloudflare 和 Google 的 STUN 服务器发起 WebRTC 连接,列出它们报回来的地址(srflx 候选),再和本站、你的其他出口以及 IPv6 测试看到的地址对比。哪个都对不上的地址,就是泄露。局域网地址来自 host 候选。这些地址不会上传,也不会保存。
代理客户端(Clash、V2Ray 等):打开 TUN 模式,让 UDP 也走代理。Chrome 和 Edge:装 WebRTC Network Limiter 扩展,或者在 uBlock Origin 里勾选「防止 WebRTC 泄露本地 IP 地址」。Brave:设置 → 隐私 → WebRTC IP 处理策略 → 禁用非代理 UDP。Firefox:在 about:config 把 media.peerconnection.ice.default_address_only 设为 true,或者把 media.peerconnection.enabled 设为 false 彻底关掉。改完再测一次。
以 .local 结尾的名字,说明浏览器把局域网地址藏起来了(mDNS),这正是你想要的。真实的局域网地址(比如 192.168.1.5)暴露不了你在哪,但会让你的指纹更特别。至于和 IPv4 出口不同的 IPv6 地址,只有它不是你的 IPv6 出口时才算泄露:检测会拿它和网站看到的 IPv6 地址比对。