常用User-Agent大全

你当前使用的 User-Agent
名称 类型 平台 User-Agent(点击复制)

User-Agent 解析器

粘贴一条 User-Agent 后点击「解析」
常用User-Agent大全:收录 241 条常见 UA 字符串,覆盖桌面浏览器、移动设备、搜索引擎、AI 爬虫、HTTP 客户端等 12 个分类,支持关键词搜索、分类筛选、一键复制,并可查看当前浏览器 UA 与在线解析任意 User-Agent。

一、工具说明

常用 User-Agent 大全收录了 241 条*真实场景中会遇到的 User-Agent 字符串,覆盖桌面浏览器、移动设备、平板设备、搜索引擎、社交爬虫、AI 爬虫、SEO 工具、HTTP 客户端、内嵌 WebView、智能设备、邮件客户端、监控与自动化共 *12 个分类。

怎么用

  1. 看自己的 UA:页面顶部会实时显示你当前浏览器发送的 User-Agent,点「复制」即可拿走,点「解析」看它到底代表什么。
  2. 搜索:输入名称、类型、平台或 UA 中的任意片段都可以,比如 iPhone、Googlebot、Android 14、内嵌。支持空格分隔多个关键词(同时满足)。
  3. 筛选分类:点击「全部 / 桌面浏览器 / 移动设备 …」等标签,可与搜索叠加使用。
  4. 复制:点击表格里的 UA 字符串,或点右侧的复制图标,一键写入剪贴板。
  5. 解析任意 UA:在下方「User-Agent 解析器」里粘贴任意一条 UA,可解析出浏览器、操作系统、设备类型、渲染引擎、CPU 架构,并自动判断它属于浏览器、爬虫还是脚本客户端。

表格区高度固定 400px,内容超出时在区域内滚动,表头会吸顶固定。


二、User-Agent 是什么

User-Agent(简称 UA) 是 HTTP 请求头中的一个字段,用来告诉服务器「我是谁」——用什么浏览器、什么操作系统、什么设备在访问。

一个最简的 UA 长这样:

User-Agent: curl/8.11.0

而浏览器发出来的,通常是这样一条长字符串:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36

一条 UA 的解剖

片段含义
Mozilla/5.0历史遗留的「我是浏览器」声明,今天几乎所有浏览器都带着它
(Windows NT 10.0; Win64; x64)平台信息:操作系统版本与 CPU 架构
AppleWebKit/537.36渲染引擎内核(WebKit 系)
(KHTML, like Gecko)兼容性声明,最早由 Safari 沿用自 KHTML/Gecko
Chrome/131.0.0.0浏览器真实身份与版本
Safari/537.36兼容性声明,因为 Chrome 最初基于 WebKit 开发

可以看到,这条 UA 里同时出现了 Mozilla、AppleWebKit、KHTML、Gecko、Chrome、Safari 六个名字,但实际使用者只是 Chrome。这正是 UA 最反直觉的地方:它的大部分内容都是历史包袱和兼容性伪装,不是事实描述。


三、UA 为什么会这么乱

根源要追溯到 1990 年代的浏览器大战:

  1. Netscape 时代:服务器会检查 UA 里有没有 Mozilla,没有就只返回简陋页面。于是 Netscape 自己用了 Mozilla/1.0、Mozilla/2.0……
  2. IE 的伪装:微软为了拿到那些只为 Netscape 优化的页面,让 IE 在 UA 里冒充 Mozilla/4.0 (compatible; MSIE 6.0; ...),同时用 MSIE 标识自己。
  3. Firefox 跟进:Firefox 既想被当成 Mozilla 又不想被当成 IE,于是发明了 Mozilla/5.0 (…) Gecko/20100101 Firefox/x.y。
  4. WebKit / Chrome 继续加料:Safari 和 Chrome 为了通过那些检查 AppleWebKit、Safari 的代码,又把这两个名字加进 UA。

结果就是每出现一次新的「UA 检测」,后来者就得在 UA 里多塞一个名字。层层叠加到今天就变成了这条又长又矛盾的字符串。


四、UA 的五个主要用途

用途说明
服务端适配判断移动端 / 桌面端,返回不同模板或跳转到 m 站
统计分析统计浏览器、系统、设备占比,指导兼容性投入
反爬与风控识别爬虫、异常客户端,做限流或拦截
调试与测试模拟特定设备访问,验证兼容性问题
内容协商给不同客户端返回不同格式的资源

五、UA 的局限:它不可信

UA 是一个完全由客户端自由填写的字符串,服务器无法验证真伪。这意味着:

  • 用 curl 加一个 -A 参数就能伪装成任意浏览器
  • 浏览器扩展可以随意改写 UA
  • 爬虫可以把自己伪装成 Chrome,反过来也有浏览器把自己伪装成爬虫

所以:

永远不要用 UA 做安全判断的唯一依据。 权限控制要靠登录态与令牌,UA 只能用来做「体验优化」(比如决定给不给移动端布局)和「统计参考」。

还有一个容易踩的坑:UA 是浏览器的禁用请求头。用 JavaScript 的 fetch 或 XMLHttpRequest 是无法自定义 User-Agent 的,navigator.userAgent 也是只读的。想在浏览器里改 UA,只能通过开发者工具的设备模拟、浏览器扩展,或启动参数。


六、UA 缩减与 Client Hints

因为 UA 携带的信息越来越多(精确到系统小版本、设备型号),成了浏览器指纹追踪的重要来源。Chrome 从 2022 年起推行 UA 缩减(User-Agent Reduction):

缩减项变化
Chrome 版本只保留主版本号,后面统一补 0.0.0,如 Chrome/131.0.0.0
Windows 版本统一写成 Windows NT 10.0,不再区分 Win10 / Win11
macOS 版本统一写成 Mac OS X 10_15_7
Android 设备型号从 Chrome 110 起替换为固定的 K,变成 (Linux; Android 10; K)
CPU 架构统一为 x86_64,不再区分 Intel 与 Apple Silicon

作为替代,Chrome 引入了 User-Agent Client Hints(UA-CH),通过一组独立请求头按需提供信息:

Sec-CH-UA: "Chromium";v="131", "Not_A Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
Sec-CH-UA-Full-Version-List: "Chromium";v="131.0.6778.86", ...

它的好处是服务端必须先通过 Accept-CH 响应头声明需要哪些信息,浏览器才会在后续请求里带上,默认不暴露,隐私更可控。

需要留意的两点:

  • UA-CH 目前基本只有 Chromium 系支持,Safari 和 Firefox 没有实现
  • 不要立刻抛弃 UA,因为还有大量非 Chromium 客户端存在,实践中两者需要并存

七、爬虫与 AI 抓取:怎么管

用 robots.txt 声明

标准爬虫会遵守 robots.txt。针对 AI 抓取,常见的写法是逐条声明:

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Bytespider
Disallow: /

注意 Google-Extended 和 Applebot-Extended 比较特殊——它们不是独立的爬虫,而是控制 Google / Apple 的 AI 训练能否使用你内容的开关,实际抓取仍由 Googlebot / Applebot 完成。

在服务器层拦截

如果 robots.txt 不管用(总有爬虫不遵守),可以在 Nginx 用 map 做 UA 匹配拦截:

map $http_user_agent $block_ai {
    default 0;
    "~*(GPTBot|ClaudeBot|CCBot|Bytespider|PerplexityBot)" 1;
}

server {
    if ($block_ai) {
        return 403;
    }
}

注意:UA 可以伪造,这种拦截只能挡住「老实」的爬虫,无法防御恶意抓取。真要防,得靠频率限制、IP 信誉、行为分析等手段组合。


八、几个常见坑

1. 别用 UA 判断「是不是手机」

iPad 从 iPadOS 13 起默认请求桌面版网页,它的 UA 是 Macintosh; Intel Mac OS X 10_15_7,和 Mac 电脑一模一样。只靠 UA 判断移动端必然误判。推荐用 CSS 媒体查询或 navigator.maxTouchPoints 辅助判断。

2. 版本号字符串比较会出错

Chrome/9 和 Chrome/10 用字符串比较时 9 > 10。UA 里的版本号要按段拆分转成数字再比,或者直接用特性检测代替版本判断。

3. 新浏览器会被漏判

基于 UA 白名单的检测逻辑,遇到没见过的浏览器就会失效。能用特性检测(Feature Detection)就不要用 UA 检测,这是 Web 开发的基本原则。

4. UA 里的 (KHTML, like Gecko) 不是笔误

这是历史遗留的兼容性声明,Chrome、Edge、Safari 都会带,用来通过那些检查 Gecko 内核的旧代码。看到它不代表这是 Gecko 内核。

5. 空 UA 也会出现

有些脚本、扫描器、老旧客户端会完全不带 User-Agent 头。做日志分析时要把这种空值单独统计,别直接丢弃。


九、本表数据说明

  • 数据来源:IANA / 各浏览器官方文档、主流爬虫官方 UA 说明、长期公开的 UA 样本库。
  • 收录原则:优先收录实际会遇到、且结构有代表性的 UA。同一浏览器会按不同平台或不同版本分行列出,方便直接按平台搜索。
  • UA 中的版本号会随时间变化*,表中为代表性示例值。真正需要关注的是 *token 结构与书写格式——只要结构对了,替换版本号即可构造同类 UA。
  • 国内 App 内置浏览器(微信、QQ、支付宝、抖音等)的 UA 格式稳定,但具体版本号与构建号随 App 更新变化,表内为示例值。
  • 解析器基于开源的 ua-parser-js(MIT 许可),已下载到本站本地运行,不上传任何数据。

常见问题 FAQ

User-Agent 到底是什么?

User-Agent(简称 UA)是 HTTP 请求头中的一个字段,用来告诉服务器「我是谁」——用什么浏览器、什么操作系统、什么设备在访问。浏览器每次请求都会自动带上它,服务器据此做移动端适配、统计分析和爬虫识别。

为什么一条 UA 里同时出现 Mozilla、AppleWebKit、Gecko、Chrome、Safari 这么多名字?

这是浏览器大战留下的历史包袱。早年服务器会检查 UA 里有没有 Mozilla,没有就返回简陋页面,于是所有浏览器都开始冒充 Mozilla;后来为了通过检查 Gecko、AppleWebKit、Safari 的旧代码,新浏览器又把这些名字逐个加进去。结果就是每条 UA 都带着一堆自己并不使用的名字,这是兼容性伪装,不是事实描述。

怎么查看我自己的 User-Agent?

本页顶部会直接显示你当前浏览器发送的 UA,点「复制」即可。其他方式:浏览器地址栏输入 about:support(Firefox)或 chrome://version(Chrome);打开开发者工具的 Console,输入 navigator.userAgent;或看 Network 面板里任意请求的 Request Headers。

我能在网页里用 JavaScript 修改 User-Agent 吗?

不能。User-Agent 属于浏览器的禁用请求头(forbidden header name),用 fetch 或 XMLHttpRequest 设置会被浏览器忽略;navigator.userAgent 也是只读属性。想在浏览器里改 UA,只能通过开发者工具的「设备模拟」、安装 UA 切换扩展,或用启动参数启动一个自定义 UA 的浏览器实例。

UA 可以伪造吗?用它做安全判断可靠吗?

UA 完全由客户端自由填写,服务器无法验证真伪,用 curl 加一个 -A 参数就能伪装成任意浏览器。因此永远不要用 UA 做安全判断的唯一依据——权限控制要靠登录态与令牌,UA 只能用于体验优化和统计参考。

为什么我用 UA 判断手机端会误判?

最典型的坑是 iPad:从 iPadOS 13 开始,iPad 默认请求桌面版网页,它的 UA 是 Macintosh; Intel Mac OS X 10_15_7,和 Mac 电脑完全一样,只靠 UA 无法区分。此外 Chrome 的 UA 缩减也让 Android 机型信息变成了固定的 K。建议用 CSS 媒体查询、视口宽度或 navigator.maxTouchPoints 来判断,而不是只看 UA。

Chrome 的 UA 里版本号为什么变成 131.0.0.0 了?

这是 Chrome 从 2022 年推行的 UA 缩减(User-Agent Reduction):为了降低浏览器指纹追踪风险,UA 里只保留主版本号,后面统一补 0.0.0;Windows 版本统一写成 Windows NT 10.0,macOS 统一写成 10_15_7,Android 机型从 Chrome 110 起变成固定的 K。精确信息改为通过 User-Agent Client Hints 按需提供。

Client Hints 和 User-Agent 有什么区别?

Client Hints 是 Chrome 推出的替代方案,把原本塞在 UA 里的信息拆成一组独立请求头(如 Sec-CH-UA、Sec-CH-UA-Platform),并且必须由服务端先用 Accept-CH 响应头声明需要哪些信息,浏览器才会在后续请求里带上,默认不暴露,隐私更可控。注意它目前基本只有 Chromium 系支持,Safari 和 Firefox 没有实现,所以短期内还需要与 UA 并存。

怎么屏蔽 GPTBot、ClaudeBot 这类 AI 爬虫?

两步:一是写 robots.txt,逐条声明 User-agent: GPTBot 加 Disallow: /,标准爬虫会遵守;二是在 Nginx 用 map 匹配 $http_user_agent,命中就返回 403,对付不遵守 robots.txt 的爬虫。注意 Google-Extended 和 Applebot-Extended 比较特殊,它们不是独立爬虫,而是控制 Google / Apple 的 AI 训练能否使用你内容的开关。

UA 里的版本号怎么正确比较?

不要用字符串比较。Chrome/9 和 Chrome/10 按字符串比会得到 9 大于 10 的错误结果。正确做法是把版本号按点拆成数字数组逐段比较,或者干脆放弃版本判断、改用特性检测。这也是 Web 开发的通用原则:能用特性检测就不要用 UA 检测,基于 UA 白名单的逻辑遇到新浏览器必然漏判。

为什么有的请求完全没有 User-Agent?

有些脚本、扫描器、老旧客户端或隐私工具会故意不发送 User-Agent 头,某些安全扫描还会发送空字符串。做日志分析时要把这种空值单独统计并单独处理,直接丢弃会漏掉异常访问信号。本工具列表中已收录「空 UA」这一条,方便你在测试时覆盖这个边界情况。

表里的 UA 可以直接拿去用吗?版本号是新的吗?

可以直接用,UA 中的版本号会随时间变化,表中为代表性示例值。实际使用时真正需要关注的是 token 结构与书写格式——只要结构对了,把版本号替换成你需要的数值即可构造出同类 UA。如果要做严格的兼容性测试,建议直接用目标浏览器真实访问一次并复制它的 UA。