宝塔双11预热:分享抽 iPad 等好礼,100% 中奖!查看活动
当前位置:论坛首页 > 宝塔拨测 > 宝塔拨测

拿到一条 User-Agent 怎么判断?真人浏览器、搜索引擎爬虫...

发表在 宝塔拨测前天 09:45 [复制链接] 0 25

一句话答案:别盯着 Mozilla/5.0 这个老前缀看,要看产品名——UA 里出现 bot/spider 标识、还带 +http:// 官方说明地址的,基本是搜索引擎爬虫;只有「产品/版本」两节的,多是脚本或命令行工具;带完整内核与平台信息的,才是真人浏览器。当然 UA 能被伪造,要坐实官方爬虫身份,还得回头核对来源 IP 段。
翻网站日志的时候,每条请求后面都挂着一串 User-Agent(简称 UA)。它挂在 HTTP 请求头上,客户端访问网页时会自动填上,相当于自报家门:什么软件、什么平台。宝塔拨测的蜘蛛模拟抓取工具,实质就是用一条你指定的 UA 去抓一次页面——能读懂 UA,抓取结果里那行 User-Agent 也就看得懂了。这篇只讲一件事:手上有一条 UA,怎么判断它来自真人浏览器、搜索引擎爬虫,还是脚本。
一、UA 的基本语法:产品 + 注释
参照 RFC 9110(HTTP 规范)和 MDN 对 UA 头的描述,它最基础的写法长这样:
拆开读就是:产品名、一条斜杠、版本号,末尾再跟一段注释。浏览器在这个骨架上又加了不少东西,常见的展开形态是:
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 就是如此,所以拿这个前缀当判据会翻车。认爬虫主要看两样东西——产品名里有没有 bot/spider,以及注释里有没有 +http://... 这类指向官方说明页的地址。
三、四条真实 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 桌面版(引自官方文档)
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 只是官方文档的占位写法,代表当前的 Chrome 主版本号。)
对照着看,判断逻辑就出来了:
  • curl/8.14.1 光秃秃一个产品名加版本号,脚本无疑。
  • Chrome 那条外壳一层不少(Mozilla/5.0 起头,AppleWebKit / Gecko / Chrome / Safari 全在,还带着平台信息),唯独没有 bot 标识,是真人。
  • Googlebot 那条外壳也套着,但末尾多了 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),这段 token 相当于爬虫的证件。
四、Googlebot 常见的三种 UAGoogle 官方文档里列了 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
顺带提一句:移动版和桌面版在 robots.txt 里共用 Googlebot 这一个 token,想给两者分别写规则是做不到的。
五、实战:日志里捞到一条 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 的地址段和 crawl-*.googlebot.com 这类 hostname 特征挂在外面,供站长比对。
六、不想手拆字段?交给宝塔拨测的工具
手工切字段太费劲,可以直接把 UA 粘进宝塔拨测的 UA 分析工具,它会把这些字段逐项拆开:设备、平台、内核、浏览器。想看看某个爬虫 UA 真来访问站点会怎样,用蜘蛛模拟抓取选「自定义 UA」填进去跑一次,返回的状态码和页面内容一目了然。

常见问题
User-Agent 到底是个什么东西,放在哪?
UA 是 HTTP 请求头里的一项,浏览器、爬虫、curl 这类工具发请求时都会自动填上,相当于告诉服务端自己用什么软件、在什么系统上跑。服务端据此决定回什么内容;站长查日志时,也靠它分出哪条记录是真人、哪条是机器。

UA 里那些 Mozilla/5.0、AppleWebKit/537.36 前缀到底有啥用?
这两段都是历史兼容遗留。Mozilla/5.0 是早年为了骗过只认 Mozilla 的服务器而保留的前缀,AppleWebKit/537.36、Gecko、Chrome、Safari 同理,属于约定俗成的写法,并不代表客户端真出自这些产品。要判断身份,得往后面的产品名和版本号看。

怎么认出搜索引擎爬虫?
抓两个特征:产品标识和注释地址。爬虫的 UA 里一般会出现 Googlebot、Baiduspider 这类名字,且常附一个 +http://... 的官方说明链接。Google 的做法就是把它塞在末尾,形式为 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),外面就算套着 Mozilla/5.0 也认得出来。

真人浏览器和脚本怎么区分?
看有没有浏览器那层壳。真人浏览器以 Mozilla/5.0 起头,后面堆着内核和平台信息;脚本工具通常短得多,形如 curl/8.14.1、python-requests/2.32.3,只有一个产品名加版本号。

UA 会被伪造吗?只看 UA 靠得住吗?
会,而且很容易。UA 是客户端自己写的字符串,用 curl -A 或者直接改请求头,就能冒充 Googlebot 或 Chrome。因此它只适合做第一层过滤,用来快速挑出「长得像爬虫」的请求;真要确认官方身份,必须拿来源 IP 去比对官方公布的网段(例如 Google 的 googlebot.com 段)。

用宝塔拨测有没有更快的解析办法?
有。把 UA 贴进宝塔拨测的 UA 分析工具,字段会被自动拆开;想看看这个爬虫 UA 真去访问站点会怎样,就到蜘蛛模拟抓取里选「自定义 UA」跑一次。


一句话总结:UA 说到底是客户端自己报的身份。判断时盯着产品名,别被 Mozilla/5.0 唬住——带 bot/spider 又有官方注释的是爬虫,只有「产品/版本」的是脚本,内核与平台信息齐全的是真人。但字符串可以伪造,想确认官方爬虫,还得回到 IP 网段上去核。大家在实际排查里遇到拿不准的 UA,欢迎回帖贴出来一起看。



使用道具 举报 只看该作者 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表