网易云api如何调用_分析网易云音乐API的经历

在做qq机器人的时候想加入点歌功能,虽然自带一个点歌插件,但是只能分享QQ音乐,所以我想着自己写一个网易云音乐的。

首先打开网易云音乐的搜索界面,F12打开开发者工具并切换到Network。

随便搜索什么,我们可以看到好几个请求,其中一个是按下搜索按钮的,一个的是在输入框输入的时候请求搜索建议的,还有的不知道什么作用。

7024e4501b4ee0e14c097aa9a2350588.png
这个是真正搜索时候的请求

我们可以看到csrf_token参数甚至都是空的(实际上应该是一个32位的数字字母组合)。

然后Post出去的数据有两个参数params和encSecKey,很显然都是加密过的,其中根据其特征,可以看出来params应该是通过AES加密的(最后有个“=”)。

为了知道加密算法,我们必须要把加密的代码找出来,F12工具选到Sources,在js代码中搜索和这两个参数,在core_xxxxxx的文件里搜到了3个适配项:

e3e5c20b83ab2fef94ce5c0ce1a4fe3f.png
这里把两个参数都找到了

如果代码很乱,可以按左下角的{}按钮整理代码。

从代码里面可以知道window.asrsea方法是真正生成了这两个参数的方法,先设个断点(左边行数点击一下)。

随便搜索一下,让它在这里断下。

注意由于所有请求都是通过这个函数加密的,我们要分清楚当前断点是在请求什么,可以通过图中Z5e变量知道请求的url。

325b8fe3dc144787182ca8400a544b43.png
url=https://music.163.com/weapi/search/suggest/web,当前在请求搜索建议项,并非我们要的

在正确的请求断下,然后在控制台获取各个参数的值

0bb8a51b012d4749bb83fd0901aa00e6.png
加密函数的参数

我们可以相信,至少第二个和第四个参数应该是固定的(因为其函数参数为常量),第一个参数为真正请求的参数,其中s项对应搜索关键字,csrf_token即为前面的csrf_token。多次改变搜索关键字尝试,可以得出除第一个外其它参数均固定不变。

F10,F11进入加密函数内部:

da9b55ce4740ac80329a2f891fdab832.png
加密函数内部(d)

加密函数看起来不复杂,首先利用a函数生成一个随机数i,然后通过不同参数(g,i)对d连续加密两次,最后把i加密一次。

这里面有两个加密算法,b很显然就是AES算法,如果想在python里面直接调用AES库,需要安装pycrypto库,安装过程可能会有曲折。

这个AES算法在python下很容易实现:

from 

AES算法要求待加密文本位数是16的倍数。和js不同的是,js的加密算法会自动对原文本进行填充,但是python不会,所以我们需要手动对文本进行填充。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值