在搜索资源平台做抓取诊断,结果显示 robots 封禁,可打开自己的 robots.txt 一条 Disallow 都没写。这种封禁往往不是文件内容造成的,而是百度蜘蛛根本没拿到那个文件,或者在连接阶段就被挡掉了。

用百度蜘蛛的 UA 亲自请求一次

curl -A "Mozilla/5.0 (compatible;
Baiduspider/2.0; +http://www.baidu.com/
search/spider.html)" -I https://你的域名/robots.txt

重点看状态码和 Content-Type。返回 403 说明服务器或防火墙按 UA 拦了;返回 200 但类型是 text/html,说明请求被重写到了首页,蜘蛛读到的是一段页面而不是规则。

三个高频原因

  • CDN 或 WAF 开了爬虫防护,把百度蜘蛛一起拦了
  • Nginx 里有按 UA 屏蔽的规则,或安全插件拦截了空 referer 的请求
  • 站点开了强制登录或基础认证,蜘蛛访问直接 401

逐个排除,先用 curl 对比普通 UA 和百度 UA 的返回差异,差异出现在哪一层,问题就在哪一层。

顺手确认 meta 标签没被误判

curl -s https://你的域名/ | grep -i "robots"

页面里的 noindex 与 robots 封禁是两回事,平台会分别提示。真正要保证的是:robots.txt 返回 200、类型为 text/plain、内容允许抓取,且蜘蛛能正常建立连接。

改完重新提交一次诊断,等状态恢复再提交 sitemap,比反复点提交有效。

作者 9823189

发表回复