js逆向极验滑块验证码
如果反爬界要开庆功宴,极验滑块验证码一定得坐上主席。很多教程都在说模拟浏览器、鼠标轨迹来实现绕过。但一遇上大规模数据,这露水大的效率,随便一个bug就给吹散了。我下定决心利用这段时间js逆向逆向他的加密,也没把握一定会实现,step by step,骑驴看唱本—走着瞧罗。最后,项目纯属理论实践,谁要敢商用,劳资今黑放了你的血。
js代码再寻找
无法实施精准打击已成事实,只能手工爆破一一排除。
F12
打开chrome控制台,切换到source面板。主浏览器模拟登录的同时,在source文件中寻找可疑文件。
这里我选择鹏城某银行登录,fine,找到了。
一旦改变网站,source文件结构也更着改变,那如何判可疑呢?两个思路:
•混淆加密的js已经和你混过脸熟了,代码文件名千变万化,但加密逻辑长的那叫一个像啊。•非要摸到点路径规律,xxx.com/static/js/xx.js
•别问,多动手。不信,往下瞧。
反混淆js代码
前端写js特有意思,打个比方,他干的活很像咋们高中考试打小抄。
考试分数要高,考前小抄得好。
什么才叫好呢?考试时自己瞧的哈哈笑,被抓时老师丈二和尚摸不着头脑,这是好。
我们瞧瞧极验同学打的小抄,看他好不好。
这哪是好,这是妙啊。一眼下去,至少两个妙:
•黄色部分,代码Unicode编码过, 这可能是ctrl+F搞不定的元凶。•橙色部分,大量类似rkjC(5)、USiw(149)、TiQg(94)代码,老师视力再好也看不清小抄到底写了个啥。
打开Source控制面板,右键单击js代码,保存本地。
下面一步一步解决混淆问题。
unicode解码
全选代码,复制到unicode在线解码网页[1],复制明文,另存本地,完成unicode解码。
代码已经部分开始人模人样了。小惊喜,challenge
也露出了马甲。
替换加密字符串
想要知道小抄怎么打,最方便快捷的方法就是看极验同学怎么抄。
回到chrome 控制台,在js代码中打上断点调试,一探究竟。
一个小窍门,我们本地折腾js代码,调试却要在chrome控制台中完成。我们在本地如果发现了关键代码,需要记住他的行号,回到控制台,运用ctrl+g
快捷键跳转到该行即可。
我在6357行打上断点,调试收获满满
•UtTs(568)解密后为字符串"challenge",说明UtTs可能是一个明文数组。•去console调试台,顺藤摸瓜,追溯UtFs到TFBa,进一步确认猜想。
for (i=0;i<10;i++){console.log("UtTs("+i+")->",TFBa(i))}out:UtTs(0)-> stringUtTs(1)-> documentUtTs(2)-> setTimeoutUtTs(3)-> canvasUtTs(4)-> getContextUtTs(5)-> wPlNUtTs(6)-> rgobUtTs(7)-> getTimeUtTs(8)-> prototypeUtTs(9)-> status:
下一步任务明确,抠出生成明文数组的js代码,然后将密文一一替换掉。
晚上论文答辩,明天续更。
欢迎关注我的公众号“老雷的客房”,原创技术文章第一时间推送。
引用链接
[1]
unicode在线解码网页: https://www.css-js.com/tools/unicode.html