网站被恶意请求骚扰的时候,多数人第一反应是把防护等级调高:加 WAF 规则、加频率限制、拉黑一批 UA。这些动作本身没错,问题在于搜索蜘蛛的抓取行为和攻击流量在服务器眼里常常长得很像——都是短时间大量请求、都是陌生 IP、都可能出现同一个 UA 反复访问。防护一收紧,蜘蛛可能就一起被挡在门外,而你在后台看到的只是抓取量下降,很难第一时间联想到防火墙。
安全策略误伤蜘蛛的几种典型情况
- UA 黑名单做得太粗。有的规则直接屏蔽包含 bot、spider 字样的请求,正常的搜索蜘蛛自然中招。
- 频率限制阈值过低。站点小、服务器弱,于是把单 IP 每分钟请求数压得很低,蜘蛛正常抓取就被判定为攻击。
- CDN 或云防护的 Bot 管理默认拦截。开启了挑战或人机验证,但没把已知搜索引擎加进白名单。
- IP 段封禁范围过大。为了挡住某一片垃圾流量,顺手封了整个网段,搜索引擎的出口 IP 可能就在里面。
- 服务器层的自动封禁工具。这类工具通常只看请求频率,不看请求是谁发出来的。
先确认,再改规则
动手调整之前,最好先拿到证据。步骤并不复杂:
- 从服务器访问日志或 CDN 日志里筛出蜘蛛 UA 的记录,看最后一次成功抓取是什么时候。
- 统计这些请求的状态码分布。如果大量是 403、429、503,基本可以判断是拦截,而不是内容或结构问题。
- 对照防护规则的日志(WAF 拦截记录、防火墙拦截记录),看被拦的 IP 里有没有蜘蛛。
- 用搜索引擎官方的抓取测试工具,或站长后台的抓取诊断,从外部触发一次请求,看返回结果。
注意:日志里的 UA 是可以伪造的。判断真假蜘蛛,更稳妥的方式是反查 IP 归属,看它是否属于搜索引擎官方公布的 IP 段,而不是只看 UA 字符串。
调整时的几个做法
- 给已验证的蜘蛛 IP 段开白名单,优先级高于频率限制和 UA 规则。
- UA 规则尽量精确匹配,避免用模糊的包含匹配一刀切。
- 限速用分层策略:已确认的蜘蛛给较高配额,未知来源给低配额,而不是所有人共用一条线。
- 返回码要选对。临时拦截用 429 或 503 并带上 Retry-After,别直接返回 403;403 容易被理解为永久拒绝,蜘蛛可能降低抓取频率甚至不再访问。
- 改完规则后观察一到两周,看抓取量和状态码分布是否回到正常区间。
日常维护的一点建议
把“蜘蛛能不能正常访问”当成一项常规检查,而不是出问题才查。可以固定每周看一次日志里的蜘蛛请求量和状态码,和上周做个简单对比。如果某个栏目突然没有抓取记录,先看服务器层面有没有异常,再去怀疑内容和内链。区分清楚“蜘蛛不想来”和“蜘蛛来不了”,排查方向会清晰很多。
防护和可抓取并不冲突,关键是把搜索引擎的抓取当成已知的正常流量对待,而不是和其他陌生请求混在一起处理。