爬虫抓取失败防火墙与站点配置整改清单
爬虫抓取失败是网站运营中常见问题,背后原因往往落在两个方向:防火墙把爬虫IP挡在了外面,或者站点配置让搜索引擎无法正常访问。
下面按实际排查顺序给出整改清单,每一步都附带命令或后台操作路径,跟着做就能定位并解决问题。
先检查服务器防火墙是否把爬虫IP误拦
很多云服务器默认开启了操作系统层面的防火墙(iptables/firewalld)或安全组规则。
先确认当前防火墙状态:
- 查看 iptables 规则:
sudo iptables -L -n --line-numbers如果看到大量 DROP 规则,重点关注是否有针对知名搜索爬虫IP段的限制(如 Googlebot 的 66.249.x.x、Baiduspider 的 220.181.x.x)。 - 临时关闭 firewalld 测试:
sudo systemctl stop firewalld(注意:这只是为了验证问题,排查后要重新开启并设置白名单)。 - 如果是阿里云/腾讯云安全组,登录云控制台 -> 安全组 -> 规则管理,检查入方向是否放行了所有来源(可限制端口但不能封死IP段)。如果安全组规则内有“拒绝所有”或“仅允许特定IP”的策略,先临时添加一条放行 0.0.0.0/0 的 HTTP/HTTPS 规则做验证。
验证方法:
用 curl 模拟百度爬虫请求:curl -A "Baiduspider" -I http: 如果能正常返回 200 或 301(非403、
//你的域名
502),
说明服务器防火墙层面没问题。
再确认网站面板防火墙与安全软件放行规则
如果你使用宝塔面板、WDCP 或类似管理工具,面板内置的防火墙(Nginx 防火墙、Apache 防火墙)经常会加入屏蔽爬虫的规则。
- 宝塔面板路径:面板 -> 安全 -> 防火墙 -> 查看“全局过滤规则”和“IP 黑名单”。如果看到有对搜索引擎UA的屏蔽规则,先临时关闭,或者将搜索引擎官方IP段加入白名单。
- 网站设置 -> “屏蔽状态码”或“攻击防护”中检查是否开启了“非浏览器访问”拦截,这个选项容易误伤爬虫(爬虫 User-Agent 不含 Mozilla 特征)。建议改为“仅拦截常见攻击UA”,并单独放行 Baiduspider/Googlebot。
- 如果安装了宝塔的“Nginx 防火墙付费插件”,在其“人机验证”设置中确认“搜索引擎爬虫”是否被强制开启验证(爬虫无法通过滑动验证)。需要关闭此项或勾选“信任搜索引擎UA”。
检查站点配置文件与伪静态规则是否有误
伪静态规则、rewrite 规则写错会导致爬虫抓取时返回 404 或 301 死循环。
- 在网站根目录下找一个实际存在的页面(如
/about.html),用爬虫UA访问看是否正常:curl -A "Googlebot" -I http://你的域名/about.html如果返回意外状态码,去检查 nginx 配置中的 rewrite 规则。 - 常见错误:伪静态规则里强加了
if ($http_user_agent ~* (Baiduspider|Googlebot) ) { rewrite ... }这类定向规则,导致爬虫拿到非正常页面。建议删除所有针对搜索引擎UA的特殊rewrite,除非你明确知道要做什么。 - 对于 Wordpress 站点,检查 .htaccess(Apache)或 nginx 伪静态文件,确认没有对爬虫IP加 deny 指令。
验证 robots.txt 与 HTTP 响应头是否允许抓取
很多爬虫抓取失败是因为 robots.txt 禁止了某些路径,或者服务器返回了 X-Robots-Tag: noindex。
- 访问
https://你的域名/robots.txt在浏览器确认内容。通常允许所有爬虫抓取全部内容是:User-agent: * Disallow:(不允许留空则默认禁止所有)。如果 Disallow 写了/,爬虫就无法抓取任何页面。 - 检查 HTTP 响应头:
curl -I https://你的域名/robots.txt确保状态码是 200 而非 403。如果返回 403,说明防火墙或面板规则拦截了 robots.txt 的访问,需要在防火墙放行该文件。 - 用站长工具(如百度资源平台“抓取诊断”)提交一个普通页面,查看抓取快照中返回的 HTTP 头是否包含
X-Robots-Tag: noindex, nofollow或X-Robots-Tag: none。如果有,检查是否在 Nginx 或面板中全局设置了这个响应头,需要移除。
高频问题与避坑提醒
问:我已经放行了所有防火墙,为什么爬虫还是抓取失败? 答:检查 CDN 或云防护(如 Cloudflare、阿里云 WAF)的规则。
CDN 可能拦截了非浏览器的请求,需要将爬虫IP段或UA加入白名单。
问:宝塔防火墙里没有看到屏蔽规则,但爬虫就是被拦了。 答:可能是宝塔的“系统防火墙”插件(免费版)的“禁止境外IP访问”功能打开了,这个功能会阻挡海外搜索爬虫(如 Googlebot)。
关闭该功能或将爬虫IP段加入白名单。
避坑提醒: 不要为了验证问题而关闭安全组或防火墙后长时间不恢复。
建议在整改时每改一项就做一次抓取测试,确认问题解决后立即恢复防护策略,再通过“IP 白名单”的方式仅放行搜索引擎IP段。
如果你正在处理爬虫抓取失败的场景,建议按本文顺序先检查防火墙、再检查站点配置,遇到异常时重点查看 robots.txt 和响应头。
完整执行一遍后再用搜索引擎的抓取诊断工具验证,大部分问题都能覆盖到。