爬虫抓取诊断排查全站不收录根本原因
为什么爬虫总抓不到你的网站?
网站上线后迟迟没有收录,很可能是爬虫在抓取阶段就被拦住了。
本文按实操顺序梳理一套完整的爬虫抓取诊断流程,每一步都有可执行的检查命令或后台操作路径,帮你找到并解决全站不收录的根本原因。
第一步:确认爬虫能否正常访问你的网站
先排除最基础的服务器连通性。
用你本机或一台服务器执行以下命令,模拟爬虫发起请求:
curl -I -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" https://你的域名/
观察返回的HTTP状态码:
- 200 OK:网站正常,继续往下查。
- 301/302:检查是否被强制跳转到错误页面(比如跳http或非目标域名)。
- 403/503:服务器或CDN可能屏蔽了爬虫UA(User-Agent)。
- 4xx/5xx:服务器本身出错,先修复网站访问。
同样可以用在线工具(如站长之家HTTP状态码检测)换上百度或Google的User-Agent测试。
第二步:逐一检查屏蔽爬虫的常见“关卡”
2.1 看robots.txt是否误封了全站
访问 https://你的域名/robots.txt,重点关注以下几点:
- 是否包含
Disallow: /(表示禁止所有爬虫抓取全站) - 是否单独禁用了百度蜘蛛
User-agent: Baiduspider后加Disallow: / - 是否有过期的屏蔽规则(比如旧站点迁移后未更新)
2.2 检查页面上是否存在noindex标签或meta robots
右键查看网页源代码,搜索 noindex:
如果存在,爬虫就不会收录该页面。
需在CMS或主题设置中移除。
2.3 排查CDN或云防火墙是否拦截爬虫
如果你使用了CloudFlare、阿里云CDN或腾讯云CDN,进入后台 → 安全设置 → UA黑白名单:
- 确认没有将常见爬虫的User-Agent加入黑名单。
- 如果开了防火墙(如WAF),检查是否有规则触发了爬虫拦截(例如限制请求频率)。
2.4 检查服务器IP白名单或Nginx/Apache访问控制
以Nginx为例,查看站点配置中是否有 allow/deny 限制:
location / {
deny all; # 这会阻止所有请求,包括爬虫
allow 1.2.3.4; # 只允许特定IP
}
宝塔用户进入网站设置 → 访问限制,查看是否启用了IP限制。
如果有,需要添加爬虫的IP段或关闭限制。
第三步:从访问日志确认爬虫是否来过
登录服务器查看访问日志,以Nginx为例:
tail -f /var/log/nginx/access.log | grep -i "spider|bot"
- 如果完全看不到爬虫请求记录,说明爬虫根本没能到达服务器,问题出在更前面的CDN、防火墙或DNS。
- 如果看到爬虫请求但有大量
403或404,需要进一步分析日志中的请求路径和返回码。
宝塔用户可以在“安全” → “日志分析”中筛选User-Agent包含“Baiduspider”或“Googlebot”的记录。
第四步:在搜索引擎站长平台验证并提交
- 百度资源平台:添加站点并验证所有权 → 点击“抓取诊断” → 输入首页 → 选择PC或移动 → 发起抓取。观察是否成功,失败原因会直接显示(如连接超时、DNS解析失败、服务器错误)。
- Google Search Console:URL检查 → 输入首页 → 查看“抓取”状态。如果有警告,按照提示修复。
同时,确保你在站长平台提交了sitemap.xml,并查看其抓取状态是否正常。
第五步:高频问题与避坑说明
Q:curl测试返回200,但蜘蛛就是不来?
A:检查DNS解析是否全国生效(用站长工具测各地解析),部分CDN节点会因区域屏蔽造成蜘蛛抓取不到。
Q:robots.txt明明没禁止,百度还是没收录?
A:看有没有在网页头部添加 ;或者后端程序根据UA做了拒绝(如PHP代码判断User-Agent)。
Q:用了CDN后网站就不收录了?
A:CDN加速时确保没有开启“爬虫挑战”或“浏览器验证”,否则蜘蛛无法通过验证。建议使用CDN的“仅缓存”模式。
避坑提醒:
- 不要只依赖一个工具(如curl),建议结合在线UA检测和站长平台双重确认。
- 修改robots.txt后立刻在站长平台测抓取,生效时间通常10~30分钟。
- 日志中看到爬虫请求不一定是100%抓取成功,要关注返回状态码和页面内容是否正常。
如果按以上流程走一遍还没找到原因,可以检查网站是否使用了无头浏览器渲染(SPA/JS动态内容),这类页面需要做SSR或预渲染才能被爬虫识别。