投放蜘蛛池之后,抓取记录从每天几百掉到个位数,很多人第一反应是“蜘蛛池没用了”。但实际排查下来,相当一部分情况是站点这一侧的网络层出了问题:CDN 或 WAF 把搜索蜘蛛拦在了门外,请求根本没走到应用服务器。
先分清是“没发现”还是“没进来”
这两种情况表现很像,处理方式却完全不同:
- 没发现:搜索蜘蛛压根不知道存在这个 URL,日志里找不到任何相关请求。
- 没进来:请求发出过,但在 DNS、CDN、WAF 或负载均衡这一层就被挡掉,源站日志看不到,或者只零星留下几条 403、429。
判断的关键是分层看日志。源站日志一片空白,不代表蜘蛛没来,也可能只是没走到源站。
怎么确认是被拦截
- 用命令行工具带上搜索蜘蛛的 UA 去请求自己的 URL,看返回码和返回内容。重点看状态码是不是 403、429、503,返回的是验证页、JS 跳转页,还是正常 HTML。
- 做几组对照:正常浏览器 UA、蜘蛛 UA、空 UA。如果只有蜘蛛 UA 被拦,基本可以判断是爬虫规则命中。
- 到 CDN 或 WAF 控制台看拦截日志,通常能看到命中规则名、拦截原因和触发时间,比源站日志更直接。
- 观察拦截量随时间的变化曲线。如果拦截次数在投放时段明显上涨,说明投放节奏本身触发了频率限制。
站长平台的抓取测试工具经常走白名单通道,测出来正常不代表真实抓取不被拦,两者要分开看。
常见的几类误伤
- 频率阈值设得太低:蜘蛛池短时间内对同一域名发起大量请求,直接触发限流或临时封禁。
- 云厂商的爬虫防护默认开启:开通 CDN 时顺手勾选了 Bot 管理,规则更新后误伤搜索蜘蛛。
- IP 信誉连坐:同 IP 段或同 C 段的其他站点被刷过,整段进了黑名单。
- JS 挑战页:返回 200,但内容是验证脚本,搜索蜘蛛拿不到正文,效果等同于没抓到。
- 静态资源被拦:只放行了 HTML,把 CSS、JS 全拦掉,页面渲染不完整,抓取质量也会下降。
处理顺序建议
- 先确认拦截发生在哪一层,不要一上来就大改 WAF 规则。
- 核对真实搜索蜘蛛的 IP 段(各搜索引擎会公布官方 IP 列表),按 IP 放行比按 UA 放行可靠,因为 UA 可以伪造。
- 把限流阈值调到合理区间,同时对 sitemap、robots.txt 和静态资源单独放行。
- 调整蜘蛛池的投放节奏,降低单位时间内的请求密度,观察两三天的抓取量变化。
- 如果站点本身存在整站降权或大面积不收录,网络层放行只是恢复抓取的前提,最终能否收录仍取决于内容与站点质量。
抓取量骤降时,建议按 DNS/CDN → WAF → 应用 → 源站日志的顺序逐层排查。很多“蜘蛛池失效”的结论,其实是中间某一层悄悄改了规则。