User-Agent 与爬虫标识速查
UA 字符串里到底写了什么、怎么分辨搜索引擎爬虫与伪装爬虫、robots.txt 与 UA 的配合,以及为什么 UA 已经不该被完全信任。
User-Agent 是浏览器在每次请求里附上的一句自我介绍,内容包括浏览器类型、版本、操作系统、渲染引擎。它最初的设计目的是让服务器「按客户端能力返回合适的页面」。
现在它的处境有些尴尬:一方面仍被广泛用于统计与兼容处理,另一方面因为它可以被随意伪造,任何基于 UA 的拦截都不可靠。理解它「能做什么、不能做什么」,才能用对地方。
1UA 字符串的结构
一段典型的 UA 由几个用空格分隔的「产品/注释」片段组成,历史演进留下了不少冗余信息。
| 片段 | 含义 | 示例 |
|---|---|---|
Mozilla/5.0 | 历史遗留的兼容标记 | 几乎所有浏览器都带,与是否为 Mozilla 无关 |
| 平台信息 | 操作系统与版本 | 如 Windows NT 10.0; Win64; x64 |
| 渲染引擎 | 排版引擎与版本 | 如 AppleWebKit/537.36、Gecko/20100101 |
| 浏览器标识 | 浏览器名称与主版本 | 如 Chrome/120.0.0.0、Safari/537.36 |
| 移动标识 | 是否为移动设备 | 如 Mobile、iPhone、Android |
| 爬虫标识 | 机器人名称与说明链接 | 如 Googlebot/2.1 常附 +http://www.google.com/bot.html |
Chrome 与 Edge 的 UA 里同时出现 `AppleWebKit`、`Safari` 和 `Chrome`,这纯粹是历史兼容的结果——很多老站点靠 `Safari` 字样判断可用功能。所以「看到 Safari 就以为是苹果浏览器」是常见的错判。
2常见搜索引擎爬虫标识
主流搜索引擎的爬虫都会在 UA 里标明身份并给出说明链接,但标识本身可以被伪造,认真验证要配合反向 DNS 查询。
| 爬虫 | UA 中的关键标识 | 用途 |
|---|---|---|
Googlebot | Googlebot/2.1(桌面)、Googlebot-Image、Googlebot-News | 谷歌搜索索引与各类专项抓取 |
Googlebot 移动版 | Googlebot/2.1 且含 Android 或 iPhone | 以移动端身份抓取,用于移动优先索引 |
Bingbot | bingbot/2.0 | 必应搜索 |
Baiduspider | Baiduspider | 百度搜索 |
YandexBot | YandexBot/3.0 | Yandex 搜索 |
DuckDuckBot | DuckDuckBot/1.1 | DuckDuckGo 搜索 |
| 社交平台预览 | facebookexternalhit、Twitterbot、Slackbot | 抓取页面生成分享卡片 |
| 合法但要留意 | AhrefsBot、SemrushBot、GPTBot 等 | SEO 分析或 AI 训练,是否放行由你决定 |
把「UA 里含 Googlebot」当作「就是谷歌」是不严谨的。真正的验证方式是查该 IP 的反向 DNS 是否落在 `googlebot.com` 或 `google.com` 域名下,再正向解析回来核对一致。仅凭 UA 判断,任何人都能伪装成搜索引擎爬虫。
3桌面与移动设备的 UA 特征
做响应式站点时,UA 常用于粗略区分设备类型。以下是几个关键特征词。
| 设备类型 | 特征词 | 典型示例片段 |
|---|---|---|
| Windows 桌面 | Windows NT | Windows NT 10.0; Win64; x64 |
| macOS 桌面 | Macintosh | Macintosh; Intel Mac OS X 10_15_7 |
| iPhone | iPhone | iPhone; CPU iPhone OS 17_0 like Mac OS X |
| iPad | iPad | 较新版本可能上报为 Macintosh,需结合触控特征判断 |
| Android 手机 | Android 且含 Mobile | Android 14; Pixel 8 后跟 Mobile |
| Android 平板 | Android 但不含 Mobile | 区分手机与平板的关键就在这里 |
| 微信内置浏览器 | MicroMessenger | 用于判断是否在微信内打开 |
| 小程序 / WebView | miniProgram、wv | 混合应用与内嵌页面的常见标记 |
「UA 里有没有 Mobile」是区分手机与平板最常见的判断依据,但现在更推荐用「屏幕宽度 + 触控能力」这类特征做响应式判断。用 UA 做设备判断只适合做统计与兜底,不适合做核心功能分支。
4robots.txt 与爬虫识别的配合
robots.txt 是放在站点根目录的一份约定,告诉爬虫「哪些路径可以抓、哪些不要抓」。它是协议而非强制机制。
- 位置固定
- 必须是根目录下的
/robots.txt,放子目录不生效 - 语法核心
User-agent指定适用对象,Disallow指定禁止抓取的路径,Allow可做例外- 通配规则
*匹配任意字符,$匹配结尾,可用于排除带参数的地址- 配合方式
- 期望被收录的页面应允许抓取,同时在页面里用
noindex明确「不要收录」,两者职责不同 - sitemap 声明
- 可在 robots.txt 里用
Sitemap:声明站点地图地址,方便爬虫发现页面 - 非强制
- 恶意爬虫完全无视 robots.txt,真正的防护要靠限速、鉴权与行为识别
5UA 不可信之后怎么办
UA 可以被任意伪造,而且主流浏览器正在冻结甚至减少 UA 里的信息量,以保护隐私。这意味着依赖 UA 做判断的方案会越来越不牢靠。
| 需求 | 不推荐的做法 | 更稳妥的做法 |
|---|---|---|
| 区分设备布局 | 解析 UA 判断是不是手机 | 响应式设计 + 视口宽度 + 触控能力检测 |
| 投放不同页面 | 按 UA 跳到 /m/ 移动站 | 一套响应式页面,避免多套内容造成的收录与维护问题 |
| 判断浏览器能力 | 看 UA 猜支持哪些特性 | 功能检测:直接判断 API 是否存在 |
| 识别真实爬虫 | 只看 UA 里的爬虫标识 | 反向 DNS 校验 + IP 段核对 + 访问频率分析 |
| 获取设备信息 | 从 UA 里抠细节 | 使用客户端提示(Client Hints)按需获取 |
| 做统计报表 | 把 UA 当作精确数据 | 把 UA 视为参考,结合其他信号交叉验证 |
UA 冻结(User-Agent Freezing)已经在主流浏览器推行,即把版本号固定为少数几个值,减少可用于指纹识别的信息。现在写新代码时,应该默认「UA 只能提供粗粒度提示」,把关键判断放在功能检测与响应式设计上。
看完就能用的站内工具
全部工具总览 →粘贴 User-Agent 字符串即可识别浏览器、版本、渲染引擎、操作系统与设备类型,并判断是否移动端或搜索引擎爬虫,纯浏览器本地处理。
Robots.txt生成器 - 可视化生成robots.txt文件,设置搜索引擎爬虫抓取规则
在线模拟搜索引擎抓取 robots.txt 的判定结果,按最长匹配与 Allow 优先规则判断指定 URL 是允许还是禁止抓取
在线解析 HTTP 响应头,逐项检查 HSTS、CSP、X-Frame-Options 等八项安全头是否齐全,同时提示 Server、X-Powered-By 等信息泄露头与缓存策略配置,并给出安全评分,粘贴响应头即可出结果。
关于「User-Agent 与爬虫标识速查」的常见问题
User-Agent 具体包含哪些信息?
一段 UA 通常包含四类信息:平台信息(操作系统与版本,如 Windows NT 10.0 或 iPhone OS 17_0)、渲染引擎(如 AppleWebKit/537.36 或 Gecko)、浏览器标识(名称与主版本,如 Chrome/120.0.0.0)、以及设备类型标记(如 Mobile、iPad)。最前面往往还有一个 Mozilla/5.0,那是历史兼容留下的标记,几乎所有浏览器都带,不代表它真的是 Mozilla。需要注意的是这些字段都可以被客户端任意设置,所以 UA 只能作为参考信号,不能作为可信依据,尤其不能用于安全判断。
怎么判断来访的是不是真的搜索引擎爬虫?
不能只靠 UA 里的标识,因为它可以随意伪造。可靠的验证需要三步:第一,看该请求的来源 IP 是否属于搜索引擎公布的 IP 段;第二,对该 IP 做反向 DNS 查询,看结果域名是否落在官方域名下(例如谷歌爬虫应落在 googlebot.com 或 google.com);第三,把反向解析得到的域名再做一次正向解析,确认解析回的 IP 与原始来源 IP 一致。三步都通过才能确认身份。另外可以观察行为特征:真实搜索引擎爬虫通常会按一定频率、有规律地抓取,并遵守 robots.txt;伪装的采集器往往抓取猛烈且无视规则。
robots.txt 能阻止爬虫抓取我的页面吗?
对遵守规则的爬虫有效,对恶意爬虫无效。robots.txt 是一份「君子协定」——合规的搜索引擎爬虫会读取并遵守,因此你用它来引导收录行为是有效的;但任何想采集数据的人都可以直接无视它,因为它是纯文本约定,没有强制力。所以 robots.txt 的正确用途是治理索引(告诉搜索引擎哪些路径不必抓、哪些不必收录),而不是安全防护。防采集要靠限速、验证码、鉴权、行为识别等真正的技术手段。还要注意不要用 robots.txt 去屏蔽敏感目录,那等于把目录结构公开告诉所有人。
为什么说不要用 UA 判断浏览器功能?
因为 UA 是可以伪造的字符串,而且浏览器厂商正在主动减少它携带的信息量。用它来「猜」浏览器支持什么功能,会面临两类问题:一是判断错误——伪装 UA 的客户端会让你的分支逻辑走错;二是维护困难——每出新浏览器版本就要更新判断规则,尤其是 Safari 与 Chrome 的 UA 大部分相同但特性支持并不完全一致。正确做法是功能检测,也就是在运行时直接判断某个 API 是否存在(例如检查某个方法是否可调用),这样无论客户端是什么浏览器、UA 怎么写,判断结果都准确。这也是现代前端库普遍采用的思路。
继续查:相关内容
全部速查 →内容说明:本页速查数据由本站自行整理,事实性内容以对应官方规范与文档为准,未复制第三方速查表或百科的表述。数据最后核对日期:2026-10-05。若发现错误或已更新的标准,欢迎通过页脚反馈入口告知。
速查在线工具箱