先给结论:排查搜索引擎爬虫控制是否生效时,看到“页面已经变了”并不等于爬虫真的抓到了新内容,很可能只是你或工具读到了缓存副本。最先要做的是确认这份页面内容来自哪里、抓取时间是什么时候,再决定是否调整规则。
搜索引擎爬虫控制涉及 robots.txt、meta robots、X-Robots-Tag、抓取频率设置等。当这些规则改动后,你打开页面却发现内容还是旧的,常见来源有三类:
这三类现象看起来都像“规则没生效”,但原因完全不同。把缓存问题误判为爬虫控制失败,容易导致反复修改规则,反而增加出错概率。
要排除缓存假象,最直接的办法是发起一次带明确标识的实时请求,并记录返回结果。可以用命令行工具完成,例如:
curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I https://example.com/page
这里把 User-Agent 换成目标爬虫的标识,观察返回的 HTTP 状态码和响应头。重点看三项:
X-Robots-Tag,其值是否包含 noindex 或 nofollow。<meta name="robots"> 的内容是否与当前规则一致。如果命令行返回的是新内容,而浏览器或在线工具显示旧内容,那基本可以判断是缓存造成的假象,而不是爬虫控制规则失效。反之,如果实时请求返回的仍是旧内容,才需要继续检查服务器配置、CDN 缓存策略或规则语法。
按下面顺序逐项核对,可以避免在缓存问题上浪费人手:
noindex 标记。若同时存在 robots.txt 禁止抓取和 noindex,爬虫可能无法读到 noindex,导致页面仍留在索引中。判断标准可以简化为:实时请求结果与预期一致,则缓存假象成立;实时请求结果与预期不一致,则问题在规则或服务端配置,而非缓存。
如果只能安排一件事,优先做带爬虫 User-Agent 的实时请求,并保存返回的状态码和响应头。这一步成本低、结果明确,能直接区分“缓存假象”和“规则失效”。在确认是缓存问题后,再处理 CDN 缓存刷新或调整缓存策略;在确认是规则问题后,再检查 robots.txt 语法、meta 标签和响应头设置。
下一步建议:选定一个代表性 URL,用上述命令分别以目标爬虫和普通浏览器标识各请求一次,把两次的状态码、响应头和页面标题记录下来,再对照本文的判断标准决定后续动作。