国产AI爬虫 robots 怎么写:UA清单、放行限速与分目录取舍

国产AI爬虫 robots 怎么写:UA清单、放行限速与分目录取舍

给国产AI爬虫 robots 规则做取舍,第一步不是列 UA,而是先分清三种抓取行为:训练抓取、检索取回、搜索索引。封掉训练爬虫,你的品牌大概率还能被 AI 引用;封掉检索取回或搜索索引,你会直接从豆包、通义千问、Kimi 的回答里消失。绝大多数站点把这三件事混在同一条 Disallow 里,这是当前中文站最常见、代价也最高的一次误配。

下面这份清单和模板,来自 MaxAEO 对客户站点原始访问日志的抽样核对,以及公开机器人目录的交叉验证。

什么是国产 AI 爬虫:三层抓取行为必须分开管

国产 AI 爬虫指国内大模型厂商及其关联搜索业务用来获取网页内容的自动化程序。 它们按行为分三层:训练抓取(把内容存进语料库)、检索取回(用户提问时实时拉页面)、搜索索引(喂给底层搜索引擎,再被 AI 调用)。

这三层对品牌的价值完全不同:

抓取层 影响什么 生效周期 封掉的后果
训练抓取 模型"记不记得你" 以模型版本计,月~年 长期记忆变弱,表述主导权让给第三方
检索取回 "这一次回答里有没有你" 实时 当次问答里直接消失
搜索索引 AI 联网时能否找到你 天~周 全链路断供,AI 完全找不到官网

搜索索引是国产 AI 最主要的信源入口——豆包、Kimi 的联网结果大量来自底层搜索引擎的索引库,而不是各家自建的独立爬虫。

结论很直接:可以对训练抓取谈条件,但不能对后两层设卡。

国产AI爬虫 robots 配置决策流程图:按训练抓取、检索取回、搜索索引三层分别对应封禁、放行、必放三档动作

国产 AI 相关爬虫 UA 清单:哪些标识真的会打到你站上

下表的 UA 标识来自开源机器人清单项目 ai.robots.txt 与厂商公开说明,并与我们在客户站点日志中的实际匹配记录做了交叉核对。只列真实出现过、或有公开归属可查的标识,网上流传的一批"AI 爬虫大全"里有相当比例是查无此人的杜撰 UA。

UA 标识 归属 抓取层级 是否遵守 robots 建议动作
BaiduspiderBaiduspider-render 百度 搜索索引 必放,含 JS 资源
YisouSpider 神马搜索(阿里) 搜索索引 必放
PetalBot 华为 索引 + AI 搜索推荐 放行
Bytespider 字节跳动 训练 + 内容采集 声明遵守,历史有争议 分目录放行 + 限速
TikTokSpider 字节跳动 训练 不明 同 Bytespider
TongyiBot 阿里 检索取回 不明 放行内容目录
YiyanBot 百度 检索取回 不明 放行内容目录
Kimi-UserKimiBot 月之暗面 用户触发取回 / 公开内容 不明 放行内容目录
ChatGLM-Spider 智谱 训练 不明 按训练态度决定
PanguBot 华为 训练 不明 按训练态度决定

三个必须知道的清单前提

一、UA 字符串是自称,不是身份证。 表里除百度、神马、华为三家有公开 IP 段或反查方式外,其余 UA 都无法只靠字符串确认真伪。生产环境要么做反向 DNS + ASN 校验,要么接受"按自称处理"的风险。

二、UA 会改名,规则要留冗余。 我们在 61 天窗口里就见过同一归属出现带版本后缀的变体。robots 的 UA 匹配是前缀匹配、大小写不敏感,写 User-agent: Bytespider 能覆盖 Bytespider-2.0 这类变体,不要写死完整字符串。

三、"用户触发取回"是特殊类目。 Kimi-User 这类由用户主动粘贴链接才发起的请求,封掉它伤害的是想读你内容的真实用户,不是模型语料。任何档位都建议放行。

DeepSeek 是这份清单里最大的空洞

部分机器人目录收录了 DeepSeekBot 条目,但 DeepSeek 官方至今没有公布可核验的爬虫 UA 与 IP 段。我们在样本日志里也几乎匹配不到稳定的 DeepSeek 标识——它的联网能力更多依赖第三方搜索接口,而非自建爬虫。

这意味着一件事:针对 DeepSeek 写 robots 规则基本是无效动作。 想被 DeepSeek 引用,要做的是保证底层搜索引擎能收录你,以及权威第三方站点上有你的内容。这也是为什么区域性 AI 回答引擎的信源结构值得单独研究——不同引擎的取数路径差异,比 robots 语法本身重要得多。

我们在 42 个中文站点日志里看到的实际抓取分布

先说方法,再说结论。

测试方法:抽取 42 个中文站点(内容型 18 个、电商 11 个、B2B SaaS 13 个)的 Nginx 与 CDN 原始访问日志,窗口 61 天。用 UA 正则匹配做初筛,再用反向 DNS 与 ASN 归属做二次校验,剔除伪造 UA 的请求。样本偏向中小型中文站,不代表全网分布。

观测到四个和主流认知不一致的现象:

一、声明式 UA 只覆盖了一部分 AI 抓取。 样本里可归因到具名国产 AI UA 的请求,在疑似 AI 抓取总量中不足一半;其余是空 UA 或伪装成 Chrome 的请求,反查 IP 多落在国内云厂商机房段。robots 对这部分毫无约束力,只能靠 WAF 规则和速率限制处理。

二、Bytespider 抓取量大但极度集中。 它在多数站点是抓取量最高的具名 AI UA,但请求集中在少数几个目录——通常是文章列表和详情页。这说明按目录做取舍是可行的,不必一刀切封站。

三、写了 Crawl-delay 的站点,实际抓取间隔没有变化。 样本里有 9 个站点在 robots 中设置了 Crawl-delay,对比设置前后的抓取间隔中位数,没有观察到有统计意义的差异。这条指令在国产 AI 爬虫上基本是安慰剂。

四、误封静态资源的代价被严重低估。 一个家居电商站为了"防采集"把 /static/ 整个 Disallow,结果 Baiduspider-render 无法拉取 JS 与 CSS,商品详情页在渲染阶段拿不到价格与参数模块。三个月后我们在 AI 平台监测中发现,该品牌被追问具体型号时,模型给出的参数大量来自经销商页面而非官网。封的是资源目录,丢的是内容主权。

服务器日志中按 User-Agent 聚合的国产 AI 爬虫抓取量分布柱状图,Bytespider 占比最高

分目录取舍:哪些放行、哪些该限、哪些必须封

按目录做决策的核心判断线只有一条:这个目录的内容,你希望 AI 在回答里复述吗?

应该放行的目录

产品页、技术文档、FAQ、案例研究、博客、帮助中心。这些是你希望被 AI 复述的内容,任何形式的限制都是在削减自己的 AI 可见度。尤其是文档和 FAQ,它们是国产 AI 回答事实型问题时最常引用的来源类型。

同时必须放行的还有 /static//assets//_next/ 这类前端资源目录。渲染型爬虫拿不到它们,整页内容就等于不存在。

技术文档还有一个 robots 之外的坑:放行了旧版本文档路径,AI 就会一直引用已废弃的写法。这属于版本信号问题,AI 引用过期文档的成因与止损有系统拆解。

应该限制的目录:三类高风险内容

价格页:不是不让抓,而是不让训练型爬虫抓。价格变动频繁,被写进模型语料后会长期以过期数字出现在回答里。做法是对 BytespiderChatGLM-SpiderPanguBot 这类训练层 UA 单独 Disallow 价格路径,同时对 TongyiBotKimi-User 等检索层 UA 保持放行——检索取回是实时的,拿到的永远是当前价格。

会员与付费内容:这类内容本来就该在服务端做鉴权,而不是靠 robots。robots 是"请勿入内"的告示牌,不是锁。任何真正敏感的内容,写在 robots 里反而等于公开了路径。

合规与资质声明页:这类页面(等保、ISO、许可证编号、医疗/金融资质)的特点是"必须被引用,且必须逐字准确"。不要限制抓取,要做的是收紧表述——把有效期、发证机构、适用范围写在同一段内,AI 才不会把过期资质当成现状。相关表述规范可参考让 AI 正确复述合规声明的写法;医疗、金融、法律类站点还要额外考虑模型的免责与拒答倾向,见受监管行业的 AI 回答特征

应该彻底封禁的目录

站内搜索结果页、购物车与结算流程、带无限参数组合的筛选 URL、打印版页面、日历类无限翻页。这些对所有爬虫都是纯粹的抓取预算浪费,和 AI 无关。

多语言站点的额外一层

如果站点有 /en//ja/ 等语言子目录,不要用一条通配规则统管所有语种。常见事故是英文版目录被历史规则封禁,导致品牌在中文 AI 里可见、在英文 AI 回答里彻底缺席。语种目录要逐个确认可达性,并与 hreflang 保持一致——这类跨语种可见度断层的成因,多语言 AI 可见度:为什么品牌在英文里赢、在德文里消失有完整分析。

Crawl-delay 到底管不管用:限速的正确做法

直接答案:不要用 Crawl-delay 限速。 它不是 robots 协议标准字段,各引擎处理方式不一,而在国产 AI 爬虫上几乎没有约束力。

爬虫 Crawl-delay 支持情况 应该用的限速手段
Googlebot 明确不支持 503 + Retry-After
Baiduspider 官方文档不涉及 搜索资源平台抓取频次工具
Bingbot 支持 Bing 站长工具 crawl control
Bytespider 等国产 AI UA 样本中未观察到生效 服务端 429 + Retry-After

Google 官方 robots.txt 规范文档明确写明,除 user-agentallowdisallowsitemap 外的字段(包括 crawl-delay)不被支持;百度搜索资源平台的 robots 文件说明同样只覆盖三条指令,频次控制走搜索资源平台的抓取频次工具而非 robots。协议层面的依据是 RFC 9309(Robots Exclusion Protocol),其中并未定义 crawl-delay。

限速不拖慢收录的三条硬规则

  1. 限速只针对训练层 UA,永远不要对 BaiduspiderBaiduspider-renderYisouSpiderPetalBot 限速。它们的抓取量直接决定你的收录深度,而收录深度决定国产 AI 联网时能不能找到你。
  2. 429 Too Many RequestsRetry-After 头,不要用 403 或 404。 429 是"稍后再来",爬虫会退避后重试;403/404 是"这里没有/不给看",多次命中后 URL 会被判定为失效,长期召回率下降。这是限速最容易踩的坑。
  3. 限速阈值按目录设,不按全站设。 对文章详情页放宽,对高开销的搜索页与筛选页收紧。全站统一阈值会让爬虫在低价值 URL 上就耗光配额。

Cloudflare 公布的抓取引流比数据显示,部分 AI 厂商每带来一次访问需要抓取数百到数万次页面。这个量级说明限速本身是合理诉求——但要用对工具。

可直接套用的三档 robots.txt 模板

按业务目标选一档,不要混着抄。

开放型(内容站、媒体、B2B SaaS 文档站)——目标是最大化 AI 可见度:

User-agent: *
Allow: /
Disallow: /search
Disallow: /*?sort=
Disallow: /cart
Disallow: /checkout

Sitemap: https://example.com/sitemap.xml

平衡型(电商、有价格与会员内容)——放检索、限训练:

# 搜索索引层:全面放行
User-agent: Baiduspider
User-agent: Baiduspider-render
User-agent: YisouSpider
User-agent: PetalBot
Allow: /
Disallow: /search
Disallow: /cart
Disallow: /checkout

# 检索取回层:放行内容,实时价格可见
User-agent: TongyiBot
User-agent: YiyanBot
User-agent: Kimi-User
User-agent: KimiBot
Allow: /
Disallow: /search
Disallow: /account

# 训练层:限价格与频变内容
User-agent: Bytespider
User-agent: TikTokSpider
User-agent: ChatGLM-Spider
User-agent: PanguBot
Allow: /product/
Allow: /blog/
Allow: /docs/
Disallow: /price/
Disallow: /promo/
Disallow: /search
Disallow: /account

User-agent: *
Allow: /
Disallow: /search
Disallow: /cart

Sitemap: https://example.com/sitemap.xml

保守型(内容版权敏感、付费墙媒体)——只留索引与检索:

User-agent: Bytespider
User-agent: TikTokSpider
User-agent: ChatGLM-Spider
User-agent: PanguBot
Disallow: /

User-agent: Baiduspider
User-agent: YisouSpider
User-agent: PetalBot
User-agent: TongyiBot
User-agent: YiyanBot
User-agent: Kimi-User
Allow: /
Disallow: /premium/

User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

抄模板前必须理解的三条语法

  • 规则组不合并,命中即独占。 一个爬虫只会执行匹配到自己 UA 的那一组,User-agent: * 对它完全失效。所以给 Bytespider 单开一组后,它需要的所有规则(包括 Sitemap 之外的每一条 Disallow)都得在自己组里重写一遍——这是三档模板里每组都显得啰嗦的原因,不是冗余。
  • UA 匹配大小写不敏感、按前缀匹配,路径大小写敏感。 /Blog//blog/ 是两条不同的路径规则。
  • 规则冲突按路径最长匹配优先,长度相同则 Allow 胜出。 上面平衡型模板里 Allow: /product/Disallow: /price/ 不冲突,但如果价格路径是 /product/price/Disallow 更长,会赢。

想对比国际 AI 爬虫的取舍逻辑,GPTBot、ClaudeBot 和 Bytespider 的放行取舍有更细的分厂商拆解。

写完之后怎么验证真的生效

改完 robots 别急着收工,按顺序做完这五步:

  1. 抓取自己的 robots.txt,确认返回 200 而不是 301 链、404 或被 WAF 拦成 403。文件必须在根目录,且返回 text/plain
  2. 用目标 UA 实测curl -A "Bytespider" -I https://example.com/price/,逐个验证限制目录和放行目录的实际响应。注意 curl 不解析 robots,这一步验的是服务端有没有额外拦截;robots 本身的匹配结果要靠日志回查。
  3. 在百度搜索资源平台做抓取诊断,重点看渲染型抓取能否拿到完整 DOM 与关键模块。
  4. 一周后回查日志:按 UA 聚合请求量与命中路径,确认限制目录的请求量真的降了、放行目录没受牵连。这是唯一能证伪配置的手段。
  5. 监测 AI 侧结果变化:在豆包、通义千问、Kimi 上跑固定 Prompt 组,观察品牌提及率、引用来源构成有无变化。robots 改动到 AI 回答变化通常有 2–6 周滞后。

第 5 步不要只记"有没有提到我"。同一组 Prompt 至少记三个维度:提及率、引用来源域名构成、以及模型描述你的措辞倾向——第三项的变化往往最早出现,AI 品牌情绪分析:不止正负面给了可操作的记录维度。

五个高频误配清单

  • Disallow: / 留在测试环境上线——最经典的事故,通常伴随全站从索引消失。
  • 封了 /static//assets/——渲染爬虫拿不到样式与脚本,内容型页面等于空白页。
  • 在 robots 里列出后台真实路径——等于给扫描器发地图,敏感目录应该靠鉴权,不靠告示牌。
  • Disallow 代替 noindex——被 Disallow 的页面爬虫读不到 noindex 标签,反而可能因外链而带着空标题进索引。
  • 只写 UA 不写 Sitemap——国产 AI 依赖的底层搜索引擎,仍然靠 sitemap 发现新页面。

更完整的分厂商放行决策,可参考AI 爬虫在 robots 里到底该不该放行的判断框架

常见问题

封掉 Bytespider 会影响豆包里的品牌推荐吗?

会有影响,但不是致命的。Bytespider 主要承担训练与内容采集,豆包实时联网时的信源还包括底层搜索索引和第三方站点。封掉它,模型对你的"长期记忆"会变弱,但只要搜索索引层通畅,实时问答里仍可能出现你。代价是你失去了对表述的主导权——模型更可能引用经销商、测评站对你的描述。

robots.txt 能挡住不遵守协议的 AI 爬虫吗?

不能。robots 是君子协定,对空 UA、伪装浏览器的请求完全无效。我们的样本显示这类请求占疑似 AI 抓取的相当比例。真正要拦,需要在 WAF 或 CDN 层做行为识别与速率限制,robots 只负责给守规矩的爬虫发信号。

分目录写 robots 会不会影响百度收录?

只要没有对 Baiduspider 系列 UA 设限,就不会。风险来自两种写法:一是用 User-agent: * 一刀切限制而没有为百度单开规则组,二是误封了渲染所需的静态资源。记住 robots 的规则组不合并——为某个 UA 单独写了组,通配组对它就完全失效,该 UA 需要的所有规则都得在自己的组里重写一遍。

价格页到底该不该封?

看价格变动频率。月度以上稳定的价格建议全放,它是 AI 回答购买类问题时的高价值信息。周级或更频繁变动的,按本文平衡型模板处理:限训练层、放检索层。最糟的做法是全封——AI 拿不到你的官方价格,就会去引用第三方渠道的旧价。

国产 AI 爬虫 robots 和 llms.txt 是一回事吗?

不是。robots.txt 是抓取权限声明,有明确协议(RFC 9309)和几十年的引擎支持;llms.txt 是社区提案的内容索引文件,没有任何国产厂商公开声明支持。先把 robots 配对,再考虑 llms.txt——顺序反了等于给一个没人读的文件花时间。

改完 robots 多久能在 AI 回答里看到变化?

检索取回层最快,几天内就能体现;搜索索引层通常 2–4 周;训练层最慢,可能跨越一个模型版本周期。所以验证不能只看一次,应该建立固定 Prompt 组做周期性追踪,把提及率、引用来源、竞品对比一起记录下来,才能判断是配置生效还是正常波动。