前提条件
已添加防护网站。
约束条件
-
JS脚本反爬虫依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不支持Cookie,此功能无法使用,开启后会造成永远无法访问源站。
-
如果您的业务接入了CDN服务,请谨慎使用JS脚本反爬虫。
由于CDN缓存机制的影响,JS脚本反爬虫特性将无法达到预期效果,并且有可能造成页面访问异常。
-
网站反爬虫“js挑战”和“js验证”的防护动作默认为“仅记录”,WAF不支持手动配置“js挑战”和“js验证”的防护动作。
-
WAF的JS脚本反爬虫功能只支持get请求,不支持post请求。
JS脚本反爬虫检测机制
开启JS脚本反爬虫后,当客户端发送请求时,WAF会返回一段JavaScript代码到客户端。
- 如果客户端是正常浏览器访问,就可以触发这段JavaScript代码再发送一次请求到WAF,即WAF完成js验证,并将该请求转发给源站。
- 如果客户端是爬虫访问,就无法触发这段JavaScript代码再发送一次请求到WAF,即WAF无法完成js验证。
- 如果客户端爬虫伪造了WAF的认证请求,发送到WAF时,WAF将拦截该请求,js验证失败。
通过统计“js挑战”和“js验证”,就可以汇总出JS脚本反爬虫防御的请求次数。
说明“js挑战”和“js验证”的防护动作为仅记录,WAF不支持配置“js挑战”和“js验证”的防护动作。
操作步骤
-
登录管理控制台。
-
单击管理控制台右上角的,选择区域。
-
单击页面左上方的,选择“安全 > Web应用防火墙(独享版)”。
-
在左侧导航树中,选择“防护策略”,进入“防护策略”页面。
-
单击目标策略名称,进入目标策略的防护配置页面。
-
在“网站反爬虫”配置框中,用户可根据自己的需要更改网站反爬虫的“状态”,单击“BOT设置”,进入网站反爬虫规则配置页面。
-
选择“特征反爬虫”页签,根据您的业务场景,开启合适的防护功能。
特征反爬虫规则提供了两种防护动作:
-
拦截:发现攻击行为后立即阻断并记录。
注意开启拦截后,可能会有以下影响:
拦截搜索引擎请求,可能影响网站的搜索引擎优化。
拦截脚本工具,可能会影响部分APP访问(部分APP的User-Agent未做修改,会匹配脚本工具类爬虫规则)。
-
仅记录:默认防护动作,发现攻击行为后只记录不阻断攻击。
默认开启“扫描器”防护检测,用户可根据业务需要,配置防护动作并开启其他需要防护的检测类型。
特征反爬虫检测项说明:
检测项 说明 功能说明 搜索引擎 搜索引擎执行页面内容爬取任务,如Googlebot、Baiduspider。 开启后,WAF将检测并阻断搜索引擎爬虫。
说明如果不开启“搜索引擎”,WAF针对谷歌和百度爬虫不会拦截。
扫描器 执行漏洞扫描、病毒扫描等Web扫描任务,如OpenVAS、Nmap。 开启后,WAF将检测并阻断扫描器爬虫。 脚本工具 用于执行自动化任务、程序脚本等,如httpclient、okhttp、python程序等。 开启后,WAF将检测并阻断执行自动化任务、程序脚本等。 说明如果您的应用程序中使用了httpclient、okhttp、python程序等脚本工具,建议您关闭“脚本工具”,否则,WAF会将使用了httpclient、okhttp、python程序等脚本工具当成恶意爬虫,拦截该应用程序。
其他爬虫 各类用途的爬虫程序,如站点监控、访问代理、网页分析等。 说明“访问代理”是指当网站接入WAF后,为避免爬虫被WAF拦截,爬虫者使用大量IP代理实现爬虫的一种技术手段。
开启后,WAF将检测并阻断各类用途的爬虫程序。 -
-
选择“JS脚本反爬虫”页签,用户可根据业务需求更改JS脚本反爬虫的“状态”。
默认关闭JS脚本反爬虫,单击,在弹出的“警告”提示框中,单击“确定”,开启JS脚本反爬虫。
说明JS脚本反爬虫依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不支持Cookie,此功能无法使用。
如果您的业务接入了CDN服务,请谨慎使用JS脚本反爬虫。由于CDN缓存机制的影响,JS脚本反爬虫特性将无法达到预期效果,并且有可能造成页面访问异常。
-
根据业务配置JS脚本反爬虫规则。
JS脚本反爬虫规则提供了“防护所有请求”和“防护指定请求”两种防护动作。
-
除了指定路径以外,防护其他所有路径:“防护模式”选择“防护所有请求”,单击“添加排除请求规则”,配置防护路径后,单击“确认”。
-
只防护指定路径时:“防护模式”选择“防护指定请求”,单击“添加请求规则”,配置防护路径后,单击“确认”。
JS脚本反爬虫防护规则参数说明:
参数 参数说明 示例 规则名称 自定义规则名称。 wafjs 路径 设置JS脚本反爬虫的URL链接中的路径(不包含域名)。
URL用来定义网页的地址。基本的URL格式如下:
协议名://域名或IP地址[:端口号]/[路径名/…/文件名]。
例如,URL为“http://www.example.com/admin”,则“路径”设置为“/admin”。说明该路径不支持正则。
路径里不能含有连续的多条斜线的配置,如“///admin”,WAF引擎会将“///”转为“/”。
/admin 逻辑 在“逻辑”下拉列表中选择需要的逻辑关系。 包含 规则描述 规则备注信息。 - -
相关操作
- 规则添加成功后,默认的“规则状态”为“已开启”,若您暂时不想使该规则生效,可在目标规则所在行的“操作”列,单击“关闭”。
- 若需要修改添加的JS脚本反爬虫规则,可单击待修改的路径规则所在行的“修改”,修改该规则。
- 若需要删除添加的JS脚本反爬虫规则时,可单击待删除的路径规则所在行的“删除”,删除该规则。
配置示例-仅记录脚本工具爬虫
假如防护域名“www.example.com”已接入WAF,您可以参照以下操作步骤验证反爬虫防护效果。
-
执行JS脚本工具,爬取网页内容。
-
在“特征反爬虫”页签,开启“脚本工具”,“防护动作”设置为“仅记录”(WAF检测为攻击行为后,只记录不阻断)。
-
开启网站反爬虫。
-
在左侧导航树中,单击“防护事件”,进入“防护事件”页面,您可以查看该防护事件。
配置示例-搜索引擎
放行百度或者谷歌的搜索引擎,同时拦截百度的POST请求。
-
参照配置网站反爬虫防护规则将“搜索引擎”设置为放行,即将“搜索引擎”的“状态”设置为。
-
参照配置精准访问防护规则定制化防护策略配置如下图的规则。