爬虫抓取异常服务器防火墙全站整改完整清单
爬虫抓取异常通常表现为搜索爬虫无法访问、抓取频率骤降或大量 403/499 响应。
问题不一定出在网站代码,很多情况下是防火墙策略误伤,或者缺少针对异常爬虫的拦截规则。
下面这份整改清单按日志定位、UA 拦截、防火墙配置、CDN 联动和验收步骤展开,零基础用户也能依序执行。
第一步:先从访问日志锁定异常来源
进入 Nginx 或 Apache 日志目录,先看最近几小时的访问记录。
以 Nginx 为例,执行:
cd /www/wwwlogs
ls -lh
然后用 grep 筛选可疑爬虫 UA:
grep -i "spider" access.log | tail -100
正常搜索引擎爬虫如 Googlebot、Baiduspider 会带有官方 UA 和对应 IP。
如果日志里出现大量陌生 UA、访问频率异常高、且集中在某个 IP 段,基本可以判定需要封禁。
第二步:按 UA 和 IP 准备拦截名单
把明显的恶意 UA 和 IP 单独列出来。
封单个 IP 可以用 iptables:
iptables -A INPUT -s 1.2.3.4 -j DROP
如果 IP 很多,建议用 fail2ban 或宝塔面板的防火墙功能统一管理。
注意:不要直接封掉整个 IP 段,尤其要保留搜索引擎官方爬虫的 IP 段,否则会造成全站抓取异常。
第三步:配置防火墙和 WAF 拦截规则
以宝塔面板为例,进入“软件商店”安装 Nginx 防火墙,在“恶意 UA”里添加要拦截的特征词。
也可以在站点配置文件中手动加规则:
if ($http_user_agent ~* "SemrushBot|AhrefsBot|DotBot") {
return 403;
}
添加后记得重载 Nginx:
nginx -t && nginx -s reload
如果你是自建源站且套了 CDN,务必在防火墙里放行 CDN 回源 IP,否则容易把自己源站封掉,导致搜索引擎抓取时拿到 5xx。
第四步:全站整改时的常见坑
这里有几个容易踩坑的地方,整改时一定要逐项检查:
- 别误杀正常爬虫:拦截 UA 时不要包含“Googlebot”“Baiduspider”等官方标识,除非你确认那是伪造 UA。
- robots.txt 不能过度屏蔽:如果 robots.txt 里 Disallow 了搜索引擎入口页面,防火墙放行也无法恢复抓取。
- 防火墙规则必须持久化:用 iptables 保存规则,否则重启服务器后封禁失效。
- CDN 缓存状态要刷新:如果 CDN 缓存了 403 页面,搜索引擎抓取时可能仍返回旧响应。
第五步:验证抓取恢复情况
先用 curl 模拟搜索引擎 UA 测试首页响应:
curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://你的域名
返回 200 表示源站已放行。
接着去百度搜索资源平台或 Google Search Console 执行“抓取测试”,同时观察访问日志里是否重新出现正常爬虫记录。
若仍有异常,保留日志观察一周再微调规则。
如果你发现搜索平台抓取频率依然很低,可以检查 CDN 回源节点是否被限流,以及服务器安全组是否单独拒绝过某些地域 IP。
整套整改完成后,搜索引擎通常会在下一轮抓取周期内恢复访问。