提示:文章仅供参考,禁止用于非法途径
前言
目标网站:aHR0cHM6Ly9wYXNzcG9ydC5tZWl0dWFuLmNvbS9hY2NvdW50L3VuaXRpdmVsb2dpbg==
页面分析
接口流程
1.https://passport.meituan.com/account/unitivelogin
主页接口:需获取下面的参数,都在第一个链接返回的源码里
csrf
uuid
token_id
continues
2.https://passport.meituan.com/account/unitivelogin?risk_partner=0……
登入接口,分别有两加密参数password、h5Fingerprint
3.https://verify.meituan.com/v2/ext_api/page_data
验证码获取的接口,拿这些参数,后面会用到
verifyMethodVersion = json.loads(res['data']['verifyMethodVersion']) # d 就是 slide.js的版本
slider = json.loads(verifyMethodVersion['slider'])
yodaVersion = json.loads(res['data']['yodaVersion'])
timestamp = res['data']['timestamp']
sign = res['data']['sign']
ses = res['data']['session']
requestCode = res['data']['request_code']
4.https://verify.meituan.com/v2/ext_api/login/verify
验证接口,也有两加密参数behavior、_token,还有两个动态的参数v_c、3eac9809,还有请求头里的Authencation
第一步要用到的参数在这
直接正则匹配过来即可
接着是password,这个是rsa加密的,找到pbk即可
然后是 h5Fingerprint,要扣下代码了,下断点找入口
要的js都在这个default文件里
扣完几千行吧,也可以全复制,加密用到的环境参数可以写死
返回后的这几个东西都会用到,特别是这个时间戳,后面加密都会校验这玩意
验证这块先看 behavior 参数吧,断点位置也好找
传了三个玩意,滑动轨迹,requestCode,false
看看轨迹数组,其中这个时间戳还有point校验比较严格
加密函数bH,这些就自己扣吧,可以先反混淆下,方便看
里面会有个window.f 是用sign和session解密出来的,需要注意,会用到
接着看_token
加密方式跟behebar一样 ,不用的是用到的轨迹跟一些浏览器参数
这里看看fT跟mT吧,长度固定是60的,而且这两组有转换的管系,并且跟bebavor里的point也有关系,总之轨迹就是比较复杂
最后就是请求头里的Authencation了,这里面久有用到之前说的时间戳了,然后MD5下拼接的字符串
这两动态的参数忘记说了,是在js里取的,反混淆后比较方便找
正则匹配返回的js就有了
总结
最后看下成果吧,基本是全过的