网易云音乐API分析 api(废弃) - zousandian/NeteaseCloudMusicApi GitHub Wiki
0. 状态
本 API 目前只使用在外链播放器上。
该 API 已经开始逐渐淘汰,目前已经无法正常解析非中英语种曲目。
1. 总览
所有交互需要指定两个参数:
key | value |
---|---|
cookie | appver=2.0.2 |
referer | http://music.163.com |
2. 搜索
POST http://music.163.com/api/search/get/
有网友指出将 get
替换为 pc
可以获取更多参数
参数
s: 关键字
limit: 返回数据条数限制
type: 搜索类型
- 1 单曲
- 10 专辑
- 100 歌手
- 1000 歌单
- 1002 用户
- 1009 电台
- NULL 推荐(实测失效)
offset: 偏移数量,用于分页
3. 专辑
GET http://music.163.com/api/album/{album_id}
参数
album_id: 专辑 ID
4. 歌单
GET http://music.163.com/api/playlist/detail?id={playlist_id}&updateTime=-1
参数
playlist_id: 歌单 ID
updateTime: 更新时间
- -1 最新
- 否则使用时间戳
5. 单曲
POST http://music.163.com/api/song/detail
参数
id: 歌曲 ID
ids: [歌曲 ID] 不要省略外面的中括号
6. URL 分析
http://[CDN].music.126.net/[encrypted]/[dfsId].mp3
参数
CDN: 可选 m1-3|p1-4,通常选取 m2 最佳,部分下架歌曲可以通过 p4 获得
dfsId: 每个歌曲的不同音质都有自己一个独立的 ID,在后续新的 API 中被更名为 fid
encrypted: 对 dfsId 的加密校验码,其算法如下
function get_encrypted($id){
$byte1[]=$this->Str2Arr('3go8&$8*3*3h0k(2)2');
$byte2[]=$this->Str2Arr($id);
$magic=$byte1[0];
$song_id=$byte2[0];
for($i=0;$i<count($song_id);$i++){
$song_id[$i]=$song_id[$i]^$magic[$i%count($magic)];
}
$result=base64_encode(md5($this->Arr2Str($song_id),1));
$result=str_replace('/','_',$result);
$result=str_replace('+','-',$result);
return $result;
}
function Str2Arr($string){
$bytes=[];
for($i=0;$i<strlen($string);$i++){
$bytes[]=ord($string[$i]);
}
return $bytes;
}
function Arr2Str($bytes){
$str='';
for($i=0;$i<count($bytes);$i++){
$str.=chr($bytes[$i]);
}
return $str;
}