常见问题

日志里有搜索蜘蛛但目标页没被抓,按这条链路逐段排查

入口页日志能看到搜索蜘蛛,目标 URL 日志却一条都没有,这种情况不一定是蜘蛛池失效。本文按入口页响应、链接是否在源码里、链接属性、目标页可访问性、抓取预算五个环节逐段排查,并列出日志对比时容易误判的几种情况,给出小批量验证的顺序建议。

常见问题

日志里有搜索蜘蛛但目标页没被抓,按这条链路逐段排查

做蜘蛛池和站点运营时,一个很常见的困惑是:入口页的访问日志里明明有搜索蜘蛛的 UA,目标 URL 的日志却一条都没有。这时候容易误判成“蜘蛛池失效”或者“目标页被惩罚”,其实中间还有好几个环节需要逐个确认。

先搞清楚“来过”和“跟过去”是两件事

搜索蜘蛛访问入口页,只代表它取走了这个 HTML。是否继续抓目标 URL,取决于它能不能在解析结果里找到可跟的链接,以及当前抓取预算是否够用。日志对比时要注意三件事:

  • 时区对齐:服务器日志常用本地时间,搜索引擎后台数据可能是 UTC,直接比对会错位几个小时。
  • UA 真伪:UA 可以伪造,最好用反向 DNS 或官方 IP 段校验,避免被假蜘蛛的访问误导。
  • 日志归属:目标站如果挂了 CDN,源站日志只记录回源请求,蜘蛛直接命中缓存时你什么都看不到。

按链路逐段排查

1. 入口页的响应是否完整

确认返回状态是 200,内容不是空壳,也不是被 WAF 拦截后的验证页。响应体过大、首字节时间过长,蜘蛛可能在读完之前就结束请求,链接自然拿不到。

2. 链接是否真的在源码里

用 curl 或关闭 JS 的浏览器取一次入口页,看目标 URL 是否出现在返回的 HTML 中。如果是前端渲染后才插入的链接,搜索蜘蛛不一定执行脚本,即使执行也可能因为资源加载失败而拿不到。

3. 链接属性是否放行

检查 rel="nofollow"、rel="sponsored"、meta robots 的 nofollow,以及链接是否被 JS 事件绑定替代了 href。这些都会让蜘蛛跳过目标 URL。

4. 目标 URL 这一侧的条件

入口页没问题,也可能卡在目标页:robots.txt 屏蔽、返回 4xx 或 5xx、重定向链条过长、需要登录或 Cookie 才能访问。建议先在搜索引擎提供的抓取测试工具里单独测一次目标 URL。

5. 抓取预算与频控

站点整体被限流、入口页同一 IP 下链接过多、短时间内提交大量 URL,都可能让蜘蛛只取一部分就停下。这种情况在日志上表现为“抓了入口页,但只跟了前面几条”。

几个容易误判的点

  • 目标页是纯 JS 渲染,蜘蛛抓取时渲染服务失败,日志有记录但内容为空,看起来像没抓。
  • 目标 URL 之前抓过且内容没变,复访时服务端返回 304,日志上可能不计入常规请求数。
  • 日志被采样或滚动清理,真实抓取记录已经丢失。
  • 同一目标 URL 存在多个变体(带参数、大小写不同),你在日志里搜的形式和蜘蛛抓的形式不一致。

建议的验证顺序

  1. 固定一小批入口页和目标 URL,减少变量。
  2. 用不同 UA、不同出口 IP 各测一次入口页,确认源码里能看到链接。
  3. 在搜索引擎后台对单个目标 URL 发起抓取测试,确认能正常返回。
  4. 连续观察 24 到 72 小时的日志,看目标页是否出现同 IP 段的访问。
排查这类问题不要急着加大投放量,先把“入口页可解析、链接可跟、目标页可访问”这三步确认掉,再谈规模。