User-Agent 怎么看?从一条 UA 分辨是真人浏览器、搜索引擎爬虫还是脚本
User-Agent(简称 UA)是 HTTP 请求头里的一个字段,客户端每次访问网页时都会自动带上,告诉服务器「我是谁、用什么软件、跑在什么平台上」。它本身属于 HTTP 协议字段、不是网络拨测,但宝塔拨测的 蜘蛛模拟抓取 工具本质就是「用一条指定 UA 去抓一次网页」——能不能看懂 UA,直接决定你能不能读懂抓取结果里那一行 User-Agent。本文只解决一个问题:拿到一条 UA,怎么分辨它是真人浏览器、搜索引擎爬虫还是脚本。
UA 的标准结构:两段式
按 HTTP 规范(RFC 9110)和 MDN 对 User-Agent 头的说明,一条 UA 的基本语法是:
User-Agent: <product> / <product-version> <comment>
也就是「产品名 / 版本号 + 注释」。浏览器把这条语法展开成更复杂的形态,常见格式是:
Mozilla/5.0 (<系统信息>) <平台> (<平台细节>) <扩展>
其中 Mozilla/5.0 是历史兼容前缀——早年为兼容只认 Mozilla 的服务器,几乎所有浏览器都保留了这个开头,它并不代表浏览器真是 Mozilla。真正用来判断身份的是后面的产品名和版本号。
三类 UA 怎么一眼认出来
拿到一条 UA,先看它属于下面三类里的哪一类:
| 类别 | 典型形态 | 特征 |
|---|---|---|
| 真人浏览器 | Mozilla/5.0 (...) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/... Safari/... |
以 Mozilla/5.0 开头,带浏览器内核和平台信息 |
| 搜索引擎爬虫 | Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) |
带 bot/spider 产品标识 + 官方注释 URL |
| 脚本/命令行工具 | curl/8.14.1、python-requests/2.32.3 |
直接「产品/版本」,没有浏览器外壳 |
关键区别:爬虫和浏览器都可能以 Mozilla/5.0 开头(Googlebot 就这样),所以「有没有 Mozilla/5.0」不是判断标准。判断爬虫看两点:UA 里有没有 bot/spider 这类产品标识,以及有没有 +http://... 这种指向官方说明页的注释 URL。
四条真实 UA 对照
下面四条 UA 全部来自可核实的真实来源(2026-10-30 采集):
| 来源 | 真实 UA | 判定 |
|---|---|---|
| 本机 curl(实测) | curl/8.14.1 |
脚本 |
| 本机 Python requests(实测) | python-requests/2.32.3 |
脚本 |
| Chrome(Android,MDN 官方示例) | Mozilla/5.0 (Linux; Android 16; Pixel 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.12.45 Mobile Safari/537.36 |
真人浏览器 |
| Googlebot 桌面版(Google 官方文档) | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/W.X.Y.Z Safari/537.36 |
搜索引擎爬虫 |
(注:W.X.Y.Z 是 Google 官方文档里对「当前 Chrome 主版本」的占位写法。)
看对照表就能明白分辨逻辑:
curl/8.14.1只有产品名和版本号,一眼就是脚本。- Chrome 那条有完整的浏览器外壳(Mozilla/5.0 + AppleWebKit + Gecko + Chrome + Safari + 平台),但没有
bot标识,是真人浏览器。 - Googlebot 那条虽然也套着
Mozilla/5.0和浏览器外壳,但末尾多了(compatible; Googlebot/2.1; +http://www.google.com/bot.html),这个 token 就是爬虫的「身份证」。
Googlebot 的三种常见 UA 形态
Google 官方文档列出了 Googlebot 的 UA,其中最常见的三种:
- Googlebot 桌面版:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/W.X.Y.Z Safari/537.36 - Googlebot 移动版:
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) - Googlebot-Image(抓图):
Googlebot-Image/1.0
注意 Googlebot 的移动版和桌面版遵守同一个 robots.txt token Googlebot,所以你没法在 robots.txt 里分别针对移动版和桌面版给不同规则。
三步判断法:拿到日志里的一条 UA 怎么定位
把上面的规律落成三个判断步骤:
- 看有没有浏览器外壳:没有
Mozilla/5.0、直接是产品/版本(如curl/8.14.1)→ 脚本/命令行工具。 - 看有没有爬虫标识:有
Googlebot/Baiduspider等bot/spider产品名,或带compatible;++http://...注释 → 搜索引擎爬虫。 - 看有没有平台与内核信息:有完整
AppleWebKit/Gecko/Chrome/Safari+ 系统信息 → 真人浏览器。
一个必须记住的边界:UA 是客户端自报的字符串,可以被伪造。任何人用 curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; ...)" 就能伪装成 Googlebot。所以 UA 只能做第一层粗筛,真要确认一个请求是不是官方爬虫,还要反查它的来源 IP 是否落在官方公布的网段内——Google 官方就公布了 googlebot.com 的 IP 网段和 hostname 特征(crawl-*.googlebot.com)供站长核对。
用宝塔拨测工具解析一条 UA
不想手工拆字段,可以把 UA 粘进 宝塔拨测的 UA 分析工具,它会自动拆出浏览器、内核、平台、设备等字段。想验证某个爬虫 UA 实际访问你的站点时会怎样,就用 蜘蛛模拟抓取 选「自定义 UA」填进去抓一次,看它拿到的 HTTP 状态码和页面内容。
一句话总结:UA 就是客户端自报的身份,判断身份别看 Mozilla/5.0 这种历史前缀,要看产品名——带 bot/spider 标识和 +http:// 官方注释的是爬虫,直接「产品/版本」的是脚本,带完整浏览器内核和平台信息的是真人;但 UA 可伪造,确认官方爬虫还得反查来源 IP 网段。
常见问题
User-Agent 是什么?写在哪里?
User-Agent(简称 UA)是 HTTP 请求头里的一个字段,由客户端(浏览器、爬虫、命令行工具)在每次请求时自动带上,告诉服务器「我是谁、用什么软件、跑在什么平台上」。服务器根据它决定返回什么内容,站长也靠它判断访问日志里的一条条记录来自真人还是爬虫。
UA 里的 Mozilla/5.0、AppleWebKit/537.36 是什么意思?
Mozilla/5.0 是历史遗留的兼容前缀,几乎所有现代浏览器都保留它,不代表真是 Mozilla 浏览器;AppleWebKit/537.36、Gecko、Chrome、Safari 这些内核标识同样来自历史兼容约定,不是真的对应某个产品。所以判断客户端身份要看 UA 里的产品名和版本号,而不是这几个前缀。
怎么从 UA 判断是不是搜索引擎爬虫?
搜索引擎爬虫的 UA 里通常带爬虫产品标识(如 Googlebot、Baiduspider)和官方注释 URL(如 +http://www.google.com/bot.html)。Google 官方做法是在 UA 末尾加 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),即使前面套着 Mozilla/5.0 外壳,也能靠这个 token 认出是爬虫。
怎么判断是真人浏览器还是脚本/命令行工具?
真人浏览器 UA 以 Mozilla/5.0 开头、带浏览器内核和平台信息(AppleWebKit、Gecko、Chrome、Safari 等);脚本和命令行工具 UA 很短,直接是「产品/版本」,如 curl/8.14.1、python-requests/2.32.3,不带浏览器外壳。
UA 能伪造吗?靠 UA 判断靠谱吗?
能伪造——UA 只是客户端自报的字符串,任何人都能用 curl -A 或改请求头伪装成 Googlebot 或浏览器。所以 UA 只能做第一层粗筛:快速认出「像爬虫的请求」,真要确认是不是官方爬虫,还得反查来源 IP 是否落在官方公布的网段内(如 Google 公布的 googlebot.com 网段)。
用宝塔拨测怎么快速解析一条 UA?
把 UA 粘贴到宝塔拨测的 UA 分析工具(t.bt.cn/tools/user-agent-analyzer.html),它会拆出浏览器、内核、平台、设备等字段;想验证某个爬虫 UA 实际会怎样访问你的站点,可以用蜘蛛模拟抓取(t.bt.cn/tools/spider-crawl.html)选「自定义 UA」抓一次。