网易云歌曲变灰无法播放?UnblockNeteaseMusic 一条命令救回你的歌单
【免费下载链接】UnblockNeteaseMusicRevive unavailable songs for Netease Cloud Music项目地址: https://gitcode.com/gh_mirrors/un/UnblockNeteaseMusic
早高峰地铁上,你点开攒了两年的歌单,第一首就灰着,提示"因版权方要求,无法播放"。别怀疑网络,这是版权问题:歌曲在服务端被标记为无版权,客户端自己救不了自己。UnblockNeteaseMusic 专治这类变灰歌曲——自动去 QQ 音乐、酷我、咪咕等平台找到同曲目,把可播放的链接换回响应里,歌曲照常完整响起。
跑起来:npx 一行命令,三分钟出服务
三种启动方式任选,效果相同:
# 方式一:npx 一行直接跑 npx @nondanee/unblockneteasemusic # 方式二:Docker,适合常驻或放服务器 docker run nondanee/unblockneteasemusic # 方式三:clone 源码本地运行 git clone https://gitcode.com/gh_mirrors/un/UnblockNeteaseMusic cd UnblockNeteaseMusic && node app.js服务默认监听8080端口;写成-p 8080:8081会同时拉起 HTTP 和 HTTPS 两个服务,后者用于新版客户端的证书中间人场景。常用参数先记这几个:
| 参数 | 作用 | 一句话解释 |
|---|---|---|
-p | 指定监听端口 | 走 hosts 接入时必须填80 |
-o | 设定音源顺序 | 谁稳把谁排前面 |
-f | 强制网易云服务器 IP | 本机运行时给请求指个"回家路",防打转 |
-u | 上游代理 | 让所有出站流量改走指定代理 |
-s | 严格模式 | 只放行网易云域名,防代理被白嫖 |
-e | 替换虚拟端点 | 给 iOS 客户端用的公网 HTTPS 地址 |
接上线:hosts、代理、PAC 三种接法
| 方式 | 做法 | 适合谁 |
|---|---|---|
| 改 hosts | 把music.163.com和interface.music.163.com指向跑工具的那台机器 | 局域网多设备、改不了代理的客户端 |
| 全局代理 | 客户端设置里填服务器地址加端口 | 桌面端最通用 |
| PAC 脚本 | 代理地址填http://服务器:端口/proxy.pac | 只想网易云走代理,其余直连 |
平台入口一句话:Windows 客户端在"设置 > 工具 > 自定义代理";Linux 在系统网络设置里配;macOS 在"系统偏好设置 > 网络 > 高级 > 代理";Android 在 Wi-Fi 高级选项里改代理。hosts 两行写法:
<服务器IP> music.163.com <服务器IP> interface.music.163.com接不上时,按"症状 → 处理"对:
- 请求打转、页面打不开:本机跑服务时 hosts 指向了 localhost,加
-f 服务器公网IP或-u 上游代理给请求指条出路。 - UWP 版 Windows 客户端死活不通:以管理员执行
checknetisolation loopbackexempt -a -n="1F8B0F94.122165AE053F_j2p0p5q0044a6"豁免回环限制。 - 新版客户端(Linux 1.2+、macOS 726+)连不上:它们优先走 HTTPS,需信任仓库自带的
server.crt自签证书,Linux 客户端启动时加--ignore-certificate-errors。 - iOS 客户端接不进:用
-e指定一个公网 HTTPS 端点,或装自签证书后走代理。
它是怎么把灰歌换回来的:一个"译员"的视角
把整个工具理解成插在线路里的一名译员。所有发往music.163.com的请求先经过它转接;当它听到服务器回复"没有版权"(错误码401、512)或"只有免费试听"的标记,就转身去别的音源找同一首歌,拿到可用链接后,再用网易云自己的格式把响应改口重述递回客户端——客户端全程无感。它不破解、不盗版,只是换了个渠道找同曲目。
整条流水线在 src/provider/ 目录里分工明确:
| 环节 | 文件 | 作用 |
|---|---|---|
| 对词 | src/provider/find.js | 按歌曲 id 取歌名、歌手、专辑,拼出搜索关键词 |
| 问源 | src/provider/match.js | 按优先级逐个音源要候选链接 |
| 试听验链 | src/provider/match.js | 发 range 请求读前 8KB,解析真实码率,死链低质链直接淘汰 |
| 改口回传 | src/hook.js | 把验过的链接写进网易云响应体 |
| 记本子 | src/cache.js | 歌曲信息与验链结果缓存 30 分钟,重复播放不重复请求 |
每个音源一个文件,比如 src/provider/qq.js、src/provider/kugou.js、src/provider/migu.js,默认启用 qq、kuwo、migu 三家,虾米、百度、JOOX 可通过-o参数加入。另外,遇到"该地区无法播放",它会往请求里塞一个X-Real-IP头(默认118.88.88.88)过掉 IP 判断。
进阶调优:把成功率再拉高一截
- 用
-o重排音源:不同地区、不同曲库命中率差很多,先手动试几首,再把最稳的放最前,如-o kugou kuwo qq migu。 - 缓存兜底:src/cache.js 让重复播放不再重复请求,响应更快,也更不容易触发音源风控。
- 公网部署开
-s严格模式:只放行网易云域名,防止你的代理被人当免费跳板,配 PAC 用效果最好。
⚠️ 顺带一句:别用陌生人的"公开代理"。你的账号请求明文经过别人机器,风险全在自己身上。
现在就试:三步验证
- 跑起服务:
npx @nondanee/unblockneteasemusic; - 客户端配上代理或 hosts;
- 随便点一首灰歌,听它响。
如果没响,按 src/hook.js → src/provider/match.js → src/server.js 的顺序看日志与响应,问题多半出在接入方式或证书上。灰歌不是坏了,只是被锁在了一个渠道里——UnblockNeteaseMusic 做的事,就是把钥匙换一把而已。🎵
【免费下载链接】UnblockNeteaseMusicRevive unavailable songs for Netease Cloud Music项目地址: https://gitcode.com/gh_mirrors/un/UnblockNeteaseMusic
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考