配置BOT管理防护规则防御机器行为
BOT管理设置四道防线:已知BOT检测、请求特征检测、BOT行为检测、主动特征检测。通过层层检测,精准识别并管理网站流量中的机器行为,有效降低网站由于遭受BOT攻击,而导致的数据泄露、性能降低等风险。
功能介绍
WAF BOT管理支持以下功能。
开启BOT管理后,WAF默认防护域名下的所有URL资源。如果您希望为特定业务场景(例如登录、注册等场景)配置BOT管理规则进行防护,您可以为BOT管理规则自定义防护对象。
BOT管理支持匹配如下表所示条件的防护对象。
字段 |
字段说明 |
子字段 |
逻辑 |
内容 |
---|---|---|---|---|
路径 |
用于匹配客户端请求的资源路径,即URL中的路径部分。 |
-- |
支持以下逻辑关系:包含、不包含、等于、不等于、前缀为、前缀不为、包含任意一个、不包含任意一个、等于任意一个、不等于任意一个、前缀为任意一个、前缀不为任意一个
说明:
逻辑关系为包含任意一个、不包含任意一个、等于任意一个、不等于任意一个、前缀为任意一个、前缀不为任意一个时,“内容”支持选择已创建的引用表。添加引用表、引用表管理的具体操作,请参见创建引用表对防护指标进行批量配置。 |
填写要防护的具体路径。配置说明:
|
Method |
请求的方法。 |
-- |
支持以下逻辑关系:等于、不等于 |
填写请求的方法,例如GET、POST、PUT、DELETE、PATCH等。 |
Cookie |
请求中的Cookie值。 |
自定义子字段,长度范围为1到2,048个字符。 |
支持以下逻辑关系:包含、不包含、等于、不等于、前缀为、前缀不为、后缀为、后缀不为、存在、不存在、等于任意一个、不等于任意一个、不包含任意一个
说明:
逻辑关系为等于任意一个、不等于任意一个、不包含任意一个时,“内容”支持选择已创建的引用表。添加引用表、引用表管理的具体操作,请参见创建引用表对防护指标进行批量配置。 |
填写请求的Cookie值,例如jsessionid。 |
Header |
请求头内容。 |
填写请求头内容,例如text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 |
||
Params |
URL中的查询参数,即问号(?)后的内容。 |
填写查询参数内容,例如201901150929。 |
||
Referer |
请求访问的来源。 |
-- |
填写请求的访问来源。例如:防护路径设置为“/admin/xxx”,如果用户不希望访问者从“www.test.com”访问该页面,则“Referer”对应的“内容”设置为“http://www.test.com”。 |
“已知BOT检测”是BOT检测的第一环节,它根据用户请求中携带的UA关键字,与BOT管理中的UA特征库进行比对。如果请求来自某种已知BOT(已知客户端),则按照配置的防护动作处置该请求。
基于互联网开源的UA特征情报,结合WAF网站反爬虫的UA特征库,WAF支持10类已知BOT检测。
类型 |
说明 |
---|---|
搜索引擎机器人 |
搜索引擎利用网络爬虫聚合并索引在线内容(如网页、图像及其他类型的文件),为用户提供实时信息。 |
网络扫描机器人 |
网络扫描机器人,即病毒、漏洞扫描器,旨在评估和发现网络资产中是否存在病毒或因配置错误、编程缺陷而产生的漏洞,并进行攻击。比较典型的扫描器有Nmap、Sqlmap、WPSec等。 |
网页抓取工具 |
在网络上流行的爬虫工具或服务,常用于抓取任何网页并提取内容以满足使用者的需求。如Scrapy、pyspider、Prerender等。 |
网站开发和监控服务机器人 |
部分公司利用机器人提供服务,帮助Web开发人员监控站点,以确保它们正常运行。这些机器人可以检查链接和域名的可用性、来自不同地理位置的连接和网页加载时间、DNS解析问题及其他功能。 |
商业分析和营销机器人 |
提供商业分析和营销服务的公司,利用机器人为用户评估网站内容,提供受众和竞争分析,支撑在线广告的投放和市场营销,优化网站或网页在搜索引擎结果中的排序。 |
新闻和社交媒体机器人 |
新闻和社交媒体平台允许用户在线浏览热点资讯、分享想法和互动交流,许多企业的营销策略包括在这些网站上运营页面,与消费者就产品或服务进行互动。部分公司会利用机器人从这些平台中收集数据,用于媒体趋势和产品的洞察,丰富网络体验。 |
屏幕快照机器人 |
部分公司利用机器人对外提供网站截图服务。它可以对网站、社交网络上的帖子、新闻、论坛/博客上的帖子等在线内容进行完整的长屏幕截图。 |
学术和研究机器人 |
有些大学和公司会使用机器人从各种网站收集数据,用于学术或研究目的,包括参考文献搜索、语义分析、特定类型的搜索引擎等。 |
RSS提要阅读器 |
RSS使用标准的XML网络提要格式来发布内容。部分互联网服务利用机器人从RSS提要中聚合信息。 |
网络存档器 |
部分组织会使用机器人定期从网络中爬取并存档有价值的在线信息和内容副本,例如维基百科。这些网络存档服务与搜索引擎非常相似,但是提供的数据并不是最新的,它们的目的主要是用于研究。 |
“请求特征检测”是BOT检测的第二环节,它通过识别用户请求中的HTTP请求头域特征,匹配主流的开发框架和HTTP库、仿冒已知BOT、自动化程序来进行检测。如果请求符合某类BOT特征,则按照配置的防护动作处置该请求。
类型 |
说明 |
---|---|
异常的请求头 |
请求头不包含User-Agent或User-Agent为空。 |
仿冒已知BOT |
开启后,将检测已知Bot请求的源IP是否符合其对应的合法客户端IP,防止攻击者仿冒。 |
开发框架和HTTP库 |
主流的开发框架和HTTP库,包含的详细特征如下: aiohttp、Apache-HttpClient、Apache-HttpAsyncClient、Commons-HttpClient、HttpComponents、PhantomJS、CakePHP、curl、Jetty、wget、http-kit、python-requests、Ruby、WebClient、WinHttpRequest、HttpUrlConnection、OxfordCloudService、http_request2、PEAR HTTPRequest、Python-urllib、RestSharp、Mojolicious (Perl)、PHP、libwww-perl、okhttp、HTMLParser、Go-http-client、axios、Dispatch、LibVLC、node-superagent、curb、Needle、IPWorks、lwp-trivial、Custom-AsyncHttpClient、Convertify、AsyncHttpClient、Embed PHP Library、Apache Synapse、node-fetch、electron-fetch、asynchttp、Dolphin http client、EventMachine HttpClient、httpunit、Zend_Http_Client、Python-httplib2、spray-can、http_requester、AndroidDownloadManager、bluefish、Java、git、Prerender.cloud |
自动化程序 |
具有爬虫行为特征,但目的尚不明确的自动化程序。 |
“BOT行为检测”是BOT检测的第三环节,通过AI智能防护引擎对请求进行分析和自动学习,根据设置的行为检测评分和防护动作处置BOT攻击行为。
BOT行为检测设置三个行为检测评分区间。评分区间为0~100,评分越接近0分表示请求特征越像正常请求,越接近100表示请求特征越像BOT。

- 当前,主动特征检测仅支持通过云模式-CNAME接入、独享模式接入WAF的Web流量。云模式-ELB模式暂不支持该检测。
- 主动特征检测目前仅支持Web浏览器业务。 开启前,请确认防护对象为Web浏览器客户端,或通过匹配条件将规则限制在仅允许Web浏览器访问的资源中,以免影响移动端App访问。
“主动特征检测”是BOT检测的第四环节,通过在HTML响应中注入JS代码,采集并检测Web浏览器客户端运行环境和键鼠交互行为后,从而识别工具环境和正常请求的访客,并根据不同的交互置信度和防护动作处置BOT攻击行为。
交互置信度表示一段时间内客户端产生的交互事件(例如键鼠行为)的频次。置信度越低表示客户端交互事件频率越低,该客户端越可能是一个自动化程序;反之,该客户端越可能是用户正常操作。
置信度分为以下几种:
- 不设置:不检测交互事件。例如:用户启用主动特征检测规则后,如果设置交互置信度为“不设置”,则不会对客户端的键鼠交互事件进行计数检测;如果设置交互置信度为低置信度,则拦截未产生键鼠交互事件的客户端。
- 高置信度:600s内,产生交互事件数超过10次。
- 中置信度:600s内,产生交互事件数超过5次。
- 低置信度:600s内,产生交互事件数超过0次。
如果客户端第一次访问或超过600秒没有业务访问时,则放行该请求。
约束条件
仅云模式WAF支持该防护规则。普通租户类独享模式WAF不支持该防护规则。
配置BOT管理防护规则
- 登录Web应用防火墙控制台。
- 在控制台左上角,单击
图标,选择区域或项目。
- (可选) 如果您已开通企业项目,在左侧导航栏上方,单击“按企业项目筛选”下拉框,选择您所在的企业项目。完成后,页面将为您展示该企业项目下的相关数据。
- 在左侧导航栏,单击“防护策略”。
- 单击目标策略名称,进入目标策略的防护规则配置页面。
在配置防护规则前,请确认目标防护策略已绑定防护域名,即绑定策略生效目标。一条防护策略可以适用于多个防护域名,但一个防护域名只能绑定一个防护策略。
- 单击“BOT管理”配置框,开启BOT管理防护规则。
:开启状态。
- 在“自定义防护目标”页签,单击“添加防护目标特征”,并配置目标特征匹配的“字段”、“子字段”、“逻辑”、“内容”后,单击“保存”。
开启BOT管理后,WAF默认防护域名下的所有URL资源。如果您希望为特定业务场景(例如登录、注册等场景)配置BOT管理规则进行防护,您可以为BOT管理规则自定义防护对象。
- BOT管理防护对象支持匹配如下表所示的条件。
表2 条件列表 字段
字段说明
子字段
逻辑
内容
路径
用于匹配客户端请求的资源路径,即URL中的路径部分。
--
支持以下逻辑关系:包含、不包含、等于、不等于、前缀为、前缀不为、包含任意一个、不包含任意一个、等于任意一个、不等于任意一个、前缀为任意一个、前缀不为任意一个
说明:逻辑关系为包含任意一个、不包含任意一个、等于任意一个、不等于任意一个、前缀为任意一个、前缀不为任意一个时,“内容”支持选择已创建的引用表。添加引用表、引用表管理的具体操作,请参见创建引用表对防护指标进行批量配置。
填写要防护的具体路径。配置说明:
- 不包含域名,仅支持精准匹配,即要防护的路径需要与此处填写的路径完全相等。例如,需要防护的路径为“/admin”,该规则必须填写为“/admin”。
- 路径设置为“/”时,表示防护网站所有路径。
- 配置的“路径”的“内容”不能包含特殊字符(<>*)。
Method
请求的方法。
--
支持以下逻辑关系:等于、不等于
填写请求的方法,例如GET、POST、PUT、DELETE、PATCH等。
Cookie
请求中的Cookie值。
自定义子字段,长度范围为1到2,048个字符。
支持以下逻辑关系:包含、不包含、等于、不等于、前缀为、前缀不为、后缀为、后缀不为、存在、不存在、等于任意一个、不等于任意一个、不包含任意一个
说明:逻辑关系为等于任意一个、不等于任意一个、不包含任意一个时,“内容”支持选择已创建的引用表。添加引用表、引用表管理的具体操作,请参见创建引用表对防护指标进行批量配置。
填写请求的Cookie值,例如jsessionid。
Header
请求头内容。
填写请求头内容,例如text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Params
URL中的查询参数,即问号(?)后的内容。
填写查询参数内容,例如201901150929。
Referer
请求访问的来源。
--
填写请求的访问来源。例如:防护路径设置为“/admin/xxx”,如果用户不希望访问者从“www.test.com”访问该页面,则“Referer”对应的“内容”设置为“http://www.test.com”。
- 单击“添加规则”,可增加多条防护目标特征,最多可增加10条。
- 存在多条规则时,按“与”关系生效,即同时满足所有规则后才能生效。
完成以上配置后,您可以在防护目标特征列表查看、修改、删除已配置的规则。
- BOT管理防护对象支持匹配如下表所示的条件。
- 在“已知BOT检测”、“请求特征检测”、“BOT行为检测”或“主动特征检测”页签,配置相关规则。
- 单击“已知BOT检测”模块,打开“启用状态”开关。
- 开启后,默认配置如图1所示。
- 单击防护规则左侧
图标,可查看防护规则详细描述和包含的特征。
- 根据实际业务需要,启用或关闭对应规则,配置防护动作。
防护动作说明如下:
- “仅记录”:仅记录满足特征的请求。
- “JS挑战”:识别到特征后,WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则阻断请求。
请求的Referer跟当前的Host不一致时,JS挑战不生效。
- “拦截”:识别到特征后,将直接被拦截。
- 单击“请求特征检测”模块,打开“启用状态”开关。
- 开启后,默认配置如图2所示。
- 单击防护规则左侧
图标,可查看防护规则详细描述。
- 根据实际业务需要,启用或关闭对应规则,配置防护动作。
防护动作说明如下:
- “仅记录”:仅记录满足特征的请求。
- “JS挑战”:识别到特征后,WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则阻断请求。
请求的Referer跟当前的Host不一致时,JS挑战不生效。
- “拦截”:识别到特征后,将直接被拦截。
- 单击“BOT行为检测”模块,打开“AI行为检测”开关。
开启后,默认配置如图3所示。
- 根据实际业务需要,设置三个行为检测评分区间。评分区间为0~100,评分越接近0分表示请求特征越像正常请求,越接近100表示请求特征越像BOT。
- 为每个区间配置防护动作。
防护动作说明如下:
- “放行”:放行满足特征的请求。
- “仅记录”:仅记录满足特征的请求。
- “JS挑战”:识别到特征后,WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则阻断请求。
请求的Referer跟当前的Host不一致时,JS挑战不生效。
- “拦截”:识别到特征后,将直接被拦截。

- 当前,主动特征检测仅支持通过云模式-CNAME接入、独享模式接入WAF的Web流量。云模式-ELB模式暂不支持该检测。
- 主动特征检测目前仅支持Web浏览器业务。 开启前,请确认防护对象为Web浏览器客户端,或通过匹配条件将规则限制在仅允许Web浏览器访问的资源中,以免影响移动端App访问。
- 单击“主动特征检测”模块,打开“启用状态”开关。
开启后,默认配置如图4所示。
- 根据实际业务需要,为检测设置检测“置信度”。
置信度越低表示客户端交互事件频率越低,该客户端越可能是一个自动化程序;反之,该客户端越可能是用户正常操作。主动特征检测支持如下几种置信度:
- 不设置:不检测交互事件。例如:用户启用主动特征检测规则后,如果设置交互置信度为“不设置”,则不会对客户端的键鼠交互事件进行计数检测;如果设置交互置信度为低置信度,则拦截未产生键鼠交互事件的客户端。
- 高置信度:600s内,产生交互事件数超过10次。
- 中置信度:600s内,产生交互事件数超过5次。
- 低置信度:600s内,产生交互事件数超过0次。
- 为每个置信度配置防护动作。
防护动作说明如下:
- “仅记录”:仅记录满足特征的请求。
- “拦截”:识别到特征后,将直接被拦截。
防护效果验证
假如已添加域名“www.example.com”,且已开启默认配置,并配置“防护动作”为“阻断”,可参照以下步骤验证防护效果:
- 清理浏览器缓存,在浏览器中输入防护域名,测试网站域名是否能正常访问。
- 不能正常访问,参照通过云模式-CNAME接入将网站接入WAF章节重新完成域名接入。
- 能正常访问,执行2。
- 模拟BOT行为。
- 返回Web应用防火墙控制界面,在左侧导航栏,单击“防护事件”,在“防护事件”页面,查看防护域名拦截日志。