检查 robots.txt 在移动端与桌面端的差异,核心不是看页面显示是否相同,而是确认两端请求到的是不是同一份规则文件,以及规则对同一路径的匹配结果是否一致。最优先的一步是分别用移动端 User-Agent 和桌面端 User-Agent 请求同一个 robots.txt 地址,对比返回状态码、正文内容和重定向链。如果两端拿到的是同一份 200 响应且正文逐字相同,差异通常不在文件本身,而在规则对两类爬虫的匹配方式上。
在动手比对前,先固定几个变量,避免把环境差异误判为协议差异。
https://example.com/robots.txt,移动端和桌面端都请求它,不要一端用 www、另一端用裸域。Mobile 或具体机型代号,桌面端则没有这些片段。如果站点对移动端使用独立子域,例如 m.example.com,那么移动端和桌面端本来就可能各自拥有 robots.txt。这种情况下要分别检查两个地址,不能拿桌面端的文件去推断移动端。
用命令行工具可以最快得到可复核的结果。以下命令只是示例,把域名和 UA 换成你自己的:
curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1" -I https://example.com/robots.txt
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36" -I https://example.com/robots.txt
把 -I 换成不带该参数,就能看到正文。对比时逐项记录:
User-agent、Disallow、Allow、Sitemap 各行及其顺序。这里最关键的一步是第 4 项:文件相同不代表结果相同。robots.txt 里可以针对不同 User-agent 写不同规则,例如一段只写 User-agent: *,另一段写 User-agent: Googlebot 并给出额外限制。移动端爬虫和桌面端爬虫如果匹配到不同分组,同一路径就会得到不同结论。判断方法是找到与当前 UA 最匹配的那个分组,只应用该分组的规则,再与另一端对比。
比对结果通常落在三种情况里,处理方式不同。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除。即使某一端规则写的是禁止抓取,已收录的 URL 仍可能出现在结果中,因为限制的是抓取行为,不是索引状态。要真正移除,应使用对应的移除工具或页面级 noindex,并分别核查各搜索引擎的支持情况。站点地图写在 robots.txt 里也不保证收录,它只是发现路径的线索之一。
robots.txt 会随站点结构调整而改动,移动端与桌面端的一致性也可能在改动中被破坏。建议在每次修改规则、切换 CDN 配置或新增子域后,重跑一次上面的两类 UA 请求,并保留输出做对比。若站点同时存在多个协议或多个主机名,把每个可访问入口都纳入清单,而不是只查一个。
人手有限时,把检查顺序定为:先确认两端请求到同一地址且状态码一致,再对比正文,最后验证测试路径的匹配结论。前两步能排除大部分环境问题,第三步才真正回答移动端与桌面端在规则应用上是否存在差异。
下一步可以挑一个当前最关心的路径,例如商品列表页或搜索结果页,分别用移动端和桌面端 UA 套用规则,记录两端结论,再决定是否需要调整分组写法。