JAVA网易云热评接口_网易云音乐热评爬虫(一): 反编译加密参数

由于网易云音乐大部分请求做了混淆加密处理,因此直接用requests请求是行不通。本文以获取歌曲全部评论为例,通过分析网易云的加密过程,来反编译构造加密参数。下面主要介绍下用Python实现加密参数的构造,并获取歌曲的全部评论。

一、了解加密过程

1.1 通过观察网络请求

发现如下接口包含所要的数据。包含该页最新评论,以及所有热评

bca2bdd26ba9ac12be875d948bdea952.png

再看它评论的参数,着实让人有点懵逼

81c3be24998ff0e948616883179266b7.png

很多人看见这一串字符,可能简单看下前后接口有没数据就放弃了。好了,不卖关子。这章分析下整个参数的加密过程,实现最终模拟请求拿到数据。

1.2 找请求参数

可以看的到,它的参数有两个,一个是params,一个是encSecKey并且都是经过加密的,我们就要分析它在js中的位置(F12打开source搜索encSecKey)

763e935fbc2fe87026c107b77f82ffe2.png

进入js内部,经过断点调试发现这里就是生成最终参数的地方

1.3 观察参数变化

模拟不同分页请求,观察变化。效果如下图:

7a3678c427f65e12738cff7ee51aa5df.png

对比参数变化,得出参数构成:

csrf_token :始终空字符串

cursor :第一页默认-1;请求下一页时该参数为上一页最后一条评论时间戳(防止数据重复)

offset :移动评论数

orderType :默认1

pageNo :页码

pageSize :默认20

rid : R_SO_4_  + 歌曲ID

threadId : R_SO_4_  + 歌曲ID

自此,我们已经知道整个参数的构成,接下来就看下网易云是如何进行参数加密的

二、分析加密函数

通过断点已经知道,下面这段js代码为我们分析的重点

var bZj0x = window.asrsea(JSON.stringify(i2x), bkk0x(["流泪", "强"]), bkk0x(YS7L.md), bkk0x(["爱心", "女孩", "惊恐", "大笑"]));

e2x.data = j2x.cr3x({

params: bZj0x.encText,

encSecKey: bZj0x.encSecKey

})

只要把bZj0x解出来就ok了,这里主要分析几个函数

2.1  JSON.stringify(i2x)

断点调制找到i2x返回内容

db0d860c95228453aeaa69232bc892dd.png

就是上文分析的整个字典参数

csrf_token: ""

cursor: "1610076350235"

offset: "40"

orderType: "1"

pageNo: "2"

pageSize: "20"

rid: "R_SO_4_1807537867"

threadId: "R_SO_4_1807537867"

2.2 bkk0x函数

bkk0x(["流泪", "强"]), bkk0x(YS7L.md), bkk0x(["爱心", "女孩", "惊恐", "大笑"]),都用到了同一个函数,这里就看下bkk0x函数内部实现是怎样的

var bkk0x = function(cJj8b) {

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值