引言
在当前的互联网流量中,机器人(Bot)流量占据了半壁江山。并非所有 Bot 都是恶意的------搜索引擎爬虫帮助网站被索引,监控机器人确保服务可用。但那些执行撞库(Credential Stuffing)、恶意爬取(Scraping)、库存囤积(Inventory Hoarding)和漏洞探测的自动化脚本,正给企业带来巨大的业务风险和安全威胁。
F5 BIG-IP Advanced WAF (AWAF) 提供了业界领先的 Bot 防御(Bot Defense) 技术。不同于传统WAF依赖静态规则,F5的Bot防御方案采用多层级、自适应 的检测机制,能够精准区分人类用户、善意机器人和恶意自动化工具。
本文将基于 F5 官方技术文档,深入探讨其 Bot 防护的核心概念、工作原理、配置步骤及实战场景。
核心概念与术语
在配置 F5 Bot 防护之前,首先需要理解以下几个关键术语:
| 术语 | 说明 |
|---|---|
| Bot Defense Profile | Bot 防御的策略集合,定义了如何检测、分类以及处置 Bot 流量。可关联到虚拟服务器(Virtual Server)上生效 |
| JavaScript Challenge | 向客户端浏览器注入隐形的 JavaScript 脚本,验证其是否具备完整的 JS 渲染和执行能力。无法执行的脚本工具将被识别为 Bot |
| Device ID | F5 的客户端指纹技术。通过收集浏览器属性、屏幕分辨率、硬件特征等生成唯一标识,用于跨 IP 追踪同一设备,即使攻击者切换代理 IP 也无法逃脱 |
| Mitigation Action | 对检测到的 Bot 采取的处置动作,包括 Alarm(告警)、Block(阻断)、CAPTCHA(图形验证码)和 Rate Limit(速率限制) |
| Enforcement Mode | 策略生效模式:Transparent(透明/观察模式,仅记录不阻断)或 Blocking(阻断模式) |
| Bot 分类 | F5 将 Bot 分为四类进行处理:Trusted(可信,如搜索引擎)、Untrusted(不可信)、Suspicious Browser(可疑浏览器)、Malicious Bot(恶意 Bot) |
防护原理与检测机制
F5 BIG-IP AWAF 的 Bot 防护核心在于纵深防御------从静态特征匹配到动态行为分析,层层递进。
四层检测逻辑

F5 Bot 防护流量处理流程图
以下是根据 F5 官方文档整理的 Bot 防护流量处理流程图,展示了从客户端请求到最终响应的完整检测与处置流程。
完整流量处理流程图

分阶段详细说明
第一阶段:特征签名检测

当客户端请求到达虚拟服务器时,Bot Defense 首先进行特征签名检测:
- 匹配已知的恶意 User-Agent(如 Python
requests、curl、Go-http-client) - 识别攻击工具指纹(如 Burp Suite、Nikto、sqlmap)
- 检查 IP 信誉库
第二阶段:JS挑战与Device ID注入

JS挑战的核心原理是验证客户端是否具备完整的 JavaScript 执行能力:
- 真正的浏览器能够执行 JS 并返回加密 Token
- 简单的脚本工具(curl、Python requests)无法执行 JS,将被判定为 Bot
第三阶段:行为分析

行为分析引擎持续监控客户端的行为模式:
- 请求频率:1秒内访问超过30个不同URL
- 路径模式:以固定顺序、固定间隔遍历目录
- 登录行为:连续快速尝试大量用户名密码组合
- 时间特征:请求间隔过于均匀(机器特征)
第四阶段:Device ID 指纹追踪

Device ID 是 F5 的核心指纹技术,通过收集客户端特征生成唯一标识:
- 即使攻击者更换 IP 或清除 Cookie,Device ID 不变
- 可跨会话追踪同一设备的攻击行为
- 支持与 Bot 黑名单联动
配置关键节点
根据 F5 官方实验室文档,Bot Defense 的配置涉及以下关键设置:
| 配置项 | 说明 | 建议值 |
|---|---|---|
| Bot Defense Profile | 策略配置文件 | Balanced / Strict |
| Enforcement Mode | 生效模式 | Transparent(观察)→ Blocking(阻断) |
| Browser Verification | 浏览器校验 | Verify After Access |
| Device ID Mode | 指纹模式 | Generate After Access |
| Protected Endpoints | 保护的应用端点 | /login, /api/* |
| Bot Mitigation Action | Bot处置动作 | Block / CAPTCHA / Alarm |
Bot 分类与处置策略

根据 F5 官方分类标准:
- Trusted Bot:搜索引擎爬虫(Googlebot、Bingbot),仅记录不阻断
- Untrusted Bot:未知爬虫工具,建议速率限制
- Suspicious Browser:行为异常的浏览器,触发 CAPTCHA 真人验证
- Malicious Bot:已知攻击工具,直接阻断
日志与监控
检测到的 Bot 事件可通过以下方式查看:
- Security > Event Logs > Bot Defense > Bot Requests:查看详细 Bot 请求日志
- Security > Event Logs > Bot Defense > Bot Traffic:查看 Bot 流量统计图表
- admd 命令行 :
admd -s vs./Common/vs_hackazon_http查看学习基线状态
详细检测机制
第一阶段:特征匹配(Signature Enforcement)
Bot Defense 内置了丰富的 Bot 签名库,可识别已知的爬虫工具和攻击框架(如 Python requests 库、Headless Chrome、Selenium、Burp Suite 等)。一旦请求头或 TLS 指纹匹配签名,即可直接阻断。
第二阶段:浏览器合法性校验(Browser Verification)
当客户端首次访问受保护网站时,F5 会返回一个携带 JavaScript 挑战的页面。真正的浏览器能够执行该脚本并返回加密的 Token;而简单的脚本工具(如 cURL、Python requests)无法执行 JS,将被判定为 Bot 并丢弃请求。
F5 提供三种浏览器校验模式:
- Verify Before Access:在允许访问后端应用之前,先发送 JS 挑战。这是最严格的模式。
- Verify After Access (Blocking):初始访问先通过轻量级头部校验放行,随后在响应中注入 JS 挑战,后续请求必须携带有效 Token,否则阻断。
- Verify After Access (Detection Only):与上一种类似,但校验失败时仅记录不阻断,适用于观察模式。
第三阶段:行为分析(Behavioral Analysis)
即使客户端通过了 JS 校验,如果表现出非人类行为特征,仍会被处置。例如:
- 在 1 秒内访问了 50 个不同商品页
- 以固定频率、固定顺序遍历 URL 路径
- 登录页面连续快速尝试大量用户名密码组合
这些行为会被自动识别并触发速率限制或直接阻断。
第四阶段:Device ID 指纹追踪
F5 可以通过注入 Device ID 脚本,收集客户端的浏览器指纹(User-Agent、屏幕分辨率、时区、已安装字体、Canvas 指纹等)。即使攻击者不断更换 IP 或清除 Cookie,只要 Device ID 不变,WAF 依然能识别出是同一台设备,从而实现跨会话追踪。
三种内置策略模板对比
F5 提供了三种预设的 Bot Defense 模板,方便管理员根据业务场景快速选择合适的防护级别:
| 配置项 | Relaxed(宽松) | Balanced(平衡) | Strict(严格) |
|---|---|---|---|
| 浏览器校验 | 免挑战验证 | 访问后验证(阻断) | 访问前验证 |
| Device ID 模式 | 不生成 | 访问后生成 | 访问后生成 |
| 可信 Bot | 告警 | 告警 | 告警 |
| 不可信 Bot | 告警 | 告警 | 阻断 |
| 可疑浏览器 | 告警 | CAPTCHA | 阻断 |
| 恶意 Bot | 阻断 | 阻断 | 阻断 |
| 未知 Bot | 无动作 | 速率限制 | 阻断 |
| DoS 攻击缓解 | 禁用 | 启用 | 启用 |
选型建议:
- Relaxed:适用于内部测试环境或对用户体验要求极高、风险较低的站点,误报风险极低。
- Balanced :推荐大多数生产环境使用,兼顾安全性与用户体验,对可疑浏览器使用 CAPTCHA 而非直接阻断。
- Strict:适用于金融交易、后台管理、抢票等高敏场景,对所有非可信流量实施严格校验。
配置实战:五步开启 Bot 防护
以下是在 BIG-IP 控制台(v16.x - v17.x)中配置 Bot Defense 的标准步骤。
第一步:创建 Bot Defense Profile
- 登录 BIG-IP 配置界面,导航至 Security > Bot Defense > Bot Defense Profiles
- 点击 Create 按钮
- 填写基本信息:
- Name :输入
Production_Bot_Profile - Enforcement Mode :初始建议选择
Transparent(观察模式),验证无误后改为Blocking - Profile Template :选择
Balanced(平衡模式) - Signature Staging :建议保持
Disabled(签名暂存功能默认关闭)
- Name :输入
- 点击 Save 保存
第二步:配置浏览器校验与 Device ID
在 Profile 详情页,点击 Browser Verification 选项卡:
- Browser Verification :选择
Verify After Access (Blocking) - Device ID Mode :选择
Generate After Access
这两项配置确保:首次访问时进行轻量级头部校验,随后在响应中注入 JS 挑战和 Device ID 脚本,后续请求必须携带有效凭证。
第三步:定义 Bot 分类处置动作
点击 Mitigation Settings 选项卡,根据业务需求配置各类 Bot 的处置策略(以 Balanced 模板为例):
| Bot 分类 | 建议动作 | 说明 |
|---|---|---|
| Trusted Bot(如 Googlebot) | Alarm | 仅记录,不阻断 |
| Untrusted Bot | Alarm | 仅记录,如有干扰可改为 Block |
| Suspicious Browser | CAPTCHA | 弹出验证码,确认真人 |
| Malicious Bot | Block | 直接阻断 |
| Unknown | Rate Limit | 限制访问频率 |
第四步:配置白名单(可选)
点击 Whitelist 选项卡,可将特定 IP 或 URL 排除在 Bot 校验之外。例如:
- 内部监控系统的健康检查 IP
- 静态资源路径(如
/robots.txt、/sitemap.xml) - 合作伙伴的回调接口
注意:部分 URL 默认已在白名单中,因为某些浏览器在访问这些路径时行为特殊,可能引发误报。
第五步:关联虚拟服务器
- 导航至 Local Traffic > Virtual Servers,找到需要保护的应用入口
- 点击虚拟服务器名称,进入 Security > Policies 选项卡
- 在 Bot Defense Profile 下拉框中,选择
Enabled,然后选中刚刚创建的Production_Bot_Profile - 点击 Update 保存配置
典型应用场景
防范撞库攻击(Credential Stuffing)
场景描述:攻击者使用从黑产渠道购买的数百万个用户名/密码组合,对登录接口进行自动化尝试。
F5 解决方案 :在登录 URL(如 /login)上配置 Login Protection 类型的微服务保护(Microservice Protection)。F5 会针对登录页面启用更严格的检测逻辑:未经验证的浏览器连续 3 次访问登录页即触发告警并临时封禁客户端 5 分钟。同时配合 Device ID 追踪,即使攻击者更换 IP,仍能被识别。
防止恶意爬虫与数据窃取
场景描述:竞争对手使用动态代理 IP 池,模拟浏览器行为爬取电商平台的价格、库存、用户评价等数据。
解决方案 :启用 Strict 级别的 Bot 防御,配合行为分析。当检测到某个 Device ID 以非人类的速率遍历商品目录时(例如每秒访问 30 个不同商品页),自动触发速率限制或返回虚假数据(蜜罐),同时记录该 Device ID 用于后续追踪。
抢票与稀缺资源防护
场景描述:医院挂号、热门球鞋发售、演唱会抢票等场景中,自动化脚本(Sneaker Bot)以毫秒级速度完成下单,导致真实用户无法抢到资源。
解决方案 :开启 Verify Before Access 模式,在用户访问任何页面之前强制进行 JavaScript 挑战。只有能够完整执行 JS 的浏览器才能进入站点,从而在入口处拦截绝大多数脚本工具。同时启用 DoS Attack Mitigation Mode,在流量激增时自动切换至更严格的防护策略。
API 防护与移动端兼容
场景描述:原生移动 App 无法执行 JavaScript,但 API 接口同样面临 Bot 攻击风险。
解决方案 :提供了 Anti-Bot Mobile SDK,可与移动应用集成,通过 SDK 完成客户端校验和 Device ID 生成,替代浏览器端的 JS 挑战。移动应用通过 SDK 与 F5 网关通信,API 请求携带 SDK 生成的 Token,从而在不依赖 JS 的情况下验证客户端的合法性。