网易云音乐API分析


1. 总览

本文档是通过对网易云音乐Android客户端(1.5.2)的部分功能进行分析得出的

在所有的交互中,均需要在cookie中添加这对键值appver=1.5.2;

(Update 2014-07-13) cookie中添加appver=2.0.2 referer设置为http://music.163.com

2. 搜索

POST http://music.163.com/api/search/get/

参数

s: 搜索词

limit: 返回数量

sub: 意义不明(非必须参数);取值:false

type: 搜索类型;取值意义

  • 1 单曲

  • 10 专辑

  • 100 歌手

  • 1000 歌单

  • 1002 用户

offset: 偏移数量,用于分页

MUSIC_U: 意义不明(非必须参数)

示例

curl -d "s=玫瑰色的你&limit=20&type=1&offset=0" -b "appver=1.5.2;" http://music.163.com/api/search/get/

3. 获取歌手专辑列表

GET http://music.163.com/api/artist/albums/[artist_id]/

其中artist_id用歌手id替换

参数

offset: 偏移数量,用于分页

limit: 返回数量

示例

curl -b "appver=1.5.2;" "http://music.163.com/api/artist/albums/10557?offset=0&limit=3"

4. 获取专辑音乐列表

GET http://music.163.com/api/album/[album_id]/

其中album_id用专辑id替换

示例

curl -b "appver=1.5.2;" "http://music.163.com/api/album/32311/"

5. 下载音乐文件

GET http://m1.music.126.net/[encrypted_song_id]/[song_dfsId].mp3

其中song_dfsId为歌曲id,同一歌曲不同比特率有不同的id,见上结果。encrypted_song_idsong_dfsId加密后的字符串。

歌曲id加密代码

import md5def encrypted_id(id):
    byte1 = bytearray('3go8&$8*3*3h0k(2)2')
    byte2 = bytearray(id)
    byte1_len = len(byte1)    for i in xrange(len(byte2)):
        byte2[i] = byte2[i]^byte1[i%byte1_len]
    m = md5.new()
    m.update(byte2)
    result = m.digest().encode('base64')[:-1]
    result = result.replace('/', '_')
    result = result.replace('+', '-')    return result


Last Article

Comment 评论



Share 分享

New Users 最新加入

  • :)

  • Cheng Dan

  • 13111111111

New comments 最新评论

test123: aasdas Details Apr 13 16:39
admin: Thanks! Details Apr 09 11:46
admin: Google map api Details Apr 09 11:46
lqj12: cooooooooool Details Apr 08 21:34
Yunhan Huang: 这个功能是如何实现的? Details Apr 08 13:23