搞过验证码的童鞋都比较清楚,某里系验证码一直是国内天花板存在,本次就带大家来研究下这个技术。
注:仅是分享,不做商业用途
| 抓包分析
手动拉动验证码进行抓包分析,可以发现在analyze.jsonp 这个接口里面有一个参数 n 里面标有227。咱们就称它为某里系227版本吧
注:对于这个版本的验证码,解决n参数即可正常过码,返回0既是成功
| 断点调试
由于是验证码操作,找到浏览器事件监听器断点->鼠标,选中mousedown鼠标事件,触发验证码的时候给他断住,从入口开始分析
进去代码里面,会看到断在这个位置,且里面有一个mousemove事件
定位到鼠标定位,断点断住后滑动滑块,尝试后发现验证通过时会从S方法走到I方法然后最终走到 m
方法
从这里进入M方法进行跟踪,可以发现有验证码发包等参数,大家可以对比analyze.jsonp 这个接口,所以可以断定参数就是这里生成的?o.__fy.getFYToken(o.__fy_options)。
继续跟进这个方法、可以走到?this.fyObj.getFYToken(a)
这个方法,继续从这里跟进去可以走到return i(40, e)
这个方法,最终的结果就是这里返回的,也就是fireyejs文件。
注:他这里就是调用I方法,经过一些大的循环生成对应的值。如果想扣算法的情况下,建议先使用AST还原,否则准备大板凳扣到秃头吧。
到此整个代码分析就算完毕了。
这里给大家准备一个还原之后的代码,由原本的2万多行变成1千多行代码,有需要的关注我或者加V-》tl210329 进行领取。