JS脚本反爬虫的检测机制是怎么样的?
JS脚本检测流程如图1所示,其中,①和②称为“js挑战”,③称为“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次。
网站反爬虫“js挑战”的防护动作为“仅记录”,“js验证”的防护动作为人机验证(即js验证失败后,弹出验证码提示,输入正确的验证码,请求将不受访问限制)。