时区、语言和 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() 发回去,两者相减。如果偏差只有几秒,说明系统时钟准;如果差了十几分钟,要么时钟没同步(老式虚拟机常见),要么时区和时钟是被分别改过的。本站的真实性评分里,超过三分钟的偏差会扣一小部分分数——不重,因为普通人的电脑时钟也会漂。
语言:三个地方,三个答案
语言信息会从三个地方泄漏,而且它们不在同一层:
Accept-Language请求头。浏览器每次请求都带,服务器直接看到,形如zh-CN,zh;q=0.9,en;q=0.8。navigator.language和navigator.languages。页面 JS 读到的,正常情况下和请求头是同一份设置。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,或者反过来。 - 覆盖了
Intl的timeZone,却忘了让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 一致。很多国内开发者就是全英文环境。会影响的只是网站默认给你什么语言的页面。