js逆向-某天下房地产验证码

声明

本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负!

如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!

前言

目标网站:aHR0cHM6Ly9wYXNzcG9ydC5mYW5nLmNvbS8=``

接口:短信验证码登录接口

在此特别感谢k哥的文章及本人的指导。
【验证码逆向专栏】房某下登录滑块逆向分析

js逆向-某天下房地产验证码_第1张图片

流程分析

目标很明确,滑块验证码的识别,使用算法还原。
打开网站,输入手机号后点击【获取短信验证码】后就会弹验证码。
流程如下:
js逆向-某天下房地产验证码_第2张图片

js逆向-某天下房地产验证码_第3张图片

滑块划到缺口校验成功后就会发送验证码。

打开F12查看这两部分内容发包情况。

js逆向-某天下房地产验证码_第4张图片
第一个包会返回chanllengegt,这两个参数十分关键,是整个流程的重中之重。

接下来就是将滑块的图片返回回来。
js逆向-某天下房地产验证码_第5张图片

将url进行一下拼接进行请求就可以得到背景图和滑块图。需要注意的是在做距离识别时需要查看图片大小,然后进行图片的缩放或者轨迹的缩放。
js逆向-某天下房地产验证码_第6张图片
实际大小和渲染大小比例大概是1:0.9375

接下来就是滑动提交滑块的接口,分别对应三个状态。

状态码 含义
100 成功并且发送敦信
101 参数错误
102 滑动距离错误

参数分析

请求加密的地方只有后端校验滑块的接口。
js逆向-某天下房地产验证码_第7张图片

其中ca为固定参数,可以写死。start是滑块滑动的开始时间,end则对应的是结束时间,i是浏览器环境的加密,t是轨迹的加密。
gtchallenge在之前就已经获取了。

直接搜索i: 就可以定位到加密点。
js逆向-某天下房地产验证码_第8张图片
可以清楚的看到加密函数是x.compress,参数是一个自执行函数,里面有大量的环境。环境的话尽量还是补全,防止后面出现问题。

跟进函数可以将整个对象都拿下来,因为在加密中都会使用到,直接一步到位
js逆向-某天下房地产验证码_第9张图片

然后就是直接调用函数,将剩下需要的一些参数和所缺函数扣下来即可调用。
至此,参数i就已经拿下了。
在这里插入图片描述

继续看参数t

ti相邻,直接就能看到。
js逆向-某天下房地产验证码_第10张图片
老规矩将函数整体复制下来,然后自己改改就可以了。

函数的开头和结尾打上断点,关注一下入参和结果即可。

js逆向-某天下房地产验证码_第11张图片
参数e是一个转换后的轨迹数组,传入之后返回了加密轨迹。
js逆向-某天下房地产验证码_第12张图片
加密的函数逻辑

function (e) {
    for (var t = "", n = e.length / 6, r = 0; r < n; r += 1)
        t += E.charAt(f.parseInt(e.slice(6 * r, 6 * (r + 1)), 2));
    return t
}(l)

逻辑并不复杂,k哥的文章也有讲到。

接下来就是寻找轨迹转换的地方了(这个地方还是看了大佬的文章才找到的,只能说还是太菜了,哈哈)
js逆向-某天下房地产验证码_第13张图片
后知后觉才发现在哪里。
js逆向-某天下房地产验证码_第14张图片
参数e就是轨迹函数。

该站点对于轨迹校验不算太严格,本地调用成功率大概在75%还需要继续优化。

js逆向-某天下房地产验证码_第15张图片

最后

很多小伙伴关心的轨迹生成,我这里找的是github上开源的,可以参考使用。
链接:python_ghost_cursor
如果有能力手写的小伙伴也可以分享私信博主,万分感谢~

你可能感兴趣的:(js逆向,python,javascript,captcha)