做蜘蛛池和站点运营时,一个很常见的困惑是:入口页的访问日志里明明有搜索蜘蛛的 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 存在多个变体(带参数、大小写不同),你在日志里搜的形式和蜘蛛抓的形式不一致。
建议的验证顺序
- 固定一小批入口页和目标 URL,减少变量。
- 用不同 UA、不同出口 IP 各测一次入口页,确认源码里能看到链接。
- 在搜索引擎后台对单个目标 URL 发起抓取测试,确认能正常返回。
- 连续观察 24 到 72 小时的日志,看目标页是否出现同 IP 段的访问。
排查这类问题不要急着加大投放量,先把“入口页可解析、链接可跟、目标页可访问”这三步确认掉,再谈规模。