网易云音乐encseckey算法php,[PHP]网易云音乐params计算及直链提取

[PHP]网易云音乐params计算及直链提取

在这种之前 写过一个音乐助手 集齐了主流音乐网站的web解析接口 但是这些接口提供的音乐的质量都不高 只有个别网站能够提供较高音质的音乐。在开发过程中想到了 网易云音乐 但是通过实际抓包操作发现网易云音乐对参数实行了AES和RSA加密 从而无法得到真实的数据。后来通过参考网上的文档以及各路大神的分析 大多都提供的python的实例PHP的却很少。

通过参考 知乎用户 @平胸小仙女 在【如何爬网易云音乐的评论数?】的回答得到了一些重要信息。

通过上面的大神的完整分析 知道了其参数params和encSecKey是存在必要联系 一个是使用AES加密(需要填充)另一个则采用了RSA对参数进行了混淆加密。然而通过开发者的调试找到相关函数 function d(d, e, f, g) 和分析后明白了这个加密 params 先使用key加密后再使用一个随机数 i 进行加密,然而参数encSecKey则是相对于随机数i进行生成的 也就是说 i不变的话 encSecKey也就不会发生变化。

在此之后 参考了 Github 用户 @darknessomi 的项目 MusicBOX 的虽然这个项目是Python写的 但是也不太影响 经过对代码的阅读后。上手开始使用PHP对算法进行仿写并使用chrome断点实时调试。

一次加密:关于params参数的AES用到的填充。因为个人对加密解密这块没什么研究所以只能根据现有的Python代码揣测。16-len(text)%16解释为 使用16减去params原文余16。根据PHP写出对应的代码。算出来后再通过chr()`传入结果取出ASCII的对应字符,并使用函数进行重复 ,重复次数为上面的结果。 之后再使用key对其进行第一次加密。

二次加密:对上面加密后的结果进行加密,key是一个随机数但是这个随机数只要一固定下来 encSecKey 也就不用去算了 所以直接固定掉这个随机数 不必再做 e

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值