EnvTrace 环境一致性评估方法
您可以用这份结果核对:浏览器报出的时区、语言、系统和显卡,和这次公网出口是不是同一套环境。WebRTC 如果还露出了另一个公网地址,报告会单独指出来。
每一项都是匹配、不匹配,或因为缺少对照而未知。报告把它们收成 0 到 100 的环境健康分,并写出对不上的那一条。分数越高,已知的信号越整齐。您按问题列表去对时区、语言、WebRTC 或设备描述,就能知道该改哪一项。
一致性在比较哪些信息
一致性是几组分开的比较,不是一个「真环境 / 假环境」开关。您可以对上时区,同时对不上语言。报告会把对不上的那一项单独写出来。
目前参与比较的有四组:IP 所在国家与浏览器时区、IP 所在国家与浏览器语言、页面看到的公网 IP 与 WebRTC 露出的公网地址,以及浏览器自称的系统、平台和显卡是否互相排斥。
DNS 解析位置还不参与这组比较。没有 DNS 结果时,这一项保持未知。EnvTrace 不会因为缺少 DNS,就把环境记成不匹配。
IP 所在国家与浏览器时区
浏览器时区来自系统设置,通常是一个时区名和相对 UTC 的偏移。IP 这一侧用的是该国家常见的时区偏移,不是 GPS,也不是精确到城市的定位。
如果浏览器的偏移落在这个国家常见的范围内,结果是匹配。如果落在范围外,结果是不匹配,报告里会写「时区与 IP 国家不一致」。没有国家,或者没有可用的时区对照时,结果是未知,而不是不匹配。
例如,日本的 IP 配 Asia/Shanghai。如果上海的偏移不在日本常见的范围内,EnvTrace 会把它记成不匹配,没有单独的「邻近,可以忽略」一档。您在差旅中保留家乡时区,也会记成同一条。
IP 所在国家与浏览器语言
这里比较的是语言的主代码,和这个 IP 所在国家常见的语言。zh-CN 按 zh 来比。语言仍然是偏好,不是身份。
如果主代码不在这个国家的常见语言里,结果是不匹配,报告里会写「语言与 IP 国家不一致」。美国 IP 配中文浏览器,会记上这一条。您要让环境和出口成套,就把浏览器语言改成这个国家的常见语言。
没有国家,或者没有语言对照表时,结果是未知。
页面看到的公网 IP 与 WebRTC
这一项比较 WebRTC 露出的公网地址,和这次打开页面时看到的公网 IP。内网地址和链路本地地址不参与比较。
如果 WebRTC 露出的公网地址和页面上的公网 IP 不同,结果是不匹配,报告里会写「WebRTC 泄漏真实网络」。这表示浏览器还露出了另一条公网出口。
如果页面的公网 IP 还不知道,即使 WebRTC 已经露出地址,结果也只是未知,不把它叫作泄漏。只有内网地址时,不把它记成和出口 IP 冲突。
设备信号什么时候算不一致
设备这一项只在两套信号明显互相排斥时才记不一致。少见的浏览器、分辨率或字体,不会因为少见就被记成不一致。没有这种排斥时,设备按一致处理。
操作系统比较的是 User-Agent 声称的系统、navigator.platform,以及 Client Hints 里的平台。只有 Windows、macOS、iOS 和 Android 之间互相排斥,才记为冲突。iOS 和 macOS 同时出现不算冲突,因为 iPadOS 经常报告桌面平台。Linux、未知或含糊的平台名称,本身不构成冲突。
显卡只认两类明确的矛盾。一种是 WebGL Renderer 写着 Apple GPU,但系统不是 macOS 或 iOS。另一种是 Renderer 写着 Direct3D,但系统不是 Windows。User-Agent 写着 iPhone,Renderer 只是一块 NVIDIA 的名称,而且不含 Apple GPU 或 Direct3D,按当前方法不记冲突。
还有一种形态上的矛盾:浏览器声称自己是手机或平板,同时没有触摸,并且屏幕短边已经是桌面尺寸。普通的触屏桌面不会因为有触摸就被记成冲突。
出现上面任何一种情况,报告里会写「设备信号互相矛盾」。
这些结果如何进入环境健康分
报告给出 0 到 100 的环境健康分,并列出触发的问题。分数由已经有数据的项目合成。某一项还没有数据时,不拿一个猜测值填进去。
地理一致性看时区和语言。两项都未知时,这一项不进入分数。其中一项不匹配,这一项会下降,并写出对应的问题。
设备在没有互相排斥的信号时保持健康。出现这种排斥之后,这一项下降,并写出设备问题。
泄漏防护看 WebRTC。公网地址和页面出口不一致时,这一项下降。只有内网地址时也会下降,但幅度小于公网出口不一致。
IP 风险和代理质量在没有网络情报时保持待检测,不会从运营商名称猜一个分数。自动化痕迹看的是 webdriver 这类浏览器自动化信号,不属于上面这几组环境比较。
几个常见情况会怎么记
美国 IP,浏览器时区落在美国常见偏移内,语言是 en,WebRTC 的公网地址和页面 IP 相同,系统和显卡也没有互相排斥。这时时区、语言和 WebRTC 都是匹配,设备不记冲突。
还是美国 IP,但浏览器语言是 zh。语言记为不匹配,并出现「语言与 IP 国家不一致」。如果时区仍落在美国的偏移内,时区仍然是匹配。
德国 IP,时区是 Europe/Berlin,WebRTC 另露出一个不同的公网 IP。WebRTC 记为不匹配,并出现「WebRTC 泄漏真实网络」。
User-Agent 声称是 iPhone,WebGL 却是 Direct3D。显卡和系统冲突,出现「设备信号互相矛盾」。如果 Renderer 只是一块 NVIDIA 名称,且不含 Apple GPU 或 Direct3D,则不记设备冲突。
对上或不对上之后怎么用
匹配表示这几组观察说的是同一套环境。您可以把当前出口、时区和语言当作一组来用。
不匹配会指出具体是哪一项。时区对不上,就对系统时区和出口所在国家。语言对不上,就对浏览器语言和这个国家的常见语言。WebRTC 对不上,就是浏览器还露出了另一条公网出口。差旅中保留家乡时区、公司 VPN 或远程桌面,经常就是这样被记下来的,您知道原因之后可以决定要不要改。
如何阅读这份结果
先看环境健康分和风险档,再看问题列表里是哪一项对不上。
- 时区与 IP 国家不一致:对一下系统时区和当前出口所在的国家。
- 语言与 IP 国家不一致:把浏览器语言和这个国家的常见语言对一下。
- WebRTC 泄漏真实网络:浏览器露出了和页面出口不同的公网地址。
- 设备信号互相矛盾:系统、平台、Client Hints 或显卡之间出现了互相排斥的描述。
没有出现在问题列表里的项目,表示这次没有记成不匹配,或者仍然未知。
方法版本
Version 1.0 说明的是您现在会看到的比较:IP 所在国家与时区、IP 所在国家与语言、页面公网 IP 与 WebRTC 公网地址、设备信号是否互相排斥,以及这些结果如何进入环境健康分和问题列表。DNS 对照还没有接入。
比较方式或计分方式有实质变化时,这份方法会更新版本。