核对抓取限制的核心动作,是把“搜索引擎看到的页面”和“你希望它抓到的页面”逐项对照:先确认 robots.txt 是否放行,再看页面级 meta robots 与响应头 X-Robots-Tag 是否禁止,最后检查登录、验证码、CDN 或防火墙是否拦截了抓取请求。任何一步出现矛盾,都可能导致页面不被抓取或抓取后不进入索引。
假设你负责一个商品详情页,地址是 /product/1001,最近发现它没有出现在搜索结果里。先不要改代码,按下面顺序收集证据。
/robots.txt,查找是否有 Disallow: /product/ 这类规则。如果有,说明抓取被站点级规则挡住,这是优先级较高的限制。<meta name="robots" content="noindex"> 或 nofollow。noindex 表示允许抓取但不允许索引,和 robots.txt 的 Disallow 是两回事。curl -I https://example.com/product/1001,确认是否返回 X-Robots-Tag: noindex。这个头部对非 HTML 文件同样生效,容易被忽略。这个例子的结论只能说明该页面当时的状态。若日志里爬虫请求正常返回 200,但页面仍未被索引,问题就不在抓取限制,而应转向内容质量、重复页面或链接发现路径。
站点级限制写在 robots.txt 中,决定爬虫能否请求某个路径。它不控制索引,被 Disallow 的页面仍可能因外部链接出现在结果里,只是没有摘要或摘要来自其他来源。
页面级限制包括 meta robots 和 X-Robots-Tag,决定页面被抓取后能否被索引、能否传递链接权重。常见错误是同时写了 Disallow 和 noindex:爬虫无法抓取页面,就看不到 noindex,页面反而可能继续留在索引中。
访问层限制来自 CDN、WAF、验证码、IP 封禁或频率限制。它的表现是请求被拒绝或返回异常状态码,而不是规则文件里的明确声明。核对时要看日志中的状态码和 user-agent,而不是只看页面能否在浏览器打开。
判断结果时,优先处理“明确禁止”的规则,再处理“访问失败”的问题。若 robots.txt 放行、页面无 noindex、日志返回 200,抓取限制基本可以排除,应继续排查索引和排名层面的其他因素。
解除抓取限制后,不要用一次改动前后的数据直接下结论。搜索需求会随季节和事件变化,数据采集时间点不同也会造成差异。比较时应固定统计口径,例如同一组 URL、同一时间窗口、同一数据来源,并记录改动日期,避免把需求波动误判为限制解除的效果。
下一步:选定一个具体 URL,按上面的清单逐项记录当前状态,形成一份可复查的证据表,再决定是否需要修改 robots.txt、meta 标签或服务器访问策略。