先说结论:入口页本身返回 5xx 或 403,搜索蜘蛛大概率不会去解析页面里的链接,也就谈不上顺着抓目标 URL。链接发现的前提是页面被成功取回,状态码不对,后面的链路基本就断了。
状态码决定了蜘蛛愿不愿意往下走
搜索蜘蛛请求一个 URL 后,会先看 HTTP 状态码和响应头,再决定怎么处理正文。
- 200:正常解析,页面里的 a 链接会被提取并进入待抓队列。
- 5xx(500、502、503、504):属于服务端临时故障,蜘蛛一般视为抓取失败,不解析正文,稍后重试。重试仍是 5xx,抓取频次会往下掉。
- 403:被服务器拒绝。蜘蛛通常判定为无权访问,同样拿不到链接。
- 404 / 410:页面不存在,直接放弃,不会有链接被提取。
- 429:请求过多被限速,蜘蛛会退避,这一轮里入口页相当于没被抓到。
也就是说,入口页抓取失败时,上面写了多少条目标 URL、锚文本写得多精准,都发挥不了作用。
几种容易被忽略的“半失败”
间歇性 5xx
入口页时好时坏,蜘蛛某次抓到 500,那一次就不会提取链接。日志里看着“蜘蛛来过”,实际上这一轮是白跑的。
WAF 或 CDN 返回 403
部分防护策略会按来源 IP、UA、访问频率做拦截,返回一个 403 拦截页。蜘蛛拿到的是拦截页而不是真实入口页,自然看不到链接。
软 404
状态码是 200,但正文是“页面不存在”“内容已删除”之类的提示。这种情况蜘蛛能解析链接,但页面质量差、重复度高,长期看对入口页本身没有帮助。
跳转链条过长
入口页 302 到中间页再 302,链条上任意一环 5xx 或 403,最终都到不了真正带链接的那个页面。
排查顺序建议
- 用命令行或抓取工具直接请求入口页,看状态码、响应头和返回正文,不要只看浏览器渲染后的结果。
- 检查服务器错误日志,确认 5xx 是应用报错、超时,还是被上游拦截。
- 确认 WAF / CDN 是否对搜索蜘蛛的 UA 或 IP 段留了例外规则。
- 看入口页的响应时间,超过几秒的页面容易被判定为不稳定,抓取频次随之下降。
- 确认入口页没有被 robots.txt、登录墙、验证码挡住。
已经发生了怎么补救
- 先修状态码,把入口页恢复到稳定 200,再考虑往上加新链接。
- 不要只依赖入口页,重要目标 URL 可以同时通过站点地图、站内链接、其他入口页等多条路径暴露。
- 如果入口页只是临时不可用,不必急着换域名,先把服务器稳定性解决。
- 持续看日志里入口页的抓取状态,确认后面几轮恢复正常,再判断链接有没有被跟进。
一句话判断
看入口页 URL 在日志里的状态码:200 且正文正常,链接被提取只是时间问题;如果是 4xx / 5xx,先别纠结链接写法和锚文本,把服务端问题解决掉更实际。
入口页的作用是被成功取回并被解析,状态码不对,链接再多也是空转。先保证入口页稳定可访问,再谈链接布局和数量。