---
title: "浏览器指纹与环境检测：时区、语言、字体和 IP 对不上，各自暴露了什么"
description: "网站能从浏览器指纹里读到时区、语言、字体和硬件信息，挂代理后这些常和出口 IP 对不上。本文逐项说明每种不一致暴露了什么，并给出用 cdnping /ip 自查、隐藏 IP 生成结果图的检查步骤。"
url: https://cdnping.org/blog/browser-environment-consistency
language: zh-CN
published: 2026-10-17
category: "IP 与隐私"
tags: ["浏览器指纹","时区","浏览器隐私","IP 检测","环境检测"]
source: cdnping.org
license: Free to quote and summarize with a link to the url above.
---
# 浏览器指纹与环境检测：时区、语言、字体和 IP 对不上，各自暴露了什么

时区、语言、字体“对不上”，指的是浏览器上报的环境信息和你出口 IP 所在的地区互相矛盾。最常见的情况是：流量从代理出去，IP 定位在国外，但系统时区还是 `Asia/Shanghai`，语言列表第一位是 `zh-CN`，字体里有微软雅黑和苹方。这几项任何网页都能直接读到，它们是浏览器指纹的一部分，组合起来既能推断你大致在哪，也能看出网络出口和设备本身不在一个地方。

下面先列网站能读到的环境信息，再解释代理为什么会造成不一致，最后给出自查步骤。本文只讨论如何减少不必要的暴露，不讨论伪装环境，也不涉及绕过任何平台的风控或地区限制。

## 网站在浏览器里能读到哪些环境信息

下面这些接口都不需要用户授权，页面脚本一加载就能读：

| 类别 | 常见读取方式 | 能看出什么 |
| --- | --- | --- |
| 时区 | `Intl.DateTimeFormat().resolvedOptions().timeZone`、`new Date().getTimezoneOffset()` | 系统设置的 IANA 时区名和 UTC 偏移 |
| 语言 | `navigator.language`、`navigator.languages`、请求头 `Accept-Language` | 浏览器界面语言和偏好语言的排序 |
| 区域格式 | `Intl.NumberFormat`、`toLocaleDateString()` | 日期、数字、货币的默认格式 |
| 字体 | 用 Canvas 或 CSS 测量文字宽高，逐个比对字体是否存在 | 装了哪些字体，间接反映操作系统和语言环境 |
| 硬件 | `navigator.hardwareConcurrency`、`screen.width/height`、`devicePixelRatio`、WebGL 渲染器字符串 | CPU 线程数、屏幕规格、显卡型号 |
| 自动化痕迹 | `navigator.webdriver` 等 | 浏览器是否被自动化工具控制 |
| 网络 | 出口 IP、WebRTC 候选地址、DNS 解析路径 | 网络在哪里出去、有没有走代理 |

单看每一项，信息量都不大。放在一起就是常说的浏览器指纹：维度一多，组合起来就足以把一台设备和大量其他设备区分开。

前六类信息来自设备，最后一类来自网络。代理只改变网络这一层，设备那一层原样不动，所以才会出现对不上。

## 为什么挂了代理，时区和语言还会和 IP 对不上

### 代理只换了出口，系统设置没变

无论是浏览器代理、系统代理还是全局 VPN，改变的都是数据包从哪里出去。时区是操作系统设置，语言是浏览器和系统设置，字体是本机安装的文件，这些都不经过网络，代理碰不到它们。

举个例子（假设场景）：一台在上海使用的 Windows 电脑，出口切到美国西海岸的节点。网站看到的是：

- IP 地理库定位：美国加州；
- 时区：`Asia/Shanghai`，UTC+8；
- 语言：`zh-CN, zh, en`；
- 字体：存在“微软雅黑”“宋体”；
- 浏览器往返延迟明显高于从该 IP 本地访问应有的水平。

每一项都没错，只是它们讲了两个不同的地方。

### 分流和多出口让情况更复杂

很多人用的是分流规则：国内站点直连，国外站点走代理。这时同一个浏览器在不同网站面前呈现的 IP 不同，但设备信息是同一份。如果规则没有覆盖 WebRTC 的 UDP 流量或 DNS 查询，网页还可能看到第二个、第三个地址。分流的原理和常见坑见 [分流（split tunneling）](/learn/split-tunneling)，WebRTC 和 DNS 两类泄漏的区别见 [DNS 泄漏与 WebRTC 泄漏](/learn/dns-leak-webrtc-leak)。

## 每种不一致分别泄露了什么信息

| 不一致的项 | 典型表现 | 泄露的信息 | 严重程度 |
| --- | --- | --- | --- |
| IP 地区 vs 时区 | IP 在国外，时区 UTC+8 | 设备实际所在的时区，大致推出所在国家或地区 | 高，最容易被读到 |
| IP 地区 vs 语言 | IP 在日本，语言首选 `zh-CN` | 使用者的语言习惯；单独看不说明问题，海外华人也是这样 | 中 |
| IP 地区 vs 字体 | 出现大量中文字体 | 系统语言版本、是否装过中文输入法或办公软件 | 中 |
| 网页 IP vs WebRTC IP | 两个地址不同 | 未经代理的真实出口，甚至内网地址 | 高 |
| 网页 IP vs DNS 解析服务器 | DNS 走本地运营商 | 你所在的运营商和城市 | 高 |
| 浏览器往返 vs 出口 TCP 往返 | 两者相差很大 | 流量经过中转，出口不在设备附近 | 中 |
| 自动化标记 | `webdriver` 为真 | 浏览器被脚本控制 | 视场景而定 |

语言和字体对不上本身很正常。在国外生活的中文用户、用英文系统的国内开发者，都会出现 IP 和语言不一致的情况。真正说明问题的是时区、WebRTC 和 DNS 这几项，因为它们直接指向设备或网络的实际位置。

## 怎样用 cdnping /ip 自查浏览器环境

[cdnping 的 IP 与环境检测](/ip) 把上面这些项目放在同一页，按下面的顺序看即可。

### 第一步：在常用状态下测一次

保持你平时上网的状态（开不开代理都行，以平时为准），打开 [/ip](/ip)，等待各项检测跑完。页面会给出：

- 出口 IP 情报：11 个地理库投票定位并给出置信度，判断原生 IP 还是广播 IP、机房还是家宽；
- 大陆分流检测：读取网易、腾讯、抖音等国内 CDN 回传的客户端 IP，判断你处于“大陆分流 / 全局代理 / 国内直连”中的哪一种；
- DNS 泄漏、WebRTC 泄漏：列出网页之外还能看到的地址；
- 延迟特征：浏览器往返和 Cloudflare 测得的出口 TCP 往返对比；
- 时区语言字体、硬件指纹、自动化痕迹：即上一节表格里的设备侧信息。

这些指纹在本地计算，不上传。

### 第二步：隐藏 IP 后生成结果图

检测完成后可以生成一张带水印的结果图，方便留档或发给同事一起排查。生成前打开“隐藏 IP”，这样图片发到群里或工单里，不会顺带公开你的出口地址。改动任何设置之前先存一张，作为基线。

### 第三步：逐项对照

拿结果图和下面的检查表逐行对照：

```text
[ ] 地理库定位的国家/地区，和时区推断的地区是否一致
[ ] 语言列表首位是否是你预期的语言
[ ] WebRTC 一栏是否只出现网页出口 IP（或为空）
[ ] DNS 解析服务器是否和出口 IP 在同一网络或同一地区
[ ] 大陆分流检测结果是否符合你的设置意图
[ ] 浏览器往返和出口 TCP 往返是否接近
[ ] 自动化痕迹是否为“未检测到”
```

有不一致不一定要处理。先问自己一个问题：这项信息被网站读到，对你是否有实际影响。

### 第四步：改动后再测一次

每改一项设置，重新打开 /ip，生成第二张结果图，和基线对比。一次只改一项，否则说不清是哪个改动起了作用。

## 怎样减少不必要的暴露

目标是让网站少拿到它本来不需要的信息，而不是把设备伪装成另一个地方。按优先级排：

1. 先处理网络层泄漏。 WebRTC 和 DNS 泄漏暴露的是真实网络位置，优先级最高。按 [DNS 泄漏与 WebRTC 泄漏](/learn/dns-leak-webrtc-leak) 的说明处理，分流用户顺便检查规则是否覆盖了 UDP 和 DNS。
2. 使用浏览器自带的指纹保护。部分浏览器的隐私模式或严格模式会对 Canvas、字体枚举、硬件信息做限制或统一化处理，例如 Tor Browser 的默认设置、Brave 的指纹保护、Firefox 增强型跟踪保护的严格模式。开启后网站拿到的往往是一组“很多人都一样”的值，可识别性下降。具体效果因版本而异，开启前后用 /ip 各测一次就知道。
3. 少装用不到的字体。 字体列表是区分度较高的一项，开发者机器上常有大量设计、编程字体。清理不需要的字体能降低可识别性，也不影响日常使用。
4. 分开浏览器配置。 工作、个人、调试分别用不同的浏览器配置文件，减少扩展和设置在不同场景之间串联。
5. 不要指望改一项就解决问题。 指纹是组合特征，改动一项往往会产生新的不一致，反而更显眼。这也是本文不建议手动修改时区或语言去“对齐”IP 的原因。

访问 AI 服务或其他平台时，地区限制以服务方条款为准。环境检测用来了解自己暴露了什么，不是用来绕过平台规则，请遵守服务条款和当地法规。

## 网站拿到这些信息会用来做什么

如果你是网站开发者，也可以换个角度看这份清单。时区和语言常被用于本地化：按时区显示时间、按 `Accept-Language` 选择页面语言，这是合理的用途。指纹类信息则多用于反欺诈和风控。自己的产品要读取这些信息时，建议只取业务真正需要的字段，并在隐私政策里说明。cdnping 的 /ip 页面把指纹放在本地计算、不上传，也是出于同样的考虑。

如果你在国内调用海外 AI API，网络环境排查不只有隐私这一面，连接质量同样重要。可以在 [首页在线测速](/) 测一下到 15 个 AI 模型 API 的首次连接和往返时间，或者在 [API 状态](/status) 看各家入口的实时探测结果。AGI Plan 是 cdnping 的商业合作方。如果你想用一个接口地址接入多家模型，AGI Plan（[agiplan.dev](https://agiplan.dev)）是一个兼容 OpenAI 和 Anthropic 接口格式的聚合网关，按月订阅、人民币结算，站方说明自己不是官方授权渠道，套餐见 [agiplan.dev/pricing](https://agiplan.dev/pricing)。

## 下一步可以做什么

- 打开 [/ip](/ip)，开启“隐藏 IP”，生成一张当前环境的结果图存档；
- 对照上面的检查表，把 WebRTC 和 DNS 两项先处理掉；
- 想了解出口 IP 的类型差异，读 [原生 IP 与广播 IP](/learn/native-ip-vs-broadcast-ip)；
- 检测方法和数据来源说明见 [数据方法](/methodology)。
