1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 网易云音乐encseckey算法php [PHP]网易云音乐params计算及直链提取

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

时间:2019-09-23 01:30:29

相关推荐

网易云音乐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 也就不用去算了 所以直接固定掉这个随机数 不必再做 encSecKey 的计算。

对params计算完成后通过测试和chrome断点计算的一模一样 至此就算完成了。

其实在这之前有尝试过两次直接分析js但是由于一些因素都放弃了 。没想到这次带来了意外的成功 非常感谢 知乎的 @平胸小仙女 、以及 Github的@darknessomi。

Notes: 这些代码可能不能在PHP 5.4.0以下的版本中工作。

/**

*@name网易云音乐ID解析直链

*@author唯一丶

*@version1.0

*@date2107-11-13

*@Documented根据注释修改云音乐id即可。参考实例:/darknessomi/musicbox/非常感谢。

*/

(PHP_VERSION

functionNetEaseMusicAES($text,$key){

$iv='0102030405060708';

$text=trim($text);

$pad=16-strlen($text)%16;

$chr=chr($pad);

$text=$text.str_repeat($chr,$pad);

$enStr=mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$text,MCRYPT_MODE_CBC,$iv);

$enStr=base64_encode($enStr);

return$enStr;

}

$key='0CoJUm6Qyw8W8jud';

$text='{"ids":"[5280317]","br":128000,"csrf_token":""}';//ids的值为网易云音乐中音乐的id其他不变

$module='dcf734dbca8108164eb3b237f79b1945fbd63232c3d6b84aeef5c15ab5dad28fbc30bb3aa1ef9484b7a0ec69dcc85d4c77bda1f9d788713d730f6cee31b9d8a8302791b95822a60d51681cd9fd74043aa0d50a57707190db6ff59658034066286754a1bb0c2a3253c3fcf2dab7b4be9d33f62507c1ad3dd78561c75a69b5191f';

$enStr=NetEaseMusicAES($text,$key);

$key2='wbPl0UucSzEeGlKO';

$params=NetEaseMusicAES($enStr,$key2);

$url='/weapi/song/enhance/player/url?csrf_token=';

$data['params']=$params;

$data['encSecKey']=$module;

$data=http_build_query($data);

function_Curl($url,$post_data){

$ch=curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT_POST,1);

curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);

$result=curl_exec($ch);

curl_close($ch);

return$result;

}

var_dump(_Curl($url,$data));

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