某花顺滑块解析分析
1.简单记录一下一些学习过程
来源: aHR0cHM6Ly91cGFzcy4xMGpxa2EuY29tLmNuL2xvZ2lu
目的: 考虑经常性的忘记一些学习资料和文件,故在网络上记录一下。
本文仅限个人学习使用。
2.结果
返回 “msg”:“ok” 即为处理成功。
3.网页代码分析
在 登录请求的时候参数captcha_ticket: 是根据滑块请求成功后ticket参数获取得到的。
verify({"code":0,"msg":"ok","ticket":"53ac131f79765f48287b773b5abdc5b2"})
其他较长的参数应该是通过rsa 加密处理的(没有验证,查看uname 发现是rsa加密处理),
uname,passwd,passwdSalt,这里不继续深究,本文主要是针对学习滑块相关的内容。
其实本文基本不需要太多的js逆向分析,主要通过两个js 请求就可以请求到。
(1) 第一个js 请求,请求链接包含getPreHandle关键字。
这个js 文件直接请求就可以了,
rmd = (time.time()*1000)*random.random()
url = f'https://xxxxxx/getPreHandle?captcha_type=4&appid=registernew&random={rmd}&callback=PreHandle'
这里对random 这个参数根据随机值与时间戳的乘积处理,便可以直接请求。
返回结果:
PreHandle({"data":
{"src1":"getImg",
"src2":"getTicket",
"sign":"c4ca971cc1d8b73993c002d2e04d49bf",
"urlParams":"rand=851555113&time=1692284498.0641&appid=registernew&captcha_type=4&signature=c4ca971cc1d8b73993c002d2e04d49bf",
"problem":"","imgs":["4815366c6861f1c2","38ff2f08ed633f8a"],
"initx":60,"inity":75},
"code":0,
"msg":"ok"})
对其进行正则匹配和获取相关的参数值,主要包括 inity,urlParams,imgs三个参数。
(2)对第二个js文件获取
rand: 1362236470 // 第一次js urlParams请求获取
time: 1692285557.9623 // 第一次js urlParams请求获取
appid: registernew // 第一次js urlParams请求获取
captcha_type: 4 // 第一次js urlParams请求获取
signature: // 第一次js urlParams请求获取
phrase: 211;56.34705882352941;309;177.22058823529412
callback: verify // 第一次js urlParams请求获取
通过分析发现,除了phrase 参数,其他都是通过第一次请求后获取的。
(3)分析phrase
通过搜索 phrase 关键字,打断点分析。
从上图可以看出,phrase 参数主要由(x) + “;” + inity + “;” + opt.width + “;” + opt.height 构成
其中
opt.width + ";" + opt.height
// 可直接写死。
分析 inity :
直接在当前的js 文件搜索,得到,
①data.data.inity 就是第一次js 请求后返回的inity参数,opt.height 可固定,便可以计算出inity 值
② x的分析:通过分析发现,
verify 函数中的x,t 参数分别对应 滑块滑动的距离与滑动时间。t 参数请求中没有涉及,后面的日志处理有使用(忽略)
针对滑动距离,因此只需要计算目标滑块和背景图即可。
通过第一次js 请求中的imgs 中的两个值拼接即可,imgs 中的第一个值为背景图,第二个值为滑块图。如:“imgs”:[“4815366c6861f1c2”(背景图) ,“38ff2f08ed633f8a” (目标图)]
targer = res["data"]['imgs'][1]
background = res["data"]['imgs'][0]
urlParams = res['data']['urlParams']
targer_url = f'https://captcha.10jqka.com.cn/getImg?{urlParams}&iuk={targer}'
background_url = f'https://captcha.10jqka.com.cn/getImg?{urlParams}&iuk={background}'
通过两张图片便可以得到距离。
到这里分析便结束了。整理代码,使用Python 便可以直接请求了。
4.总结
(1)本文只是针对出现的滑块进行分析请求处理,并没有分析登录请求中的其他参数,这也不是本文的目的。
(2)相对来说这个也比较简单,比滑块系列②简单。后续还会继续记录其他相关的内容。