文章仅供参考,禁止用于非法活动
前言
目标网站:aHR0cHM6Ly9tbXMucGluZHVvZHVvLmNvbS9sb2dpbi8=
一、触发HK
![](https://i-blog.csdnimg.cn/blog_migrate/60ff277e85a069fade8002ce83cd49cf.png)
二、参数分析
1.验证图形验证码接口
头部加密参数;Anti-Content,其实就是一个webpack,so easy.本文章主要讲解HK验证。
先看看请求载荷:password和riskSign都是RSA加密
riskSign: 'username=账号&password=密码&ts=时间戳'
然后请求下这个接口,拿到了verifyAuthToken
2.获取验证码图片接口,新出现了captcha_collect参数。含鼠标移动轨迹,可以写空。
captcha_collect参数加密位置,,是AES加密,y,w分别是KEY,IV
U方法中传入参数e,e是有api/phantom/vc_pre_ck_b 接口返回的 salt: "b201376fe"值
//kye iv生成位置
U = function(e) {
var t = {
aes_key: W,
aes_iv: I
};
返回图片的信息,然而返回的并不是图片的base64编码,是经过加密的
图片解密在这个位置,接出来后就是base64编码的信息
#背景图片保存
image_bytes = base64.b64decode(bg)
bg_img = Image.open(io.BytesIO(image_bytes))
bg_img.save("bg.png" )
三、提交验证接口,captcha_collect是需要的轨迹加密信息
verify_code这个东西很神秘,是换算后的缺口位置
captcha_collect加密位置l(d(JSON.stringify(t)), y, w), d函数是gzip加密算法可以使用python实现,入口参数t是这么些东西,包含轨迹信息,浏览器指纹等
verify_code :这个东西很神秘,是换算后的缺口位置
参数都搞定后,最后发送请求看看,基本上成功率还是挺高的
总结
最后总结下,这个轨迹是不校验的,主要是缺口位置,直接opencv模板匹配出来的是不对的,需要经过一定换算,然后这个verify_code,跟轨迹里的最终位置也是不同的,也需要一点的换算。