Apache可通过配置拦截特定User-Agent并返回403 Forbidden,无需跳转;方法包括.htaccess规则(RewriteCond+RewriteRule [F])或httpd.conf中SetEnvIfNoCase+Deny from env=BADBOT,支持正则与大小写忽略,配合ErrorDocument可自定义提示页。

Apache可以通过配置直接拦截特定User-Agent(UA)的请求,并返回HTTP 403 Forbidden响应,无需跳转或重写。核心思路是:识别非法UA字符串 → 标记为恶意请求 → 拒绝访问并返回403状态码。操作简单、生效快,适合站长快速部署反爬策略。
一、使用 .htaccess 文件(虚拟主机/无服务器权限时首选)
适用于大多数共享主机环境,无需重启服务,修改即生效(需确保服务器已启用AllowOverride All)。
- 在网站根目录创建或编辑
.htaccess文件 - 添加以下标准规则(支持正则匹配,不区分大小写):
RewriteCond %{HTTP_USER_AGENT} (FeedDemon|Indy Library|AhrefsBot|MJ12bot|EasouSpider|Python-urllib|ZmEu|oBot|HttpClient|heritrix) [NC]
RewriteRule ^ - [F]
说明:[F] 表示强制返回403;[NC] 表示忽略大小写;^ 匹配任意路径,确保全站生效。
二、修改 httpd.conf(独立服务器/VPS推荐方式)
更高效、更稳定,适合有root权限的用户。建议写在对应站点的<directory></directory>块内,避免全局误伤。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 定位到站点配置段,例如:
SetEnvIfNoCase User-Agent "^(FeedDemon|AhrefsBot|MJ12bot|EasouSpider|ZmEu|oBot)" BADBOT
Order Allow,Deny
Allow from all
Deny from env=BADBOT
注意:SetEnvIfNoCase 支持正则,开头加^可提高匹配精度;Deny from env=BADBOT 是触发403的关键动作。
三、验证与调试要点
配置后务必验证是否真正生效,避免误拦正常流量:
- 用curl模拟非法UA测试:
curl -I -H "User-Agent: AhrefsBot/7.0" https://yoursite.com/,应返回HTTP/1.1 403 Forbidden - 检查Apache错误日志:
tail -f /var/log/apache2/error.log,确认无语法报错 - 白名单兼容性:如需放行百度蜘蛛等良性爬虫,不要将其写入deny列表;若需严格控制,可配合
allowlist逻辑另行处理 - 避免过度屏蔽:像
Java、Python-urllib这类泛用词可能误伤内部脚本调用,建议加上边界符如Python-urllib/或^Python-urllib
四、进阶建议:结合403自定义页面提升专业性
返回默认403页面较生硬,可同步配置友好提示页,既保持阻断效果,又利于排查和审计:
- 在
.htaccess或httpd.conf中追加一行:ErrorDocument 403 /403-blocked.html - 在网站根目录新建
403-blocked.html,内容可简洁说明:“Access denied due to suspicious user agent” - 该页面不会影响HTTP状态码,仍为403,搜索引擎也不会收录

















