WAF网站反爬虫_防BOT

WAF是什么

Web应用防火墙(Web Application Firewall,WAF),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。


WAF怎么防爬虫

华为云WAF支持动态分析网站业务模型,结合人机识别技术和数据风控手段,精准识别700+种爬虫行为。

特征反爬虫

自定义扫描器与爬虫规则,用于阻断网页爬取行为,添加定制的恶意爬虫、扫描器特征,使爬虫防护更精准。

JS脚本反爬虫

通过自定义规则识别并阻断JS脚本爬虫行为。

通过配置WAF反爬虫防护策略轻松阻止爬虫攻击

您可以通过配置网站反爬虫防护规则,防护搜索引擎、扫描器、脚本工具、其它爬虫等爬虫,以及自定义JS脚本反爬虫防护规则。

网络爬虫为网络信息收集与查询提供了极大的便利,但同时也对网络安全产生以下负面影响:

● 网络爬虫会根据特定策略尽可能多的“爬过”网站中的高价值信息,占用服务器带宽,增加服务器的负载

● 恶意用户利用网络爬虫对Web服务发动DoS攻击,可能使Web服务资源耗尽而不能提供正常服务

● 恶意用户利用网络爬虫抓取各种敏感信息,造成网站的核心数据被窃取,损害企业经济利益

Web应用防火墙可以通过Robot检测(识别User-Agent)、网站反爬虫(检查浏览器合法性)CC攻击防护(限制访问频率)三个反爬虫策略,全方位帮您解决业务网站遭受的爬虫问题。

前提条件

域名已成功接入WAF。

开启Robot检测(识别User-Agent)

开启Robot检测后,WAF可以检测和拦截恶意爬虫、扫描器、网马等威胁。

1.登录管理控制台

2.单击管理控制台左上角的,选择区域或项目。

3.单击页面左上方的,选择“安全与合规 > Web应用防火墙 WAF”。

4.在左侧导航树中,选择“网站设置”,进入“网站设置”页面。

5.在目标域名所在行的“防护策略”栏中,单击“已开启N项防护”,进入“防护策略”页面。

6.确认“Web基础防护”“状态”

7.单击“高级设置”,在“防护配置”页面,开启“常规检测”“Webshell检测”开关。

8.在“网站反爬虫”配置框中,用户可根据自己的需要参照图2更改网站反爬虫的“状态”,单击“BOT设置”,进入网站反爬虫规则配置页面。

9.在“特征反爬虫”页面,根据您的业务场景,开启合适的防护功能。

图3 特征反爬虫防护

当WAF检测到恶意爬虫、扫描器等对网站进行爬取时,将立即拦截并记录该事件,您可以在“防护事件”页面查看爬虫防护日志。

开启网站反爬虫(检查浏览器合法性)

开启网站反爬虫,WAF可以动态分析网站业务模型,结合人机识别技术和数据风控手段,精准识别爬虫行为。

1.登录管理控制台

2.单击管理控制台左上角的,选择区域或项目。

3.单击页面左上方的,选择“安全与合规 > Web应用防火墙 WAF”。

4.在左侧导航树中,选择“网站设置”,进入“网站设置”页面。

5.在目标域名所在行的“防护策略”栏中,单击“已开启N项防护”,进入“防护策略”页面。

6.在“网站反爬虫”配置框中,用户可根据自己的需要参照图4更改网站反爬虫的“状态”,单击“BOT设置”,进入网站反爬虫规则配置页面。

7.选择“JS脚本反爬虫”页签,用户可根据业务需求更改JS脚本反爬虫的“状态”“防护模式”

默认关闭JS脚本反爬虫,单击,在弹出的“警告”提示框中,单击“确定”,开启JS脚本反爬虫

须知:

● JS脚本反爬虫依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不支持Cookie,此功能无法使用。

如果您的业务接入了CDN服务,请谨慎使用JS脚本反爬虫。

● 由于CDN缓存机制的影响,JS脚本反爬虫特性将无法达到预期效果,并且有可能造成页面访问异常。

8.根据业务配置JS脚本反爬虫规则,相关参数说明如表1所示。

JS脚本反爬虫规则提供了“防护所有请求”“防护指定请求”两种防护动作。

● 除了指定请求规则以外,防护其他所有请求

“防护模式”选择“防护所有请求”,单击“添加排除请求规则”,配置排除请求规则后,单击“确认”。

● 只防护指定请求时

“防护模式”选择“防护指定请求”,单击“添加请求规则”,配置请求规则后,单击“确认”。

表1 JS脚本反爬虫参数说明

参数
参数说明
示例

规则名称

自定义规则名称。

waf

规则描述

可选参数,设置该规则的备注信息。

-

生效时间

立即生效

立即生效

条件列表

条件设置参数说明如下:

• 字段:在下拉列表中选择需要防护的字段,当前仅支持“路径”、“User Agent”。

• 子字段

• 逻辑:在“逻辑”下拉列表中选择需要的逻辑关系。

说明:

选择“包含任意一个”、“不包含所有”、“等于任意一个”、“不等于所有”、“前缀为任意一个”、“前缀不为所有”、“后缀为任意一个”或者“后缀不为所有”时,“内容”需要选择引用表名称,创建引用表的详细操作请参见创建引用表

• 内容:输入或者选择条件匹配的内容。

“路径”包含“/admin/”

优先级

设置该条件规则检测的顺序值。如果您设置了多条规则,则多条规则间有先后匹配顺序,即访问请求将根据您设定的优先级依次进行匹配,优先级较小的规则优先匹配。

5

配置CC攻击防护(限制访问频率)

开启CC攻击防护,限制单个IP/Cookie/Referer访问者对您的网站上特定路径(URL)的访问频率,缓解CC攻击对业务的影响。

1.登录管理控制台

2.单击管理控制台左上角的,选择区域或项目。

3.单击页面左上方的,选择“安全与合规 > Web应用防火墙 WAF”。

4.在左侧导航树中,选择“网站设置”,进入“网站设置”页面。

5.在目标域名所在行的“防护策略”栏中,单击“已开启N项防护”,进入“防护策略”页面,确认“CC攻击防护”的“状态”为“开启”

6.在“CC防护”规则配置页面左上角,单击“添加规则”。以IP限速和人机验证为例,添加IP限速规则,如图8所示。

图8 IP限速

设置成功后,当用户访问超过限制后需要输入验证码才能继续访问。

开启该防护后,非浏览器的访问将不能获取业务页面。

WAF-网站反爬虫常见问题解答

CDN怎么用常见问题解答

  • 开启JS脚本反爬虫后,为什么客户端请求获取页面失败?

    开启JS脚本反爬虫后,当客户端发送请求时,WAF会返回一段JavaScript代码到客户端。如果客户端是正常浏览器访问,就可以触发这段JavaScript代码再发送一次请求到WAF,即WAF完成JS验证,并将该请求转发给源站,如图1所示。

    图1 JS脚本反爬虫正常检测流程

    • 如果客户端是爬虫访问,就无法触发这段JavaScript代码再发送一次请求到WAF,即WAF无法完成js验证。

    • 如果客户端爬虫伪造了WAF的认证请求,发送到WAF时,WAF将拦截该请求,js验证失败

    须知:

    • 开启JS脚本反爬虫,要求客户端浏览器具有JavaScript的解析能力,并开启了Cookie。

    • 如果客户端不满足以上要求,则只能完成①和②,此时客户端请求将不能成功获取到页面。

    请您排查业务侧是否存在这种场景。如果您的网站有非浏览器访问的场景,建议您关闭JS脚本反爬虫功能。

  • 开启网站反爬虫中的“其他爬虫”会影响网页的浏览速度吗?

    在配置网站反爬虫的“特征反爬虫”时,如果开启了“其他爬虫”,WAF将对各类用途的爬虫程序(例如,站点监控、访问代理、网页分析)进行检测。开启该防护,不影响用户正常访问网页,也不影响用户访问网页的浏览速度。

    图1 开启“其他爬虫”

    有关配置网站反爬虫的详细操作,请参见配置网站反爬虫规则

  • JS脚本反爬虫的检测机制是怎么样的?

    JS脚本检测流程如图1所示,其中,①和②称为“js挑战”,③称为“js验证”。

    图1 JS脚本检测流程说明

    开启JS脚本反爬虫后,当客户端发送请求时,WAF会返回一段JavaScript代码到客户端。

    • 如果客户端是正常浏览器访问,就可以触发这段JavaScript代码再发送一次请求到WAF,即WAF完成js验证,并将该请求转发给源站。

    • 如果客户端是爬虫访问,就无法触发这段JavaScript代码再发送一次请求到WAF,即WAF无法完成js验证。

    • 如果客户端爬虫伪造了WAF的认证请求,发送到WAF时,WAF将拦截该请求,js验证失败。

    通过统计“js挑战”和“js验证”,就可以汇总出JS脚本反爬虫防御的请求次数。例如,图2中JS脚本反爬虫共记录了18次事件,其中,“js挑战”(WAF返回JS代码)为16次,“js验证”(WAF完成JS验证)为2次,“其他”(即爬虫伪造WAF认证请求)为0次。

    图2 JS脚本反爬虫防护数据

    须知:“js挑战”和“js验证”的防护动作为仅记录,WAF不支持配置“js挑战”和“js验证”的防护动作。