最有效方式是通过waf控制台启用伪造蜘蛛情报库和扫描器恶意指纹库,并结合自定义规则匹配sqlmap|nmap等关键词阻断,同时配置bot白名单放行合法爬虫,再联动频率控制与请求头校验提升准确性。

直接在Web应用防火墙(WAF)中配置UA过滤规则,是最有效且低侵入的方式。重点不是“屏蔽所有非浏览器UA”,而是识别并阻断已知扫描器、工具类指纹,同时避免误伤合法爬虫或API调用。
识别高危User-Agent特征
真实攻击流量中,大量UA具备明显工具标识,例如:
- Apache-HttpClient/4.5.13 (Java/1.8.0_381) —— 日志中曾单小时出现4368次,属典型自动化请求
- sqlmap/1.7.2、nmap/7.94、dirbuster/1.0 等明确含扫描工具名
-
python-requests/2.31.0 单独不危险,但若伴随高频路径遍历(如
/admin/../etc/passwd)则需联动判断 - 伪造搜索引擎UA却无Referer或Cookie行为异常 —— 如声称是BaiduSpider,但请求频率远超正常抓取节奏
在阿里云WAF中配置UA拦截规则
无需编码,通过控制台即可完成:
- 进入WAF控制台 → 防护配置 → 网站防护 → Bot管理 → 爬虫威胁情报
- 开启“伪造蜘蛛情报库”和“扫描器恶意指纹库” —— 这两个库已内置数千种工具UA特征,覆盖sqlmap、nmap、gau、whatweb等主流扫描器
- 若需自定义,可在“自定义防护”模块新建规则:匹配
User-Agent字段包含sqlmap|nmap|dirbuster|acunetix等关键词,动作设为“阻断” - 注意:启用伪造蜘蛛库前,必须先配置Bot白名单,放行
Baiduspider、Googlebot等合法UA,否则会导致搜索引擎无法收录
补充防护建议(防绕过)
仅靠UA字符串匹配容易被绕过,建议组合策略提升准确性:
- 将UA规则与请求频率联动:比如同一IP+同一UA每分钟超过30次请求,自动触发CC防护
- 检查请求头完整性:真实浏览器通常带
Accept、Accept-Language、Sec-Ch-Ua等字段,纯工具请求常缺失或格式异常 - 对UA含
curl/或wget/的请求,限制其只能访问公开接口(如/healthz),禁止访问/api/v1/user等敏感路径 - 后端Go服务可加轻量中间件,在
http.Handler链首层检查r.Header.Get("User-Agent"),命中黑名单立即返回403,不进业务逻辑
关键不是拦住所有非标准UA,而是快速识别出真正有危害意图的扫描行为。工具指纹库+频率控制+头信息校验,三者结合才能兼顾安全与可用性。











