Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

网易云音乐API

ChienHo edited this page Oct 29, 2018 · 1 revision

网易云音乐API

本文档仅用于个人研究,请勿用于商业或违法用途。

eapi

eapi是网易云音乐客户端新的API接口,加密算法比较简单,下面以OSX客户端为例。

加密过程

  1. 组装当前接口的参数params,并使用json序列化为字符串,请求后端的接口path
  2. 计算sign。sign = md5("nobody" + path + "use" + params + "md5forencrypt")
  3. AES加密请求参数。AES模式为ECB,原文为path + "-36cd479b6b5-" + params + "-36cd479b6b5-" + sign,密钥为e82ckenh8dichen8
  4. 发起请求,请求URL为"https://music.163.com/" + gateway_path,body为params=AES加密结果,Content-Type: application/x-www-form-urlencoded

具体实现如下:

def _eapi_encrypt(path, params):
 """
 eapi接口参数加密
 :param bytes path: 请求的路径
 :param params: 请求参数
 :return str: 加密结果
 """
 params = json.dumps(params, separators=(',', ':')).encode()
 sign_src = b'nobody' + path + b'use' + params + b'md5forencrypt'
 m = hashlib.md5()
 m.update(sign_src)
 sign = m.hexdigest()
 aes_src = path + b'-36cd479b6b5-' + params + b'-36cd479b6b5-' + sign.encode()
 pad = 16 - len(aes_src) % 16
 aes_src = aes_src + bytearray([pad] * pad)
 crypt = AES.new(b'e82ckenh8dichen8', AES.MODE_ECB)
 ret = crypt.encrypt(aes_src)
 return b2a_hex(ret).upper()

搜索歌曲

  • path: /api/cloudsearch/pc
  • params:
    • offset: 0
    • limit: 100
    • hlposttag:
    • hlpretag:
    • total: true
    • type: 1
      • type=1,歌曲
      • type=1006,歌词
      • type=1009,主播电台
    • s: 周杰伦

获取歌曲播放地址

  • path: /api/song/enhance/player/url
  • params:
    • ids: [10001, 10002] #歌曲ID列表
    • br: 128000 #码率
      • br=128000
      • br=320000

weapi

weapi是网易云Web端新的API接口。

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /