Apache可通过.htaccess或主配置文件中的mod_rewrite基于User-Agent、Accept-Language及空UA特征拒绝恶意请求,无需额外模块,配合日志验证实现精准防护。

Apache 可以通过检查请求头(如 User-Agent 或 Accept-Language)识别并拒绝可疑或恶意浏览器访问,无需额外模块,仅靠 .htaccess 或主配置文件中的 mod_rewrite 即可实现。核心思路是匹配特征字符串后返回 403 或重定向到空白页。
基于 User-Agent 拒绝已知恶意爬虫或扫描器
很多自动化攻击工具(如 sqlmap、nikto、masscan 的默认 UA)会暴露明显标识。可在 .htaccess 或虚拟主机配置中添加:
- 启用重写引擎:
RewriteEngine On - 逐条匹配恶意 UA 字符串(不区分大小写):
RewriteCond %{HTTP_USER_AGENT} (sqlmap|nikto|wget|curl|masscan|nmap|gobuster|dirbuster) [NC] - 直接拒绝访问:
RewriteRule ^ - [F]([F]返回 HTTP 403 Forbidden)
注意:避免过度匹配(例如不要写 chrome),否则可能误杀正常用户;建议先用 R=403 测试日志确认匹配效果。
基于 Accept-Language 拦截非目标语言区域的批量请求
某些恶意流量集中来自特定语言环境(如大量 zh-CN 请求但站点只服务英文用户),可针对性拦截:
RewriteCond %{HTTP:Accept-Language} ^zh.*$ [NC,OR]RewriteCond %{HTTP:Accept-Language} ^ja.*$ [NC,OR]RewriteCond %{HTTP:Accept-Language} ^ko.*$ [NC]RewriteRule ^ - [F]
该方式对真实多语言用户不友好,仅适用于明确限定受众的小型站点或临时防护场景。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
限制无 User-Agent 或空 UA 的请求
正规浏览器和主流爬虫都会发送 UA,完全缺失往往代表脚本或低级扫描器:
RewriteCond %{HTTP_USER_AGENT} ^$RewriteRule ^ - [F]
此规则简单有效,误伤率极低,推荐作为基础防护项启用。
配合日志验证与渐进式策略
拒绝前建议先记录匹配行为,确认无误再执行拦截:
- 在条件后加
[E=BAD_UA:1]设置环境变量 - 用
CustomLog单独记录含%{BAD_UA}e的请求 - 观察 24 小时后再将
[F]替换为实际拒绝动作
不依赖第三方模块,不修改代码,见效快且可逆。关键在精准匹配与日志闭环,而非盲目拉黑。

















