robots.txt规则移动端与桌面端怎样检查差异:先确认爬虫身份再比对分组

📍 WDQWDWQD987AAAAA:216.73.216.56
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /6dcf6c5cdbeb.html
📄

robots.txt规则移动端与桌面端怎样检查差异:先确认爬虫身份再比对分组

检查移动端与桌面端的robots.txt规则差异,核心不是看文件有没有两份,而是看同一份文件里,不同User-agent分组是否对移动爬虫和桌面爬虫给出了不同指令。如果移动爬虫使用的User-agent名称没有单独分组,它就会落到通配符User-agent: *分组,此时移动端与桌面端规则一致;如果存在独立分组,就必须逐条比对Allow与Disallow,并确认移动爬虫实际命中的是哪一组。

先判断你的站点是否真的需要分端检查

不是所有站点都存在差异。以下条件会提高分端检查的必要性:

如果站点只有一份静态robots.txt,且只写了User-agent: *一个分组,那么移动端和桌面端读到的规则内容相同,差异风险主要来自路径本身是否被禁止,而不是来自端差异。这种情况下优先检查规则是否误封移动路径,而不是花时间做逐端比对。

用爬虫身份模拟请求,而不是靠肉眼看文件

直接打开robots.txt只能看到一份内容,无法反映动态返回的情况。可行的做法是发送带指定User-agent的请求,观察返回正文。假设你的站点对移动爬虫有单独分组,可以用命令行工具模拟,例如:

curl -A "Googlebot" https://example.com/robots.txt

curl -A "Googlebot-Image" https://example.com/robots.txt

把User-agent换成你关心的移动爬虫名称,对比两次返回的正文。判断结果分三种:

  1. 两次返回完全一致:不存在端差异,检查结束。
  2. 返回不同分组内容:存在差异,进入逐条比对。
  3. 返回内容随请求变化但结构混乱:说明是动态生成,需要检查生成逻辑是否覆盖了移动分组。

注意,User-agent字符串是爬虫自我声明的,不能仅凭字符串就认定对方身份。这里的目的是复现规则匹配结果,不是验证访问者真伪。

比对分组时看匹配优先级,不只看Disallow行

robots.txt的匹配规则是:爬虫先找与自己User-agent名称最匹配的分组,匹配到后就不再读取其他分组。因此检查差异时,重点不是“文件里有哪些Disallow”,而是“移动爬虫会命中哪一组”。

假设文件内容如下(示例为假设场景):

如果移动爬虫名称确实是MobileBot,它会命中第二组,整个站点被禁止抓取;桌面爬虫命中第一组,只禁止了/search。这就是典型的端差异,而且后果严重。反过来,如果移动爬虫名称不在文件中出现,它会落到User-agent: *,与桌面端一致。

比对清单可以按这个顺序执行:

  1. 列出文件中所有User-agent分组名称。
  2. 确认你关心的移动爬虫名称是否在其中,以及是否与桌面爬虫分在不同组。
  3. 对命中的分组,逐条比对Allow与Disallow的路径。
  4. 检查是否存在Disallow: /这类全站禁止,以及是否被更具体的Allow覆盖。
  5. 确认规则没有误伤CSS、JS或移动端专属资源路径。

时间和人手有限时,先处理哪一项

如果只能做一件事,先检查移动爬虫命中的分组里有没有全站级禁止或关键路径禁止。原因是一旦移动爬虫被整体屏蔽,移动端页面无法被抓取,后续的索引和展现都无从谈起,修复代价远高于逐条规则微调。相比之下,某一条次要路径的Allow差异影响范围小,可以排后处理。

判断依据可以简化为两个问题:移动爬虫命中的分组是否禁止了整站或主要目录;移动端与桌面端的内容是否依赖同一批可抓取资源。两个答案都是“是”,就优先修这一项。如果移动爬虫根本没有独立分组,那么端差异不存在,把时间转向检查路径规则是否误封移动资源更划算。

检查完之后要区分的两件事

robots.txt的抓取限制不等于可靠的索引移除。即使你在规则里禁止了某个路径,已经收录的页面仍可能出现在结果中,移除需要配合其他方式。另外,站点地图不保证收录,HTTPS也不保证安全无漏洞或排名。检查端差异解决的是“爬虫能不能抓”的问题,不要把它当成收录或排名的保证。

下一步:用你实际关心的移动爬虫User-agent名称,对生产环境的robots.txt发送一次请求,把返回正文与桌面爬虫的返回正文并排保存,然后按上面的分组比对清单逐条核对。发现全站级禁止时,先修复再考虑其他优化。

图1 图2

nginx