1鉴权与防盗刷 已启用
为防止接口被外人盗刷流量,解析直连接口 /api/parse 已开启访问鉴权;搜索/播放等老接口默认保持开放(不影响现有插件,见 第 8 节一键全量开启)。
三种传令牌方式(任选其一)
| 方式 | 写法 | 说明 |
|---|---|---|
| URL 参数 推荐 | &token=YOUR_TOKEN | 最通用,浏览器 / 播放器 / 易语言 / 卡片都能用 |
| 请求头 | X-Api-Token: YOUR_TOKEN | 服务端程序调用时更隐蔽 |
| 请求头 | Authorization: Bearer YOUR_TOKEN | 标准 Bearer 形式 |
你的访问令牌
YOUR_TOKEN
.env 的 ACCESS_TOKENS 更换(见第 8 节)。IP 白名单(免令牌)
下列固定 IP 调用时无需带 token,已在 .env 的 ALLOW_IPS 配置:
103.236.87.133 框架机(点歌机器人)
103.236.87.242 本站服务器
127.0.0.1 本机内部(PHP 兼容层自动放行)
手机/家宽是动态 IP,不建议加白名单,直接用 token 即可。需要新增固定 IP,在 ALLOW_IPS 用英文逗号追加后重启服务。
限流
同一公网 IP 对解析/搜索接口默认 120 次 / 分钟(RATE_LIMIT_PER_MIN 可调,0 为不限)。超限返回 429 并带 Retry-After(秒)。本机内部与白名单不受限。
鉴权返回
| 状态码 | 含义 | 处理 |
|---|---|---|
| 200 / 302 | 通过 | 正常返回 / 跳转播放 |
| 401 | 未授权:缺少或 token 错误 | 补上正确 token,或把出口 IP 加白名单 |
| 429 | 请求过频 | 按 Retry-After 等待后重试 |
2音乐解析直连 /api/parse 核心
传歌名或 mid,直接得到可播放地址;默认 302 跳转即点即播。别名:/api/direct、/api/url、/api/redirect,用法完全相同。
/api/parse请求参数
| 参数 | 必填 | 默认 | 说明 |
|---|---|---|---|
keyword | 二选一 | - | 歌名/关键词,也认 word / w / name / msg |
mid | 二选一 | - | 歌曲 mid;可再带 media_mid(更稳)或 id |
n / index | 否 | 1 | 取搜索结果第几首(1–50) |
quality | 否 | 128 | 音质:128 / 320 / m4a / flac |
format | 否 | redirect | 见下表 |
token | 是 | - | 访问令牌(IP 白名单内可省略) |
format 输出形式
| format | 返回 | 适用 |
|---|---|---|
不填 / redirect | 302 跳转到 /api/stream,打开即播 | 播放器、外链、<audio>、点歌 |
text / url / raw | text/plain 纯直链一行 | 程序里只取地址 |
json | 歌曲信息 + 直链 JSON | 需要标题/歌手/封面/时长 |
origin / official | 302 直跳 QQ 官方地址 | 省本站流量;地址会过期,需实时取 |
/api/stream,由服务器实时换取官方 vkey 再代理回音频,所以链接长期有效、支持拖动进度(HTTP 206 Range)。令牌会自动透传到跳转地址,全链路可播。示例(可直接点开 / 复制)
# 打开即播(302,第 1 首,128k)
http://qq.wm2213.com/api/parse?keyword=稻香&token=YOUR_TOKEN
# 第 2 首、320k
http://qq.wm2213.com/api/parse?word=稻香&n=2&quality=320&token=YOUR_TOKEN
# 只要纯直链
http://qq.wm2213.com/api/parse?word=晴天&format=text&token=YOUR_TOKEN
# 完整信息 JSON
http://qq.wm2213.com/api/parse?word=七里香&format=json&token=YOUR_TOKEN
# 用 mid 直取
http://qq.wm2213.com/api/direct?mid=003aAYrm3GE0Ac&media_mid=0020wJDo3cx0j3&token=YOUR_TOKEN
format=json 返回示例
{
"code": 200, "source": "qq", "quality": "128", "index": 1,
"mid": "003aAYrm3GE0Ac", "mediaMid": "0020wJDo3cx0j3",
"song": {
"title": "稻香", "name": "稻香", "singer": "周杰伦",
"album": "魔杰座", "duration": 223,
"cover": "https://y.qq.com/music/photo_new/T002R800x800M000....jpg",
"pay": { "payplay": 1 }, "sizes": { "128": 3570000, "320": 8900000 }
},
"url": "http://qq.wm2213.com/api/stream?mid=...&media_mid=...&quality=128&token=YOUR_TOKEN",
"streamUrl": "……同上……", "playUrl": "……同上……"
}
3搜索 /api/search
按歌名搜索,返回列表(默认不强制鉴权,受同一限流约束;全量开启后见第 8 节)。
/api/search?keyword=稻香&size=10&quality=128&n=1| 参数 | 默认 | 说明 |
|---|---|---|
keyword | 必填 | 关键词 |
page | 1 | 页码 |
size / num | 10 | 每页数量(1–50) |
n / index | 1 | 同时在 data 字段给出第 n 首,方便“只取一首” |
quality | 128 | 128 / 320 / m4a / flac |
token | - | 全量开启鉴权后必填 |
返回 { code:200, source:'qq', count, index, list:[...], data:{...} },列表项主要字段:
| 字段 | 含义 | 字段 | 含义 |
|---|---|---|---|
mid / id | 歌曲标识 | mediaMid | 媒体文件 mid(取流建议带) |
title/name | 歌名 | singer | 歌手(多人用 / 分隔) |
album / albumMid | 专辑 | duration | 时长(秒) |
cover | 封面图 | sizes | 各音质文件大小(0=无) |
pay.payplay | 是否付费可播 | musicUrl/playUrl/streamUrl | 本站可播放直链 |
4详情 · 取地址 · 音频流
详情(含播放地址)
/api/song?mid=歌曲mid&media_mid=媒体mid&quality=128返回歌曲信息 + playUrl/streamUrl(本站流地址);playReason 非空表示该音质不可用原因。
仅取播放地址(JSON)
/api/play?mid=歌曲mid&media_mid=媒体mid&quality=128返回官方 url(会过期)与本站 streamUrl(稳定)。取不到时 HTTP 404 并带 reason。
音频流(可直接作为播放器 src)
/api/stream?mid=歌曲mid&media_mid=媒体mid&quality=128直接返回音频二进制(audio/mpeg / audio/flac 等),支持 Range 断点/拖动(200 / 206)。每次请求实时换 vkey,地址长期有效。
<audio src="http://qq.wm2213.com/api/stream?mid=003aAYrm3GE0Ac&media_mid=0020wJDo3cx0j3&quality=128&token=YOUR_TOKEN" controls></audio>
AUTH_API 全开为 1,则 /api/stream 也要带 token;走 /api/parse 302 或 aq.php 卡片时令牌已自动附带,无需手动处理。5歌词 /api/lyric
/api/lyric?mid=歌曲mid&id=歌曲id返回 LRC 原文、翻译、音译(均为纯文本,无则空串):
{ "mid": "...", "lyric": "[ti:稻香]...", "trans": "翻译歌词", "roma": "音译" }
6点歌 DLL 兼容接口(易语言插件原契约)
下列 PHP 接口供「无名点歌.dll」按原有指令直接调用,无需带 token(由服务器本机内部转发到 Node,已自动放行);卡片播放地址已自动附带令牌,全量开启鉴权后也能正常放歌。
搜歌列表
/api/qqdg.php?word=歌名&num=15{ "code": 200, "data": [
{ "id":449205, "mid":"003a...", "mediaMid":"0020...", "song":"稻香",
"singer":"周杰伦", "album":"魔杰座", "cover":"https://...", "duration":223 }
]}
点歌音乐卡片
/api/aq.php?msg=歌名&type=1&sq=8&n=序号n 为列表里选择的序号(默认 1)。返回 QQ 音乐卡片 JSON,DLL 读取 meta.music.musicUrl,该地址已自动带 token。
7音质、错误码与黑名单
音质 quality
| 值 | 格式 | 编码前缀 | 说明 |
|---|---|---|---|
128 | mp3 | M500 | 默认,兼容性最好 |
320 | mp3 | M800 | 高品(部分歌曲需会员) |
m4a | m4a | C400 | AAC |
flac | flac | F000 | 无损(多需会员) |
错误码
| 码 | 含义 |
|---|---|
| 400 | 缺少参数(如未传 keyword/mid) |
| 401 | 未授权(token 缺失/错误) |
| 404 | 未找到歌曲 / 无可用播放地址(下架或会员限制) |
| 429 | 触发限流 |
| 502 | 上游异常或服务错误 |
后台可配置 mid / 关键词黑名单,命中的歌曲会从搜索结果过滤。健康检查:GET /api/health(登录态、Cookie 自动刷新状态)。
8防盗刷配置与运维
配置文件:/www/wwwroot/qqmusic/.env,由 systemd 服务 qqmusic.service 读取,改完需重启生效。
| 配置项 | 当前 | 说明 |
|---|---|---|
AUTH_PARSE | 1 | /api/parse 解析直连是否校验 token |
AUTH_API | 0 | search/song/play/stream/lyric 是否也校验(0 关 / 1 开) |
ACCESS_TOKENS | 已配置 | 令牌,多个用英文逗号分隔 |
ALLOW_IPS | 已配置 | 免令牌 IP 白名单,逗号分隔 |
RATE_LIMIT_PER_MIN | 120 | 每 IP 每分钟解析/搜索上限,0 不限 |
更换 / 增加令牌
# 编辑 .env,改成新值(可同时保留新旧两个,平滑切换)
ACCESS_TOKENS="新令牌,旧令牌"
# 保存后重启
systemctl restart qqmusic
全量保护老接口(搜索/音频流也要 token)
# 把 .env 中改为
AUTH_API="1"
systemctl restart qqmusic
常用命令
systemctl status qqmusic # 状态
systemctl restart qqmusic # 重启
journalctl -u qqmusic -f # 实时日志(含 401 拦截记录 auth-deny)
curl http://127.0.0.1:3001/api/health # 本机健康检查
当前访问令牌:YOUR_TOKEN(请妥善保管,勿公开)。
9调用示例
curl
# 跟随 302 直接下载/播放
curl -L -o dao.mp3 "http://qq.wm2213.com/api/parse?keyword=稻香&token=YOUR_TOKEN"
# 只取直链
curl "http://qq.wm2213.com/api/parse?word=稻香&format=text&token=YOUR_TOKEN"
# 取 JSON
curl "http://qq.wm2213.com/api/parse?word=稻香&format=json&token=YOUR_TOKEN"
易语言(点歌插件 / 悬浮窗思路)
' 1) 用 网页_访问S / LibCurl 请求纯直链(format=text),拿到一行 URL
直链 = 网页_访问S (“http://qq.wm2213.com/api/parse?word=” + 编码_URL编码(歌名)
+ “&n=1&quality=128&format=text&token=YOUR_TOKEN”, , , , )
' 2) 把“直链”交给播放组件 / 浏览器框 / 音乐卡片即可播放
' (直链为本院 /api/stream,长期有效、支持拖动)
' 更省事:直接把 302 地址交给支持跟随跳转的播放器,无需 format=text:
' http://qq.wm2213.com/api/parse?word=歌名&token=YOUR_TOKEN
PHP
$url = 'http://qq.wm2213.com/api/parse?word=' . rawurlencode($name)
. '&format=text&token=YOUR_TOKEN';
$play = trim(file_get_contents($url)); // 即可播放直链
网页 / H5
<audio controls
src="http://qq.wm2213.com/api/parse?keyword=稻香&token=YOUR_TOKEN"></audio>
format=json;只需要出声,直接用默认 302 地址,服务端会自动处理选歌、换 vkey、代理与拖动。