如何限制AWS应用负载均衡器仅接收浏览器流量,拦截非浏览器工具请求
限制AWS应用负载均衡器流量至常规浏览器的方法
1. 用AWS WAF和ALB集成(最核心的实现方式)
AWS WAF可直接与应用负载均衡器绑定,通过规则过滤不符合要求的请求:
- 拦截特定User-Agent:
常规浏览器的User-Agent会带有Chrome、Firefox、Safari、Edge这类标识,而Postman、curl、wget、无头浏览器的UA有明显特征(比如PostmanRuntime、curl、wget、HeadlessChrome、Selenium)。在WAF中创建字符串匹配规则,只要请求头的User-Agent包含这些工具类关键词,直接阻止请求。同时可设置允许规则,仅放行带主流浏览器标识的请求,注意覆盖不同浏览器的UA格式,避免误拦正常用户。 - 检查请求头完整性:
工具发起的请求常缺少数浏览器默认发送的头字段,比如Accept-Language、Sec-Fetch-Dest、Accept-Encoding等。在WAF中添加规则,当请求缺少这些关键头的2个及以上时,直接拦截。
2. 增加客户端JS验证(补防UA伪造)
不少工具可以伪造User-Agent,此时可通过前端JS做辅助验证:
- 在页面加载时,用JS生成随机字符串并存为Cookie(比如
browser-check=xxxx),后端需能验证该Cookie的有效性。 - 在WAF中添加规则,检查请求是否携带有效的
browser-checkCookie,未携带或无效的请求直接拦截。 - 无头浏览器大多会暴露
navigator.webdriver属性,JS里可判断该属性,若是无头模式则不生成验证Cookie,让请求被WAF拦截。
3. 基于请求行为拦截
工具类请求的行为与正常浏览器存在差异:
- 速率限制:在WAF中配置速率规则,单一IP短时间内发送大量请求时直接拦截,工具的批量请求很容易触发该规则。
- 检查请求路径组合:正常浏览器访问时会先加载页面,再请求CSS、JS、图片等静态资源;而工具可能直接请求API接口。在WAF中添加规则,若请求仅访问API路径,却无访问前端页面的记录,则拦截该请求。
注意事项
- 避免误拦正常用户:部分隐私工具会修改UA或移除部分头字段,需测试主流浏览器的请求特征,调整规则的宽松度。
- 定期更新规则:工具和无头浏览器会更新UA字符串,需定期查看WAF日志,补充新的拦截关键词。
- 开启日志分析:启用ALB和WAF的日志功能,通过CloudWatch Logs分析拦截情况,持续优化规则。
内容的提问来源于stack exchange,提问作者user352290
相关产品推荐
相关产品推荐

