EnvTrace 环境一致性评估方法

EnvTrace 当前版本 1.0 最近审阅

EnvTrace 的环境一致性评估,用于检查当前网络出口、浏览器区域设置、WebRTC 和设备信息之间是否存在明显冲突。

它主要回答四个问题:

  • IP 所在国家和浏览器时区是否能对上?
  • IP 所在国家和浏览器语言是否能对上?
  • WebRTC 是否暴露了与当前页面不同的公网地址?
  • 浏览器声明的系统、平台和图形环境是否存在明确矛盾?

每一项会得到: 匹配 / 不匹配 / 未知

EnvTrace 再根据当前能够完成判断的项目,计算环境健康分,并把具体不一致项单独列出来。

这里的“一致”只表示: 当前观察到的这些信号能够相互解释。

它不代表环境一定真实;不一致也不等于环境一定存在风险。

EnvTrace 当前比较哪些信息?

Version 1.0 主要比较四组关系:

比较关系EnvTrace 在看什么
IP 国家 ↔ 浏览器时区时区是否落在当前国家常见范围内
IP 国家 ↔ 浏览器语言主要语言是否属于该国家常见语言
页面公网 IP ↔ WebRTCWebRTC 是否暴露另一条公网出口
系统 ↔ 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 位置目前尚未参与环境一致性比较。

如果后续新增比较信号、修改冲突条件或调整评分方式,本页面会同步更新版本和说明。