网易云音乐api加密算法详解

  • 2016-12-07
  • 2,457
  • 1

网易云音乐前段时间更改了api接口,将以前的GET请求变成了POST请求,并且POST的参数是加密后的参数,具体请看图片。为了突破爬虫限制,需要破解其中的加密算法。

改进后POST请求参数如下:

用于加密的核心代码如下(代码在http://s3.music.126.net/sep/s/2/core.js?06b50101e4968eb701d6b24cd94b48d2第11173行开始):

其中入口在function d处,传入的参数为:

d是正常的请求参数
e和f是RSA中加密所需的key和modulus
g是AES加密的key

function d中可以看出加密流程,先随机生成一个16位的密钥,将正常的请求参数与g先加密一次,再与16位的密钥加密一次,此结果为POST参数的param。由于密钥是在客户端上随机产生的,所以要将随机密钥进行一次RSA加密后作为encSecKey参数POST到服务端。

所以,整体加密方式为,客户端生成16位密钥,将请求参数加密两次后,将参数加密后的结果和密钥加密后的结果一起传到服务端完成解密过程。

链接:https://www.ioiogoo.cn/2016/12/07/网易云音乐api加密算法详解/
本站所有文章除特殊说明外均为原创,转载请注明出处!

评论

  • 牧草回复

    你好,请问关于function d 中的 d 参数的参数列表是在哪里组装出来的呢?