我的知识记录

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中的蜘蛛屏蔽规则放在了节点外,或条件判断中使用了错误的服务器变量(如{USER_AGENT}而不是{HTTP_USER_AGENT}),导致规则不生效。CDN环境下,部分CDN会改写User-Agent或添加自己的UA,导致源服务器的UA匹配规则失效。Apache的.htaccess中蜘蛛屏蔽规则使用了[NC](忽略大小写),但UA字符串中包含特殊字符(如+、/、括号)没有转义,导致正则表达式匹配失败或500错误。虚拟主机的.htaccess被空间商禁用,用户上传的蜘蛛屏蔽规则不生效,需要通过空间商控制面板或联系服务商配置。

下面给出具体的解决步骤,按顺序操作基本能覆盖所有情况。定期更新蜘蛛列表:关注新出现的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段。

遇到规则不生效不要急于重写,先看服务器日志和模块加载状态,针对性排查往往事半功倍。

Apache屏蔽蜘蛛User-Agent写法_Apache IIS屏蔽蜘蛛抓取教程详解

标签:

更新时间:2026-09-01 13:55:45

上一篇:网站Docker环境502 Bad Gateway_实战案例分析_高并发防护方案

下一篇:腾讯云虚拟主机百度蜘蛛抓取异常配置_robots.txt写法与抓取频率