js逆向极验滑块验证码
如果反爬界要开庆功宴,极验滑块验证码一定得坐上主席。很多教程都在说模拟浏览器、鼠标轨迹来实现绕过。但一遇上大规模数据,这露水大的效率,随便一个bug就给吹散了。我下定决心利用这段时间逆向一下他的加密,也没把握一定会实现,step by step,骑驴看唱本—走着瞧罗。最后,项目纯属理论实践,谁要敢商用,劳资今黑放了你的血。
网站选取
许多网站都利用极验滑块判断流量访问是否来自正常用户。譬如国家企业信用信息公示系统[1]、极验官网[2]、微猫登录[3]、平安银行登录[4]等等等等,不一一列举
这里我们通过js逆向分析极验滑块验证码的绕过,前端维护js代码还是非常频繁的,所以从根上说没法授之以鱼,只能授之以渔啦。
登录抓包
极验滑块大部分出现在用户登录或者用户访问行为异常两个时候,由于抓包需要反复尝试,显然只能从用户登录阶段实施模拟。抓包涉及js文件,后面可能需要断点调试,使用chrome开发控制台。
反复拖动滑块后,我们可以清楚的看到,成功拖动极验滑块的动作,最终转换成了三个参数geetest_challenge
,geetest_validate
,geetest_seccode
geetest_seccode
仅在geetest_validate
参数后面增加了"|jordan"后缀。我们只需要找到geetest_challenge
,geetest_validate
如何生成即可。
geetest_challenge: 2d02475900e888485aee4db21505e29bhogeetest_validate: 6bb97b0c2fb4e66a7f51ddc462886778geetest_seccode: 6bb97b0c2fb4e66a7f51ddc462886778|jordan
在微猫登录的基础上,我又反复尝试其他若干平台,最终确认:极验滑块的确是通过这三个加密参数来用户验证成功。
寻找js文件
challenge
,validate
又是在哪里生成的呢?通过反复模拟拖动滑块动作,找到如下ajax请求
这个请求发送了challenge
,gt
,w
参数给到服务器,返回json字符串中,刚好有我们需要的validate
参数。
任务来了,challenge
,gt
,w
这三个参数如何生成的呢?我要找到生成这三个加密参数的js文件才行。
这三个参数中,challenge
最好唯一定位,试试看。
很不信,均夭折,并且毫无收获。
显然极验对js代码做了混淆处理。换句话说,想利用ctrl+f就定位到关键位置,还是洗洗睡吧。
好吧,我先洗洗睡。
明天再来会你,小样儿,就那个几个js文件,我就不信邪。
欢迎关注我的公众号“老雷的客房”,原创技术文章第一时间推送。
引用链接
[1]
国家企业信用信息公示系统: http://www.gsxt.gov.cn/index.html[2]
极验官网: http://www.geetest.com/[3]
微猫登录: https://www.weimao.com/[4]
平安银行登录: https://paicc-core.pingan.com.cn/paicc-core-web/webapi/login.view?tabs=account&appId=16666