JerryMusicAPI v1.0

网易云音乐接口服务 — 支持 Vercel 部署 & 本地预览,覆盖 120+ 接口,涵盖登录、搜索、歌曲获取(含 VIP 解灰)、歌单、评论等全功能。

接口概览

Base URLhttp://localhost:3000
协议HTTPS (Vercel) / HTTP (本地)
认证Cookie 透传(MUSIC_U免费
接口前缀/api/
请求方法GET / POST 均可
返回格式JSON
CORS允许所有来源 (*)
加密方式weapi / linuxapi / eapi(自动选择)

认证与 Cookie

大部分接口无需认证即可使用(如搜索、歌曲详情、歌单等)。需要登录态的接口(如每日推荐、私人 FM、歌单操作等)需通过 cookie 参数传入 MUSIC_U 值。

获取 Cookie:调用 /api/login/cellphone/api/login/email 登录后,响应 Set-Cookie 头中包含 MUSIC_U=xxx,将该值通过 ?cookie=MUSIC_U=xxx 传入后续请求即可。

VIP 歌曲获取

VIP 歌曲自动解灰机制(返回完整歌曲,非 30 秒试听)

调用 song/urlsong/url/v1 时,系统自动检测 VIP 歌曲和试听片段(freeTrialInfo),通过以下策略链获取完整播放地址:

优先级策略说明
1 unblock 多音源解灰:通过 gdmusic、qijieyaPlus、bikonoo、byfuns、qijieya、msls 等 6 个第三方 API 获取网易云 CDN 完整音频链接。链接来自网易云服务器,确保原版完整歌曲
2 netease eapi + os=pc:模拟网易云桌面客户端请求。若用户提供了 VIP 账号 MUSIC_U Cookie,可获取高品质无损音频
3 kuwo 酷我音乐兜底:通过歌名 + 歌手严格匹配(置信度 ≥ 70 分),仅在其他策略均失败时使用

方法一:VIP 账号 Cookie(获取最高品质无损)

# 传入 VIP 账号的 MUSIC_U Cookie,直接获取无损音质
curl "http://localhost:3000/api/song/url?id=210049&cookie=MUSIC_U=你的VIP账号Cookie"

方法二:多音源自动解灰(无需登录)

# 无需 Cookie,系统自动检测并解灰,返回 320kbps 完整歌曲
curl "http://localhost:3000/api/song/url?id=210049"

响应 source 字段标识音源:netease(免费歌曲直连)、unblock(解灰音源)、kuwo(酷我兜底);sourceType 为具体音源名称(如 gdmusicbikonoo 等)

快速开始

所有接口以 /api/ 为前缀,支持 GET / POST,返回 JSON。

# 搜索歌曲
curl http://localhost:3000/api/search?keywords=稻香

# 获取歌曲 URL(支持 VIP 歌曲,默认最高码率)
curl http://localhost:3000/api/song/url?id=33894312

# 获取歌曲 URL v1(指定音质: standard/exhigh/lossless/hires)
curl "http://localhost:3000/api/song/url/v1?id=33894312&level=exhigh"

# 获取歌词
curl http://localhost:3000/api/song/lyric?id=33894312

# 获取歌单详情
curl http://localhost:3000/api/playlist/detail?id=3778678

# 获取歌曲详情(多个 ID 用逗号分隔)
curl "http://localhost:3000/api/song/detail?ids=33894312,347230"

接口列表

没有找到匹配的接口

代码示例

JavaScript (fetch)

// 搜索歌曲
const resp = await fetch('/api/search?keywords=稻香');
const data = await resp.json();
console.log(data.result.songs[0].name);  // "稻香"

// 获取歌曲播放地址(VIP 自动解灰)
const resp2 = await fetch('/api/song/url?id=210049');
const data2 = await resp2.json();
console.log(data2.data[0].url);  // 完整播放地址
console.log(data2.data[0].source);  // "unblock" 或 "netease"

Python (requests)

import requests

# 搜索歌曲
resp = requests.get('https://your-domain.vercel.app/api/search',
                    params={'keywords': '稻香'})
data = resp.json()
print(data['result']['songs'][0]['name'])  # 稻香

# 获取 VIP 歌曲 URL
resp2 = requests.get('https://your-domain.vercel.app/api/song/url',
                     params={'id': '210049'})
print(resp2.json()['data'][0]['url'])

Node.js (axios)

const axios = require('axios');

// 获取歌词
const { data } = await axios.get('/api/song/lyric', {
  params: { id: '33894312' }
});
console.log(data.lrc.lyric);  // 歌词文本

// 登录后获取每日推荐(需 Cookie)
const { data: recs } = await axios.get('/api/recommend/songs', {
  params: { cookie: 'MUSIC_U=xxx' }
});

JerryMusicAPI v1.0 · Powered by Node.js & Vercel Serverless Functions · jerrynis.com · 仅供学习研究使用