日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

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

發(fā)布時(shí)間:2023/12/9 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网易云音乐encseckey算法php,[PHP]网易云音乐params计算及直链提取 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

[PHP]網(wǎng)易云音樂(lè)params計(jì)算及直鏈提取

在這種之前 寫過(guò)一個(gè)音樂(lè)助手 集齊了主流音樂(lè)網(wǎng)站的web解析接口 但是這些接口提供的音樂(lè)的質(zhì)量都不高 只有個(gè)別網(wǎng)站能夠提供較高音質(zhì)的音樂(lè)。在開發(fā)過(guò)程中想到了 網(wǎng)易云音樂(lè) 但是通過(guò)實(shí)際抓包操作發(fā)現(xiàn)網(wǎng)易云音樂(lè)對(duì)參數(shù)實(shí)行了AES和RSA加密 從而無(wú)法得到真實(shí)的數(shù)據(jù)。后來(lái)通過(guò)參考網(wǎng)上的文檔以及各路大神的分析 大多都提供的python的實(shí)例PHP的卻很少。

通過(guò)參考 知乎用戶 @平胸小仙女 在【如何爬網(wǎng)易云音樂(lè)的評(píng)論數(shù)?】的回答得到了一些重要信息。

通過(guò)上面的大神的完整分析 知道了其參數(shù)params和encSecKey是存在必要聯(lián)系 一個(gè)是使用AES加密(需要填充)另一個(gè)則采用了RSA對(duì)參數(shù)進(jìn)行了混淆加密。然而通過(guò)開發(fā)者的調(diào)試找到相關(guān)函數(shù) function d(d, e, f, g) 和分析后明白了這個(gè)加密 params 先使用key加密后再使用一個(gè)隨機(jī)數(shù) i 進(jìn)行加密,然而參數(shù)encSecKey則是相對(duì)于隨機(jī)數(shù)i進(jìn)行生成的 也就是說(shuō) i不變的話 encSecKey也就不會(huì)發(fā)生變化。

在此之后 參考了 Github 用戶 @darknessomi 的項(xiàng)目 MusicBOX 的雖然這個(gè)項(xiàng)目是Python寫的 但是也不太影響 經(jīng)過(guò)對(duì)代碼的閱讀后。上手開始使用PHP對(duì)算法進(jìn)行仿寫并使用chrome斷點(diǎn)實(shí)時(shí)調(diào)試。

一次加密:關(guān)于params參數(shù)的AES用到的填充。因?yàn)閭€(gè)人對(duì)加密解密這塊沒(méi)什么研究所以只能根據(jù)現(xiàn)有的Python代碼揣測(cè)。16-len(text)%16解釋為 使用16減去params原文余16。根據(jù)PHP寫出對(duì)應(yīng)的代碼。算出來(lái)后再通過(guò)chr()`傳入結(jié)果取出ASCII的對(duì)應(yīng)字符,并使用函數(shù)進(jìn)行重復(fù) ,重復(fù)次數(shù)為上面的結(jié)果。 之后再使用key對(duì)其進(jìn)行第一次加密。

二次加密:對(duì)上面加密后的結(jié)果進(jìn)行加密,key是一個(gè)隨機(jī)數(shù)但是這個(gè)隨機(jī)數(shù)只要一固定下來(lái) encSecKey 也就不用去算了 所以直接固定掉這個(gè)隨機(jī)數(shù) 不必再做 encSecKey 的計(jì)算。

對(duì)params計(jì)算完成后通過(guò)測(cè)試和chrome斷點(diǎn)計(jì)算的一模一樣 至此就算完成了。

其實(shí)在這之前有嘗試過(guò)兩次直接分析js但是由于一些因素都放棄了 。沒(méi)想到這次帶來(lái)了意外的成功 非常感謝 知乎的 @平胸小仙女 、以及 Github的@darknessomi。

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

/**

*?@name?網(wǎng)易云音樂(lè)?ID解析直鏈

*?@author?唯一丶?

*?@version?1.0

*?@date?2107-11-13

*?@Documented?根據(jù)注釋修改云音樂(lè)id即可。參考實(shí)例:?https://github.com/darknessomi/musicbox/?非常感謝。

*/

(PHP_VERSION?

function?NetEaseMusicAES($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的值為網(wǎng)易云音樂(lè)中音樂(lè)的id?其他不變

$module?=?'dcf734dbca8108164eb3b237f79b1945fbd63232c3d6b84aeef5c15ab5dad28fbc30bb3aa1ef9484b7a0ec69dcc85d4c77bda1f9d788713d730f6cee31b9d8a8302791b95822a60d51681cd9fd74043aa0d50a57707190db6ff59658034066286754a1bb0c2a3253c3fcf2dab7b4be9d33f62507c1ad3dd78561c75a69b5191f';

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

$key2?=?'wbPl0UucSzEeGlKO';

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

$url?=?'http://music.163.com/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));

總結(jié)

以上是生活随笔為你收集整理的网易云音乐encseckey算法php,[PHP]网易云音乐params计算及直链提取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。