EnvTrace 环境一致性评估方法
EnvTrace 的环境一致性评估,用于检查当前网络出口、浏览器区域设置、WebRTC 和设备信息之间是否存在明显冲突。
它主要回答四个问题:
- IP 所在国家和浏览器时区是否能对上?
- IP 所在国家和浏览器语言是否能对上?
- WebRTC 是否暴露了与当前页面不同的公网地址?
- 浏览器声明的系统、平台和图形环境是否存在明确矛盾?
每一项会得到: 匹配 / 不匹配 / 未知
EnvTrace 再根据当前能够完成判断的项目,计算环境健康分,并把具体不一致项单独列出来。
这里的“一致”只表示: 当前观察到的这些信号能够相互解释。
它不代表环境一定真实;不一致也不等于环境一定存在风险。
EnvTrace 当前比较哪些信息?
Version 1.0 主要比较四组关系:
| 比较关系 | EnvTrace 在看什么 |
|---|---|
| IP 国家 ↔ 浏览器时区 | 时区是否落在当前国家常见范围内 |
| IP 国家 ↔ 浏览器语言 | 主要语言是否属于该国家常见语言 |
| 页面公网 IP ↔ WebRTC | WebRTC 是否暴露另一条公网出口 |
| 系统 ↔ Platform ↔ GPU | 设备描述之间是否存在明确矛盾 |
缺少足够数据时,对应项目保持未知。
未知不会被当成不匹配,也不会使用猜测值补齐。
当前版本中,DNS 位置暂不参与环境一致性比较。
IP 国家与浏览器时区
EnvTrace 会比较: 当前公网 IP 所在国家
和: 浏览器当前使用的时区偏移。
判断依据不是“必须属于某一个城市”,而是浏览器时区是否落在该国家正常使用的时区范围内。
匹配
浏览器时区落在该国家常见时区范围内。
不匹配
浏览器时区明显落在范围之外。
报告会提示: 时区与 IP 国家不一致
未知
没有取得 IP 国家,或者没有可用的时区对照数据。
例如:
IP 国家:日本
浏览器时区:Asia/Shanghai
如果当前偏移不属于日本的常见时区范围,这一项会被记为不匹配。
这只说明: 网络位置和浏览器时区当前没有对上。
用户旅行、远程办公或保留原系统时区,都可能产生这种结果。
IP 国家与浏览器语言
EnvTrace 会提取浏览器主要语言代码,并与当前 IP 国家常见语言进行比较。
例如:
- zh-CN → zh
- en-US → en
如果主要语言属于该国家常见语言,则记为匹配。
如果不属于,则提示: 语言与 IP 国家不一致
没有国家或语言对照数据时,则保持未知。
需要注意: 语言是用户偏好,不是位置证明。
例如:
美国 IP + 中文浏览器
完全可能来自正常用户。
因此,这项结果只是记录区域设置之间存在差异,而不会单独被解释为风险。
页面公网 IP 与 WebRTC
这一项用于检查: WebRTC 是否暴露了与当前页面出口不同的公网地址。
EnvTrace 会比较:
- 当前页面看到的公网 IP;
- WebRTC 返回的公网 IP。
内网地址和链路本地地址不作为另一条公网出口处理。
匹配
WebRTC 公网 IP 与页面公网 IP 相同。
不匹配
WebRTC 暴露出另一个不同的公网 IP。
报告会提示: WebRTC 暴露了不同的公网地址
未知
缺少页面公网 IP,无法完成比较。
即使此时 WebRTC 返回了地址,也不会直接判断为泄漏。
这项检测回答的是: 浏览器有没有同时向网站暴露另一条公网网络信息。
设备信号什么时候算不一致?
EnvTrace 不会因为某个设备参数比较少见,就判断环境不一致。
只有当几组设备信息明确互相排斥时,才会记录冲突。
当前版本主要检查:
- User-Agent 声明的系统;
- navigator.platform;
- Client Hints 平台;
- WebGL Renderer;
- 部分移动设备形态信号。
系统与平台冲突
当前主要识别:
- Windows
- macOS
- iOS
- Android
例如:
User-Agent 明确声明 Windows
Client Hints 明确声明 macOS
属于明确冲突。
但 iOS 与 macOS 同时出现不会直接判定冲突,因为部分 iPadOS 环境可能报告桌面平台相关信息。
Linux、未知平台或无法明确判断的值,也不会仅凭自身触发冲突。
系统与图形环境冲突
当前版本只处理能够明确判断的平台矛盾。
例如:
WebGL Renderer 明确显示 Apple GPU
但系统并不是 macOS 或 iOS
或者:
Renderer 明确显示 Direct3D
但系统不是 Windows
这类组合会被记录为: 设备信号互相矛盾
普通 GPU 型号、少见 Renderer 或无法明确归属平台的信息,不会仅凭自身触发冲突。
移动设备形态冲突
如果浏览器明确声明自己是手机或平板,同时:
- 没有触摸能力;
- 屏幕形态又明显接近桌面设备;
EnvTrace 可能将其记录为设备形态冲突。
普通触屏电脑不会因为支持触摸就被判断为异常。
环境健康分如何使用这些结果?
EnvTrace 会将已经能够判断的环境项目汇总成 0–100 的环境健康分。
分数越高,表示当前已知信号之间出现的明确冲突越少。
关键原则是: 只使用已经取得有效数据的项目。
缺少数据不会自动扣分,也不会用猜测结果替代。
当前主要包括:
- 时区一致性;
- 语言一致性;
- WebRTC 公网出口;
- 设备信号冲突。
IP 风险、代理属性和浏览器自动化痕迹属于其他检测维度,不等同于环境一致性本身。
例如:
一个 IP 被识别为 VPN
并不意味着: 环境一定不一致。
同样:
一个环境完全一致
也不意味着: IP 没有黑名单或其他风险记录。
这些结果在 EnvTrace 中会分别展示。
几个例子
美国 IP + 美国时区 + 英文
如果:
- IP 位于美国;
- 浏览器时区属于美国常见范围;
- 主要语言为 en;
那么时区和语言均可记为匹配。
美国 IP + 中文浏览器
如果:
- IP 位于美国;
- 时区属于美国范围;
- 语言为 zh-CN;
那么:
- 时区:匹配
- 语言:不匹配
报告会记录: 语言与 IP 国家不一致
它只描述当前设置差异,不代表用户身份异常。
页面 IP 与 WebRTC 不同
如果:
页面公网 IP:德国
WebRTC:另一条不同的公网 IP
则 WebRTC 项记为不匹配,并提示: WebRTC 暴露了不同的公网地址
系统与 GPU 明确矛盾
如果:
User-Agent:iPhone
WebGL Renderer:Direct3D
当前规则会将其记录为设备冲突。
如果 GPU 信息无法明确证明属于另一个平台,则不会仅凭 GPU 名称判断不一致。
如何阅读环境一致性结果?
建议先看: 环境健康分
了解当前已经检查到的信号中,是否存在明显冲突。
然后直接看: 问题列表
常见提示包括:
- 时区与 IP 国家不一致
- 语言与 IP 国家不一致
- WebRTC 暴露了不同的公网地址
- 设备信号互相矛盾
问题列表比总分更重要,因为它直接告诉你: 是哪一组信号没有对上。
没有出现在问题列表中的项目,可能是已经匹配,也可能因为缺少数据仍处于未知状态。
结果的边界
环境一致性评估只回答: 当前观察到的环境信号之间是否存在明确冲突。
它不能证明:
- 当前环境一定来自真实设备;
- 两个一致环境属于同一个人;
- 两个不一致环境属于不同用户;
- 环境一致就一定不会触发网站验证;
- 环境不一致就一定存在风险;
- 其他网站会采用与 EnvTrace 相同的判断方式。
旅行、VPN、远程桌面、多语言使用等正常场景,都可能产生合理的不一致。
因此,EnvTrace 不把环境一致性解释成: 真 / 假
或者: 安全 / 危险
它只是让具体差异变得可见。
方法版本
Version 1.0
当前版本覆盖:
- IP 国家与浏览器时区;
- IP 国家与浏览器语言;
- 页面公网 IP 与 WebRTC 公网 IP;
- 系统、Platform、Client Hints 和 GPU 之间的明确冲突;
- 部分移动设备形态冲突;
- 上述项目进入环境健康分和问题列表的方式。
DNS 位置目前尚未参与环境一致性比较。
如果后续新增比较信号、修改冲突条件或调整评分方式,本页面会同步更新版本和说明。