Apache屏蔽蜘蛛User-Agent写法_Apache IIS屏蔽蜘蛛抓取教程详解
搜索引擎蜘蛛抓取异常时,需要通过规则精准拦截不良蜘蛛,保护服务器资源。某些SEO工具蜘蛛(如Ahrefs、Semrush、Majestic)频繁抓取网站页面,分析网站结构和外链,站长不希望这些工具获取网站数据。Apache和IIS的蜘蛛屏蔽规则基于User-Agent匹配,但UA字符串经常变化,规则需要定期更新才能覆盖新出现的爬虫。
梳理过数百个故障工单后发现,这类问题的成因有规律可循。robots.txt只是君子协定,不良蜘蛛不会遵守robots.txt的禁止规则,必须通过服务器规则强制屏蔽。蜘蛛屏蔽规则中使用了301重定向,但重定向目标页面也被蜘蛛屏蔽规则匹配,导致循环重定向。User-Agent匹配规则过于宽泛,如使用RewriteCond %{HTTP_USER_AGENT} ^.*bot.*$ [NC]会匹配所有包含bot的UA,包括正常的Googlebot、Bingbot,导致误封正常搜索引擎。IIS web.config中的蜘蛛屏蔽规则放在了
下面给出具体的解决步骤,按顺序操作基本能覆盖所有情况。定期更新蜘蛛列表:关注新出现的SEO工具爬虫和采集器UA,定期更新屏蔽规则,可参考公开的bad bot列表(如apache-bad-bots、nginx-bad-bots)。Apache屏蔽蜘蛛返回410(永久删除):将[F,L]改为[G,L],[G]返回410 Gone状态码,告诉蜘蛛该页面永久不存在,比403更明确。robots.txt配合:在robots.txt中添加Disallow规则禁止不良蜘蛛,虽然不良蜘蛛可能不遵守,但合规的蜘蛛会遵守,双重防护效果更好。注意事项:屏蔽蜘蛛前确认不会影响正常收录,建议先屏蔽已知的SEO工具蜘蛛(Ahrefs、Semrush、Majestic等),不要轻易屏蔽百度、谷歌等主流搜索引擎;屏蔽后观察网站流量和收录变化,如有异常及时调整规则。结合IP段屏蔽伪造蜘蛛:在Apache中同时匹配UA和IP段,RewriteCond %{HTTP_USER_AGENT} ^.*Baiduspider.*$ [NC] RewriteCond %{REMOTE_ADDR} !^180.76. RewriteCond %{REMOTE_ADDR} !^220.181. RewriteRule ^(.*)$ - [F,L],UA是百度但IP不在百度IP段则屏蔽。Apache只允许指定搜索引擎(白名单):RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !^.*Googlebot.*$ [NC] RewriteCond %{HTTP_USER_AGENT} !^.*Baiduspider.*$ [NC] RewriteCond %{HTTP_USER_AGENT} !^.*bingbot.*$ [NC] RewriteCond %{HTTP_USER_AGENT} !^.*Sogou.*$ [NC] RewriteCond %{HTTP_USER_AGENT} !^.*360Spider.*$ [NC] RewriteRule ^(.*)$ - [F,L],非白名单UA一律403。
从更广泛的运维视角来看,还有一些容易被忽略的诱发因素。防火墙或安全组拦截了相关端口或请求,导致规则测试时无法正常访问。浏览器本地缓存了旧的页面或重定向结果,需要强制刷新或清除缓存才能看到新规则效果。
实际操作中还需要注意以下细节。测试规则时先在测试环境验证,确认无误后再应用到生产环境。防盗链规则配置后,用不同来源的请求测试,确保正常访问不受影响。修改规则前务必备份原配置文件,规则出错导致网站500错误时能快速回滚。正则表达式中的特殊字符需要转义,如点号要写成.,否则会匹配任意字符。虚拟主机用户没有服务器管理权限时,通过空间商控制面板或上传配置文件(.htaccess/web.config)来实现规则。
除了上述问题,实际运维中还可能遇到以下相关故障。域名屏蔽后所有域名都无法访问,检查规则中的条件判断是否写反了。蜘蛛屏蔽后正常搜索引擎也被拦截,检查User-Agent匹配规则是否过于宽泛。IP屏蔽规则在CDN环境下不生效,CDN回源IP被屏蔽导致所有用户无法访问,需要获取真实客户端IP。伪静态规则中中文URL乱码,需要在规则中添加NE(no escape)标志或配置编码。IP屏蔽后正常用户也无法访问,可能是屏蔽范围过大,使用了过于宽泛的CIDR段。
遇到规则不生效不要急于重写,先看服务器日志和模块加载状态,针对性排查往往事半功倍。

更新时间:2026-09-01 13:55:45
上一篇:网站Docker环境502 Bad Gateway_实战案例分析_高并发防护方案