给站点上了 CDN 或云 WAF 之后,收录往往不会立刻变化,问题常在几周后才浮出来:新页面一直停在“已发现,尚未抓取”,抓取统计里的错误码悄悄上升。很多时候并不是内容质量的问题,而是搜索蜘蛛的请求压根没走到应用层。
爬虫可能被拦在哪一层
从请求到页面之间有好几道关口,任何一道都可能把爬虫挡回去。
- 云 WAF 的通用规则:某些正则命中 SQL 注入、XSS 或路径穿越特征,正常 URL 也会被误判。
- 频率限制:自建 Nginx 限速、CDN 的 QPS 阈值,抓到一定数量就直接拒绝。
- 地域或 IP 封禁:为了应对攻击把整段 IP 拉黑,很容易连带误伤。
- 爬虫管理产品:按 UA、指纹评分决定放行,还是给一个验证页。
- 非拦截因素:源站超时、DNS 解析异常、robots.txt 写错,也会表现出相似症状,需要先区分开。
几个容易被误读的现象
- 抓取统计中 5xx、403 上升,但你自己打开页面一切正常。
- 部分目录收录正常,另一些路径完全不收录,说明规则是按路径生效的。
- CSS、JS、图片加载失败,页面能打开但渲染不完整。
- 抓取测试工具报“无法访问”,而你本地网络毫无异常。
确认是不是拦截,按这四步走
- 先看源站访问日志。如果按官方爬虫 IP 段过滤后,这些请求压根没出现在日志里,说明拦在了 CDN 或 WAF 层,而不是应用层。
- 用网址检查看返回内容。重点看抓取到的 HTML 是真实页面,还是拦截页。有些 WAF 会返回 200 加一个验证页面,比 403 更隐蔽。
- 做 IP 反查。对可疑来源 IP 做反向 DNS,确认域名是否属于搜索引擎官方。只看 UA 并不靠谱,UA 可以随意伪造,而不少规则又拿 UA 当唯一依据。
- 换地区、换线路做对比。地域封禁最容易被忽略:从不同节点请求同一个 URL,看返回是否一致。
放行时的几个处理顺序
- 优先按官方公布的 IP 段或反查结果放行,不要只加 UA 白名单。
- 检查 CDN 缓存里是否存了拦截页。一个被缓存的 200 验证页,会持续被当作正常内容返回。
- 限速阈值调到合理范围。每秒一个请求这种设置,对大站几乎等于关闭抓取。
- 让 robots.txt 和 WAF 规则保持一致。一边允许一边拒绝,是最难排查的一类问题。
- 放行后观察一到两周,抓取统计和“已发现,尚未抓取”的数量通常会有所变化,但不要期待立刻见效。
放行只是让请求进得来。能不能进索引,还要看页面内容、结构和其他站点信号,这两件事别混在一起判断。
几个常被忽略的坑
- 只放行了 www 版本,http 或裸域仍被拦,抓取结果按哪一版算就变得不确定。
- 移动端和桌面端分属不同域名,只处理了其中一个。
- 用第三方工具从机房 IP 测试,结论和搜索引擎实际访问的情况并不通用。
- 验证页带 JS 挑战,蜘蛛拿不到内容,却拿到了 200 状态码,日志里看不出异常。
排查顺序建议从日志开始:先确认请求有没有到源站,再判断是拦截还是其他原因,最后才谈放行和观察。这样比一上来就加白名单更省时间,也不容易漏掉真正的问题。