核对抓取限制,核心是回答“百度蜘蛛到底能不能抓、抓了多少、被什么拦住”。不要只看robots.txt,也不要只凭搜索资源平台里的一个提示就下结论。正确顺序是:先确认百度蜘蛛是否来访,再看访问结果,最后逐项排查robots协议、服务器状态、页面返回码和抓取频次设置。只有把“来过但被拒”“根本没来”“来了但抓失败”区分开,才能定位真正原因。
抓取限制的第一手证据是服务器访问日志,而不是后台报表。用命令行筛选包含百度蜘蛛标识的记录,例如:
grep -i "Baiduspider" access.log | tail -n 50
观察三项内容:请求时间是否连续、请求URL是否是目标页面、返回状态码是什么。判断结果如下:
这一步的意义在于把“抓取限制”拆成可观察事实。没有日志证据时,任何关于限制的判断都只是猜测。
robots.txt是常见的抓取限制来源,但它的作用范围有限。核对时不要只看文件是否存在,而要逐条比对目标URL。假设目标页面是/seo/guide.html,而robots.txt里写了Disallow: /seo/,那么这个页面确实会被限制抓取。如果写的是Disallow: /seo/private/,则/seo/guide.html不受影响。
检查项包括:
Disallow: /,导致整站被限制。User-agent: Baiduspider下设置了单独的禁止规则。Allow与Disallow冲突,且Allow路径更具体。需要提醒的是,robots.txt只能限制遵守协议的蜘蛛。如果日志里根本没有Baiduspider,就不能把原因归结为robots;如果日志里有Baiduspider但被拒绝,robots才是需要优先处理的对象。
有些抓取限制不在robots.txt里,而在服务器或CDN层面。常见现象是日志中出现大量403、429或503,或者同一IP段请求被重置。此时要检查:
抓取频次设置属于“软限制”,它不会完全禁止抓取,但会降低蜘蛛来访频率。判断方法是:如果日志中Baiduspider访问间隔明显拉长,且服务器没有报错,同时robots.txt也未禁止,那么可以怀疑抓取频次被压低。此时应结合页面更新频率和服务器承载能力,逐步调整,而不是一次性拉到最高。
调整robots.txt、防火墙或抓取频次后,不要立刻下结论。复查时至少观察一个完整的抓取周期,并注意以下变量:
复查的合格标准是:目标URL重新出现Baiduspider访问记录,返回200,且robots.txt不再拦截该路径。如果仍然没有访问,就回到第一步重新确认日志,而不是反复修改robots.txt。
可以按下面顺序逐项打勾:
如果第1项为否,优先查服务器和防火墙;如果第1项为是但第4项为是,优先改robots.txt;如果第1项为是且第3项为200,则抓取限制基本可以排除,应转向索引和内容质量排查。
下一步建议:先导出最近七天的访问日志,筛出Baiduspider记录,再对照robots.txt逐条比对目标URL。把“有来访”“被拒绝”“未来访”三种情况分开记录,再决定改哪里。