
# JS脚本反爬虫的检测机制是怎么样的？
JS脚本检测流程如[图1]所示，其中，①和②称为"js挑战"，③称为"js验证"。
图1JS脚本检测流程说明   
![](https://support.huaweicloud.com/waf_faq/zh-cn_image_0000002383747496.png "点击放大")
开启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次。
图2JS脚本反爬虫防护数据   
![](https://support.huaweicloud.com/waf_faq/zh-cn_image_0000002383587644.png "点击放大")
![](https://support.huaweicloud.com/waf_faq/public_sys-resources/note_3.0-zh-cn.png)
网站反爬虫"JS挑战"的防护动作为"仅记录"，"JS验证"的防护动作为人机验证（即JS验证失败后，弹出验证码提示，输入正确的验证码，请求将不受访问限制）。
