核对抓取限制的核心方法,是把“搜索引擎实际抓了什么”和“你允许它抓什么”两边的证据放在一起比对。最直接的做法是查服务器日志中的搜索引擎爬虫请求,再用robots.txt、meta robots、X-Robots-Tag和页面返回状态码逐层排查,看限制是否真的生效、是否误伤了需要被抓的页面。只改配置不看日志,等于没有核对。
没有证据的核对只是猜测。开始前先固定以下材料,避免边改边查导致前后数据无法比较:
<meta name="robots">、HTTP响应头中的X-Robots-Tag。curl -I查看状态码和响应头,确认是200、301还是403、503。日志能证明爬虫来过或没来,配置文件只能证明你写了什么。两者不一致时,问题往往出在配置之外,比如CDN、WAF或服务器防火墙拦截了爬虫。
这是整个核对流程中最能定位原因的一步。具体操作:
判断结果分三种情况。被禁止的路径仍被大量抓取,说明限制未生效,可能是robots.txt位置错误、语法写错,或爬虫访问的是另一个域名/协议版本。允许的路径长期没有请求,说明限制不是主因,要转向检查内链、状态码或服务器拦截。两者基本吻合,说明robots层面的限制已按预期工作,可继续查meta和响应头层面的限制。
注意:robots.txt只约束合规爬虫的抓取行为,它不阻止页面被索引,也不阻止其他程序访问。把“禁止抓取”当成“禁止收录”是常见误判。
robots.txt通过后,还要确认页面自身没有叠加限制。检查项如下:
<meta name="robots" content="noindex">:出现在HTML中会阻止索引,但通常不阻止抓取。若日志显示被抓取却未收录,优先查这一项。curl -I即可看到。假设一个例子:某页面日志中有正常抓取记录,但搜索结果里始终不出现。检查发现响应头带X-Robots-Tag: noindex,而robots.txt是允许抓取的。此时抓取限制不是问题,索引限制才是。这个区分决定了你该改哪一层配置。
修改任何限制配置后,不要立刻下结论。验证时注意:
维护阶段建议每月做一次抽查:随机选几个重要URL,确认它们在日志中有抓取记录、robots.txt未误禁、响应头无意外noindex。发现异常时回到日志比对这一步,而不是凭印象改配置。
下一步:从服务器日志中导出最近七天的爬虫请求,按状态码分组统计,先找出返回403或503比例最高的路径,再对照robots.txt判断这些路径是否本应被抓取。