一位 Linux 上的 Chrome 用户撞上了一堵墙,而这跟浏览器旧不旧毫无关系。他在 r/Twitch 上写道:「I'm getting the message that my browser is unsupported for Twitch, even though I'm using the latest version of chrome」。他的 User Agent 里的平台标记,就足以让网站把他拒之门外。
网站读到的这段字符串,user agent(有时也叫你的浏览器 agent),就是浏览器递给你访问的每个网站的身份证。烦人的不是找不到它,那只要十秒。烦人的是这串东西看起来像乱码,网站却悄悄拿它做判断。
下面讲这段字符串到底说了什么、在任意浏览器里调出它的最快方法,以及为什么你几乎永远不需要改它。过程中我们会用 Tabbit Browser 查一次,再让 AI 逐段讲解。
先说结论
User Agent 是一段文本字符串,向你访问的每个网站标明你的浏览器、版本、操作系统和设备类型。
最快的查法:打开 whatmyuseragent.com 或 DNSChecker 的 User Agent 页面这类检测网站。自带方法:在开发者工具控制台输入
navigator.userAgent。Chrome 的字符串里写着「Safari」和「KHTML, like Gecko」,是历史兼容原因,不是因为它真是 Safari。
现代浏览器会冻结字符串的部分内容(User-Agent reduction)来限制指纹追踪;需要更多信息的网站改用 Client Hints。
网站确实会基于 User Agent 拦截或降级请求,所以用扩展改它往往弄坏页面,帮不上忙。
一眼看懂:怎么查你的 User Agent
| 方法 | 步骤 | 适合谁 | 局限 |
|---|---|---|---|
| 检测网站 | 打开 whatmyuseragent.com 或 DNSChecker 的 User Agent 工具 这类页面;它会读取你的请求头并显示字符串 | 想点一下就拿到答案的人 | 需要联网;网站能看到你的这次访问 |
| 开发者控制台 | Windows/Linux 按 F12,macOS 按 Cmd+Option+I,打开 Console,输入 navigator.userAgent,回车 | 离线使用;复制精确字符串 | 要用到一个有些人从没按过的快捷键 |
| Network 面板 | 打开开发者工具,切到 Network 标签,刷新页面,点任意一条请求,查看它的请求头 | 开发者核对浏览器实际发出了什么 | 只是查个字符串的话,大材小用 |
想要视频演示的话,YouTube 上有一条不错的短视频,标题是 "How to find User Agent Information in your Browser"。
你的 User Agent 告诉了网站什么
在桌面版 Chrome 里用控制台方法,你会看到类似这样的内容,MDN 的文档把它记录为当前 Chrome 桌面版的格式:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36从左往右读,它就不再是乱码:
Mozilla/5.0:兼容标记。出于历史原因,如今几乎所有浏览器的字符串都以它开头,Firefox 也不例外。(Macintosh; Intel Mac OS X 10_15_7):平台,苹果的桌面操作系统。AppleWebKit/537.36:浏览器所基于的 WebKit 引擎版本。(KHTML, like Gecko):更多的兼容标记,下文解释。Chrome/143.0.0.0:浏览器及其版本。网站真正盯得最紧的就是这一段。Safari/537.36:没错,Chrome 的字符串以 Safari 标记结尾。是历史原因,不是 bug。
Firefox 的格式对自己更诚实:Mozilla/5.0 (platform; rv:gecko-version) Gecko/gecko-trail Firefox/firefox-version,见 MDN 的 Firefox 章节。Safari 会在引擎版本号前多加一个 Version/xx.x 标记;而在 iPhone 上,Chrome、Firefox、Edge 等所有第三方浏览器发的仍是 WebKit 风格的字符串,因为 iOS 要求浏览器必须使用 WebKit。
为什么这串东西长得这么怪
这些奇怪的标记是浏览器大战留下的伤疤。早期网站会检查 User Agent,对不认识的浏览器只给精简版页面,或者直接拒绝加载。新引擎的对策是借老引擎的名字。Chrome 加上 KHTML, like Gecko 和 Safari 标记,让为 WebKit 写的网站把自己当自家人。Firefox、Opera 和 Edge 都出于同样的原因背着各自的历史包袱。
Reddit 上一位 Firefox 支持贡献者 把现代现状总结得很到位:User Agent 是「a relic of the past, at least in theory... some questionably made sites still do」依赖的东西。写法规范的网站应该改用功能检测。这段字符串仍然重要,恰恰因为不是所有网站都写得规范。如果你连「浏览器在你和网站之间充当中介」这个概念都还模糊,先看我们的用大白话讲浏览器的指南补背景。
User-Agent reduction:为什么你的字符串变短了
上面这段字符串也是隐私问题。浏览器版本、精确的系统版本号,追踪器又能多凑一条数据,拼成你的指纹。所以 Chromium 系浏览器现在冻结了它的部分内容。MDN 的 reduction 说明描述了 Android 上的变化:平台版本固定为 Android 10,设备型号显示为冻结的 K,Chrome 的次版本号永远是 0.0.0,最终字符串类似 Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36。
桌面端也能观察到这一点。最新版 Chrome 在最新版 Mac 上仍上报 Intel Mac OS X 10_15_7,操作系统版本在字符串里干脆停更了。确实需要更详细信息的网站,可以通过 User-Agent Client Hints 申请:服务器发出 Accept-CH 头,浏览器用 Sec-CH-UA-* 系列头部回应,携带结构化的、按请求提供的信息。
两条实用结论。第一,如果网站因为你被冻结的版本号就说你的浏览器太旧,那是网站读错了字符串。第二,字符串变小了,改它能换来的隐私比以前更少。
User Agent 跟你作对的时候
因为服务器信任这段字符串,社区帖子里反复出现三类问题。
误判的情况并不少见。上面 Twitch 的案例:最新版 Chrome,平台标记不对,直接拦下。一些银行和政务门户认准特定浏览器,也是类似的检测逻辑;这个模式我们在患者门户那篇文章里讲过。
故意设卡的情况也存在。网站能不能凭这段字符串拦你?能。服务器可以出于任何理由拒绝任何请求,同一条 r/firefox 帖子也证实了这一点。
伪装带来的是反噬。轮换或伪造 User Agent 的扩展,是用一个问题换好几个问题。一位 Windscribe 用户在 Reddit 上报告,轮换 User Agent 后 YouTube 什么也加载不出来,Google Docs 也被当成「unsupported」浏览器拒之门外。哪怕把字符串清空也只是实验,不是解决方案。开发者 Šime Vidas 就在 X 上做过完全相同的尝试,想看看会弄坏什么。
这些都不意味着 User Agent 是什么危险的秘密。它不是密码,而且你访问的每个网站本来就已经拿到它了。值得搞懂这段字符串,理由和值得看清一张表单问你要什么信息一样:这样你才能判断出网站什么时候在犯傻。
用 Tabbit 查找并读懂你的 User Agent
在任何浏览器里查一下只要十秒。接下来的问题,「好吧,这段字符串对我到底意味着什么?」,才是 AI 原生浏览器派上用场的地方。
在 Tabbit Browser 里(我们在什么是 Tabbit Browser 里更仔细地介绍过这款 AI 浏览器),新标签页上的 Omnibox 同时就是 AI 输入框,整个流程不用离开一处:
在 Omnibox 里输入
whatmyuseragent.com这类检测网站并打开,完整字符串就显示在页面顶部。在侧边栏里用
@引用该页面,让 Tabbit 逐段讲清这段字符串:哪个标记是浏览器版本,哪个是被冻结的平台,为什么结尾有个 Safari 标记。AI 直接读你正在看的页面,你什么都不用复制。如果在某个网站撞上「unsupported browser」的墙,切换到 Agent Mode(这个名字背后的智能体模式正是我们的智能体浏览器解析所讲的内容),让 Tabbit 打开页面、读取出错信息,并报告网站声称拒绝的是什么。


坦率说清取舍:AI 讲解是阅读辅助,这段字符串的权威依据仍然是规范和 MDN 的参考文档,而不是某条聊天回答。Tabbit 不会修改你的 User Agent,也没有这个计划。字符串是平台层面的决策,冻结加 Client Hints 是行业共同认可的方向。Tabbit 帮上忙的是外围闭环:查字符串、读懂它、诊断读错它的页面。如果你真正的问题是更新后网站出错,而不是字符串本身,先从浏览器故障排查指南入手。想看指纹追踪的隐私侧面,见为什么隐私保护有时会让网站出错。如果真正让你烦的是一个又慢又臃肿的浏览器,那是另一种修法,见浏览器臃肿解析。
你该走哪条路?
| 情况 | 怎么做 | 原因 |
|---|---|---|
| 支持表单要你填浏览器信息 | 从检测网站复制你的 User Agent 填进表单 | 支持团队用它复现你的确切环境 |
| 网站说你的浏览器不受支持 | 先检查字符串,再更新浏览器;问题依旧,多半是网站的检测逻辑错了 | Linux 上 Chrome 的案例说明,最新版浏览器也可能被误读 |
| 你在调试布局或功能 bug | 用控制台或 Network 面板方法,并配合支持 Client Hints 的工具测试 | 开发者需要原始字符串,以及服务器实际协商到的信息 |
| 你想要更多隐私 | 别动 User Agent,改用跟踪器拦截 | 伪装会弄坏网站,而且 reduction 已经把暴露的数据压缩过了 |
| 反正你正要换浏览器 | 按速度、隐私和工作流契合度来选,别看 UA 字符串 | 每个现代浏览器发的字符串都差不多;真正要紧的区别在别处,见怎么选对浏览器和我们关于为生产力而生的浏览器的笔记 |
结论:User Agent 是一段公开的短字符串,网站用它来识别你的浏览器。需要时查一下,读懂到足以识别错误检测的程度,其他时候别碰它。如果你还希望「查完顺便讲明白」这一步就发生在你正在用的浏览器里,Tabbit Browser 可以在一处完成这两件事。macOS 和 Windows 上免费,还能一步从 Chrome、Edge 或 Safari 导入书签、历史和扩展,具体动作和我们的换浏览器前备份清单里写的一样。
常见问题
用大白话说,什么是我的浏览器 Agent?
它就是浏览器发给每个访问网站的短字符串,告诉对方你用的浏览器、版本、操作系统和设备类型。服务器据此决定给你返回哪个版本的页面。想立刻看到自己的,打开一个检测网站,或在浏览器开发者控制台输入 navigator.userAgent。
在 Chrome、Edge、Firefox 或 Safari 里怎么查我的 User Agent?
最快的办法是打开一个检测网站,它会读取你请求里的 User-Agent 头并显示出来。要用浏览器自带的方法,按 F12 或 Cmd+Option+I 打开开发者工具,切到 Console,输入 navigator.userAgent 后回车。所有主流桌面和移动浏览器都支持这两种方法。
为什么我的 Chrome User Agent 里写着 Safari 和 KHTML, like Gecko?
这些是浏览器大战留下的历史遗产。早期网站只认特定排版引擎,不认识的直接拒之门外,新浏览器只好在字符串里加上老引擎的名字换取放行。Chrome 用的是 Blink 内核,但字符串里仍带着 KHTML, like Gecko 和 Safari 这些标记来兼容旧网站。出于同样原因,几乎所有浏览器的字符串都以 Mozilla/5.0 开头。
网站能因为我的 User Agent 而封我吗?
能。服务器可以仅凭 User-Agent 头拒绝或降级任何请求。有些网站即使你的浏览器已是最新版,仍会对特定浏览器或平台关闭功能,或提示浏览器不受支持。社区报告里就有 Linux 上最新版 Chrome 被提示网站不支持的案例,原因只是该网站的检测逻辑盯着平台标记不放。
我该修改或隐藏自己的 User Agent 吗?
对绝大多数人来说,不要。现代浏览器已经把字符串的大部分内容冻结来减少指纹追踪,而轮换或清空 User Agent 的扩展往往制造的麻烦比解决的多,Google Docs 和 YouTube 都会中招。只有测试兼容性的开发者才需要伪装 User Agent,而且用完就该改回来。
什么是 User-Agent reduction 和 Client Hints?
User-Agent reduction 是 Chromium 系浏览器的隐私改动,冻结字符串的部分内容,比如把 Android 版本固定为 10、设备型号固定为 K、次版本号全部归零。确实需要更多信息的网站可以通过 User-Agent Client Hints 申请:服务器用 Accept-CH 头发起请求,浏览器用 Sec-CH-UA 系列头部回应。