1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > .03.27_网易云登录params encSecKey参数详解

.03.27_网易云登录params encSecKey参数详解

时间:2020-04-11 06:53:04

相关推荐

.03.27_网易云登录params encSecKey参数详解

文章目录

前言一、抓包分析二、参数解析1.加密定位2.参数分析总结

前言

最近半个月项目问题,比较忙了,没有及时更新。今天JaJa弟来水一波某音乐的加密参数params、encSecKey,望各位海涵。本文章仅供学习研究,如若侵犯到贵公司权益请联系229456906@第一时间进行删除;各位朋友切忌用于一切非法途径,否则后果自行承担!


地址:/

一、抓包分析

老规矩,打开登录框输入138****8888,1234567点击登录按钮进行抓包。

当点击登录后,出现了两个请求地址,这里的登录请求为第二条:

看响应即可一目了然,当然,他的参数如下图:

两个参数params、encSecKey,接下来寻找加密位置。

二、参数解析

1.加密定位

还是一样,直接搜索大法:

可以看到这段代码片:

// 定义bWv4z var bWv4z = window.asrsea(JSON.stringify(i3x), bsK6E(["流泪", "强"]), bsK6E(XR0x.md), bsK6E(["爱心", "女孩", "惊恐", "大笑"]));e3x.data = j3x.cr4v({params: bWv4z.encText,// 从bWv4z 中取encText赋值给paramsencSecKey: bWv4z.encSecKey // 从bWv4z 中取encSecKey 赋值给encSecKey})

so,这里两个参数params、encSecKey生成位置找到,接下来看看window.asrsea方法以及参数情况。

2.参数分析

先看参数

共4个参数,分别是JSON.stringify(i3x)、bsK6E([“流泪”, “强”])、bsK6E(XR0x.md)、bsK6E([“爱心”, “女孩”, “惊恐”, “大笑”]);

后三个参数都是由bsK6E方法生成,第一个参数将i3x转换成JSON格式传入。

经过多次抓包,后三个参数为固定值:

看看第一个参数i3x:这里可以认为i3x是一个字典(在py中),checkToken、password、phone,

还是一样通过几次抓包,checkToken固定不变,而password、phonek几次抓包下来也没有发生改变,但是既然我们是登录,那就得需要考虑业务使用的舒适度。比如我们需要更换账号及其密码,那这里就能任为他是动态参数。所以先分析一下password如何生成。

首先通过右边堆栈往下找

当找到第5个时

发现这里password:j3x.kD7w(gx6r.password)

下断点重新抓包:

基本没问题了,进入函数看看

将密码明文传入,进行一系列处理。

进入Mp5u函数看看

emmm,md5嘛,标准的。那这里password不用js代码,python还原即可:

def Md5passowrd(pwd):xyz = hashlib.md5(pwd.encode(encoding='UTF-8')).hexdigest()print('md5pwd:', xyz)return xyz

mou得问题吧?

下面看看window.asrsea方法是啥玩意,先文本搜索大法:

window.asrsea = d;而d函数就在上方。so,这里将代码拿出,差啥补啥。

部分代码片段:

执行结果:

登录代码实现:

# -- coding: utf-8 --# @Time : /3/22 11:07# @Author : JaJa# @Email: 229456906@# @sinaemail: angelesclippers@import hashlibimport execjsimport requestsfrom JaJa.DictTools import HandleToDictToolsdef Md5passowrd(pwd):xyz = hashlib.md5(pwd.encode(encoding='UTF-8')).hexdigest()print('md5pwd:', xyz)return xyzdef getCjsParams(username, md5pwd):with open('0322.js', 'r', encoding='utf-8') as f:jsCode = f.read()f.close()params = pile(jsCode).call('getData', md5pwd, username)return paramsdef logining(params):url = "/weapi/w/login/cellphone?csrf_token="hd = """content-type: application/x-www-form-urlencodedorigin: referer: /sec-ch-ua: "Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4389.90 Safari/537.36"""headers = HandleToDictTools(hd)data = {'params': params['encText'],'encSecKey': params['encSecKey']}print(data)response = requests.post(url, data=data, headers=headers)print(response)print(response.text)print(response.cookies)if __name__ == '__main__':username = ""password = ""md5pwd = Md5passowrd(password)params = getCjsParams(username, md5pwd)logining(params)

成了。今天就到这里。今天并未对daima进行详细介绍,其实js玩多了也就一个样,这里只对思路稍作说明,实现还得靠各位朋友多加练习(大佬请忽视)。


总结

总结:good good xuexi,day day up,少掉头发。


码字不易,如果本篇文章对你有帮助请动动小手点个赞8,谢谢~

合作及源码获取vx:tiebanggg【注明来意】

QQ交流群:735418202

需要源码请扫下方二维码关注微信公众号回复【网易云音乐JS】获取 :

*注:本文为原创文章,转载文章请附上本文链接!否则将追究相关责任,请自重!谢谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。