网易云音乐API - picone/MusicUnionSearch GitHub Wiki

网易云音乐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接口。

⚠️ **GitHub.com Fallback** ⚠️