BreakHub
知识库浏览器指纹

时区、语言和 IP:网站怎么看出你在“装”

风控系统很少靠单个信号下结论,它看的是 IP 推断出的时区、浏览器报告的时区、系统时钟、HTTP 语言头和 JS 语言列表是否互相吻合。哪些不一致是正常的,哪些会被重罚。

5 分钟阅读 · 发布于 2026年9月10日

一个人挂着日本节点、系统时区是上海、浏览器语言是简体中文。网站不用做任何高深的分析,把这三样摆在一起就知道是怎么回事。这不一定导致封禁,但会进入评分。网站到底比对了哪几样、哪些不一致其实无所谓,往下看。

从 IP 推时区

服务器拿到你的 IP 后,查一下 GeoIP 数据库(MaxMind、IPinfo 之类),得到国家、地区、城市,顺带一个时区名,比如 Asia/Tokyo。这个推断在国家层面相当可靠,城市层面就未必了——数据库经常把一整段机房 IP 标到运营商注册地。

有了 IP 时区,服务器就能算出"在这个时区,现在应该是几点几分"。这一步很关键,后面要用。

浏览器自己报告的时区

页面 JS 有两个来源:

  • Intl.DateTimeFormat().resolvedOptions().timeZone 返回 IANA 时区名,如 Asia/Shanghai
  • new Date().getTimezoneOffset() 返回本地时间与 UTC 的差,单位分钟,北京时间是 -480

正常浏览器里两者是同一个系统设置的两种表达,永远自洽。它们和 IP 时区的关系就不一定了:IP 在东京(UTC+9),JS 说上海(UTC+8),差一个小时。

夏令时是个容易忽略的坑。America/Los_Angeles 冬天偏移是 480,夏天是 420。网站比对时会按当前日期算,改了时区却没考虑夏令时的工具在特定月份会露馅。

时钟本身

除了时区,还可以比时间。服务器知道 IP 时区下的当前时刻,页面把 new Date() 发回去,两者相减。如果偏差只有几秒,说明系统时钟准;如果差了十几分钟,要么时钟没同步(老式虚拟机常见),要么时区和时钟是被分别改过的。本站的真实性评分里,超过三分钟的偏差会扣一小部分分数——不重,因为普通人的电脑时钟也会漂。

语言:三个地方,三个答案

语言信息会从三个地方泄漏,而且它们不在同一层:

  1. Accept-Language 请求头。浏览器每次请求都带,服务器直接看到,形如 zh-CN,zh;q=0.9,en;q=0.8
  2. navigator.languagenavigator.languages。页面 JS 读到的,正常情况下和请求头是同一份设置。
  3. Intl 的默认 locale,比如 new Intl.NumberFormat().resolvedOptions().locale。反映系统或浏览器的区域设置,格式化数字和日期时用。

真实浏览器里三者高度一致——不完全一样但同源。Accept-Language 的第一项和 navigator.language 不同,是本站扣分较明显的一项,因为它几乎只在有人手动改了其中一处时才发生。

两个例子

IP 日本、时区 Asia/Shanghai、语言 zh-CN。 这是最典型的"中国用户走日本节点"。三个信号里有两个说中国,一个说日本。多数网站不会因此拦你,因为这个组合太常见了,而且它是诚实的:你没有伪装任何东西,只是流量绕了一下。它会被记录,可能影响推荐内容或风险评分,仅此而已。

IP 美国、时区 America/Los_Angeles、语言 zh-CN、字体列表全是中文字体。 对一个住在洛杉矶的华人来说这再正常不过。但对风控模型来说,这个组合与"改了时区的国内用户"高度重叠,所以它可能比第一种更容易触发额外验证。讽刺的是,越努力把时区改得和 IP 一致,越像在伪装——除非语言、字体、键盘布局一起换。

反检测浏览器常犯的错

所谓"指纹浏览器"或反检测浏览器,卖点是让每个配置文件看起来像不同的真人。它们常在这几个地方翻车:

  • 改了 JS 时区,没改 Accept-Language,或者反过来。
  • 覆盖了 IntltimeZone,却忘了让 getTimezoneOffset() 跟着变,两个 API 给出矛盾的答案。
  • 改时区不改系统时间,导致按 IP 时区算出来的时钟偏差正好是整数小时。
  • 语言列表顺序不自然,比如 en-US, zh-CN 却没有 zh,或者 Accept-Language 里只有一项而 navigator.languages 有五项。
  • 只改了浏览器可见的部分,HTTP 层(包括 Client Hints)还是老样子。

这些错误的共同点是"改了一半"。风控系统对改了一半的环境极其敏感,因为真实用户里几乎不存在这种情况。

对翻墙用户的建议

不要追求"完美伪装",那是另一个行业的需求。你需要知道的只是:时区和 IP 不一致是翻墙的自然结果,网站早就见惯了,本站的真实性评分对它扣分也很轻。真正会被重罚的是明显的造假——UA 与内核不符、navigator.webdriver 为真、两次 canvas 结果不同。保持浏览器原样,把精力放在选一个靠谱的工具上,比折腾时区更有用。

想看自己的三个时区、三个语言值分别是什么,去时区检测页面跑一下即可。

常见问题

把系统时区改成节点所在地会不会更安全? 通常不会。除非语言、系统时钟、字体、Client Hints 一起调整,否则只是把一种不一致换成另一种,而后者更像伪装。

IP 时区显示错了,明明在深圳却说是广州,要紧吗? 不要紧。GeoIP 的城市精度本来就有限,网站比对的是时区而不是城市,深圳和广州都是 Asia/Shanghai

浏览器语言设成英文会有影响吗? 不会被扣分,只要请求头和 JS 一致。很多国内开发者就是全英文环境。会影响的只是网站默认给你什么语言的页面。