入口页能不能被抓到,很多时候不取决于页面本身,而取决于它前面那层 CDN 和 WAF。页面代码没问题、状态码也正常,但日志里始终只有零星几次访问,问题往往出在流量还没到源站就被拦下了。
被拦住的时候,通常不会有明显报错
和 404、500 不同,拦截发生在更前面:请求到达边缘节点后被判定为可疑,直接返回 403、429,或者抛出一个 JS 校验页。对蜘蛛来说,这不是一个普通的错误页面,而是它不一定会去执行的东西,于是抓取到此为止。站长在源站日志里看不到记录,容易误判成蜘蛛没来。
常见的几类拦截来源
- 频率限制:同一 IP 短时间内请求过多,触发限速。
- UA 与 IP 校验:只认 UA 白名单,或反过来把某些 UA 段整体拉黑。
- JS 挑战:需要执行脚本才放行,而蜘蛛通常不执行。
- 地域与机房段封禁:把整个 IDC 网段拦掉,容易误伤蜘蛛出口。
- 缓存与回源规则:缓存未命中导致回源被限,或回源地址配置有误。
排查顺序:从日志到单点验证
- 先看 CDN 与 WAF 的拦截日志,确认是否有对应时间点的拦截记录。
- 再看源站日志,确认请求是否到达。两者对比,能较快区分是边缘拦截还是源站问题。
- 用与蜘蛛相同的 UA 和来源 IP 段做一次单点测试,观察是否被拦。
- 如果入口页换了域名或 IP,检查新资源的防护策略是否同步,不少问题出在换资源之后没有跟着改配置。
配置上可以做的几件事
- 放行主流搜索引擎的官方 IP 段,而不是只匹配 UA 字符串。
- 对入口页这类需要频繁抓取的路径放宽频率阈值,与普通页面区分开。
- 确认 robots.txt 和站点地图本身没有被拦,否则蜘蛛连规则都读不到。
- 规则调整后把观察期留长一点,不要当天就下结论。
几个容易踩的误区
- 只加 UA 白名单:UA 可以伪造,安全性和可抓取性是两件事,需要配合 IP 校验。
- 直接关掉防护:入口页暴露在公网,关掉防护换来的可能是另一类麻烦。
- 用一个 IP 反复测试就下结论:自家 IP 与蜘蛛 IP 段的待遇可能完全不同。
防护与抓取不是二选一
更稳妥的做法是分层:入口页这类必须被抓的路径走较宽松的策略,配合 IP 段验证;后台、接口等敏感路径保持严格策略。这样既不牺牲站点安全,也不至于在门口把蜘蛛劝退。
一个简单的判断标准:如果源站日志里长时间没有来自目标蜘蛛的记录,而页面本身又没有明显问题,就该先去前面那层找原因。