UnblockNeteaseMusic | 解锁网易云音乐客户端变灰歌曲

前言

目前在国内的音乐平台,网易云音乐可谓是一枝独秀,作为国内首个以“歌单”为核心架构的音乐APP,长久以来凭借精准的歌单推荐与总是热闹非凡的“乐评”氛围”让它深受用户推崇,怎奈相较于财大气粗的腾讯系,网易云的音乐曲库版权较少,热门歌曲常因版权而灰色无法播放,即便是黑胶会员只能默默忍受,实在有些无可奈何。对于许多人来说,早已习惯了网易云,即便它有着一些缺点。
实际上,目前基于网易云音乐API开发的优秀第三方播放器、辅助工具、插件层出不穷,不仅让网易云焕发生机,更能解决例如上述所说的灰色版权歌曲,让它变的更好用。

UnblockNeteaseMusic

如开头所述,云音乐的版权库较少,尤其一些热门歌曲总是因为版权而无法正常播放,实在是太尴尬。而解决这个问题的方法早已有之,目前全网所有解锁灰色版权的歌曲,基本都是基于Github上开源的UnblockNeteaseMusic,它可以替换云音乐的播放音源。

UnblockNeteaseMusic

不过,原作者现在基本少有维护,这里推荐一个基于它的重构增强版UnblockNeteaseMusic 。

项目地址: UnblockNeteaseMusic

特性

支援多个音源,替换变灰歌曲链接
支援的完整音源清单可以见下方〈音源清单〉处。
为请求增加 参数解锁海外限制,支持指定网易云服务器 IP,支持设置上游 HTTP / HTTPS 代理X-Real-IP
完整的流量代理功能 (HTTP / HTTPS),可直接作为系统代理 (同时支持 PAC)

运行

直接打开可运行文件
去右侧的 Releases 找到最新版本,然后在下方的 Assets 找到符合你系统架构的可运行文件。下载回来后点两下即可使用。

macOS 因为签名问题,暂时不提供可运行文件。请先按照其他做法使用。

NPM 安装

安装成依赖
npm install @unblockneteasemusic/server
yarn add @unblockneteasemusic/server # for Yarn users
用 NPX 运行
npx -p @unblockneteasemusic/server unblockneteasemusic

注册成 Windows 服务

安装服务

直接 或下载本项目,在项目根目录运行 。会有弹窗,直接确定即可。如果有安全管家等软件可能会阻止,直接允许即可。运行成功后可在电脑服务中看到该服务。 clonenode ./nw.js

配置

http 代理使用 ,端口默认使用 。 127.0.0.18080

如果想要添加启动参数,请在项目根目录中的 中配置 。 nw.jsscriptOptions

如果想要卸载已安装的服务,请再次运行 。 node ./nw.js

安装服务后,会在项目根目录生成 文件夹。可在这里查看日志。 daemon

Docker 作法
Docker Hub
pan93412/unblock-netease-music-enhanced 。 是从 组建的最新版本; 是最新 tag 的版本。 latestenhancedrelease

直接运行 的命令如下: pan93412/unblock-netease-music-enhanced

docker run pan93412/unblock-netease-music-enhanced

若要更新 UnblockNeteaseMusic,请运行以下命令后重新 : run

docker pull pan93412/unblock-netease-music-enhanced

若要指定环境变量,您可以往 传入 ,就像这样: docker run-e

docker run -e JSON_LOG=true -e LOG_LEVEL=debug pan93412/unblock-netease-music-enhanced

若要传入配置参数,只要在 的 image 之后传入参数即可: docker run

docker run pan93412/unblock-netease-music-enhanced -o bilibili -p 1234
自行编译
git clone https://github.com/UnblockNeteaseMusic/server.git UnblockNeteaseMusic
cd UnblockNeteaseMusic
docker-compose up

直接使用 Repo 最新版本

git clone https://github.com/UnblockNeteaseMusic/server.git UnblockNeteaseMusic
cd UnblockNeteaseMusic
node app.js # 建议使用 screen / tmux 把 app.js 挂后台

更新:

git pull
编译最新的 package
yarn
yarn build
node app.js # 即可使用 repo 的最新开发内容

采用(而不编译)最新的 package

yarn
DEVELOPMENT=true node app.js

Android Xposed 模块

请移步至 杜比大喇叭 β 版

OpenWrt LuCI 插件

请移步至 luci-app-unblockneteasemusic

配置参数

$ unblockneteasemusic -h
usage: unblockneteasemusic [-v] [-p port] [-a address] [-u url] [-f host]
                           [-o source [source ...]] [-t token] [-e url] [-s]
                           [-h]

optional arguments:
  -v, --version                   output the version number
  -p port, --port port            specify server port
  -a address, --address address   specify server host
  -u url, --proxy-url url         request through upstream proxy
  -f host, --force-host host      force the netease server ip
  -o source [source ...], --match-order source [source ...]
                                  set priority of sources
  -t token, --token token         set up proxy authentication
  -e url, --endpoint url          replace virtual endpoint with public host
  -s, --strict                    enable proxy limitation
  -c, --cnrelay host:port         Mainland China relay to get music url
  -h, --help                      output usage information

音源清单

将有兴趣的音源代号用 传入 UNM 即可使用,像这样: -o

node app.js -o bilibili ytdlp
名称 代号 默认启用 注意事项
QQ音乐 qq 表格需要准备自己的 (请参阅下方〈环境变量〉处)。QQ_COOKIE
酷狗音乐 kugou {x}
酷我音乐 kuwo {x}
咪咕音乐 migu {x}
JOOX joox 需要准备自己的 (请参阅下方〈环境变量〉处)。似乎有严格地区限制。JOOX_COOKIE
YouTube(纯 JS 解析方式) youtube 需要 Google 认定的非中国大陆区域 IP 地址。
yt-download ytdownload 似乎不能使用。
YouTube(通过 youtube-dl) youtubedl 需要自行安装 。youtube-dl
YouTube(通过 yt-dlp) ytdlp {x} 需要自行安装 ( 仍在活跃维护的 fork)。yt-dlpyoutube-dl
B 站音乐 bilibili {x}
第三方网易云API pyncmd

环境变量

变量名称 类型 描述 示例
ENABLE_FLAC bool 激活无损音质获取 ENABLE_FLAC=true
ENABLE_LOCAL_VIP bool 激活本地黑胶 VIP ENABLE_LOCAL_VIP=true
ENABLE_HTTPDNS bool 激活故障的 Netease HTTPDNS 查询(不建议) ENABLE_HTTPDNS=true
DEVELOPMENT bool 激活开发模式。需要自己用 安装依赖 (dependencies)yarn DEVELOPMENT=true
JSON_LOG bool 输出机器可读的 JSON 记录格式 JSON_LOG=true
NO_CACHE bool 停用 cache NO_CACHE=true
MIN_BR int 允许的最低源音质,小于该值将被替换 MIN_BR=320000
LOG_LEVEL str 日志输出等级。请见〈日志等级〉部分。 LOG_LEVEL=debug
LOG_FILE str 从 Pino 端设置日志输出的文件位置。也可以用 的输出重导向功能 () 代替*shnode app.js >> app.log LOG_FILE=app.log
JOOX_COOKIE str JOOX 音源的 wmid 和 session_key cookie JOOX_COOKIE="wmid=<your_wmid>; session_key=<your_session_key>"
QQ_COOKIE str QQ 音源的 uin 和 qm_keyst cookie QQ_COOKIE="uin=<your_uin>; qm_keyst=<your_qm_keyst>"
YOUTUBE_KEY str Youtube 音源的 Data API v3 Key YOUTUBE_KEY="<your_data_api_key>"
SIGN_CERT path 自定义证书文件 SIGN_CERT="./server.crt"
SIGN_KEY path 自定义密钥文件 SIGN_KEY="./server.key"

日志等级 (LOG_LEVEL)

这些是常用的值:
debug: 输出所有记录(调试用)
info: 只输出一般资讯(默认值)
error: 只在出严重问题时输出
详细请参见 Pino 对此的说明。

使用

警告:本项目不提供在线 demo,请不要轻易信任使用他人提供的公开代理服务,以免发生安全问题

若将服务部署到公网,强烈建议使用严格模式 (此模式下仅放行网易云音乐所属域名的请求) -s 限制代理范围 (需使用 PAC 或 hosts),或激活 Proxy Authentication -t : 设置代理用户名密码 (目前密码认证在 Windows 客户端设置和 macOS 系统设置都无法生效,请不要使用),以防代理被他人滥用

支持 Windows 客户端,UWP 客户端,Android 客户端,Linux 客户端 (1.2 版本以上需要自签证书 MITM,启动客户端需要增加 参数),macOS 客户端 (726 版本以上需要自签证书),iOS 客户端 (配置 https endpoint 或使用自签证书) 和网页版 (需要自签证书,需要脚本配合) --ignore-certificate-errors

目前除 UWP 外其它客户端均优先请求 HTTPS 接口,默认配置下本代理对网易云所有 HTTPS API 连接返回空数据,促使客户端降级使用 HTTP 接口 (新版 Linux 客户端和 macOS 客户端已无法降级)

因 UWP 应用存在网络隔离,限制流量发送到本机,若使用的代理在 localhost,或修改的 hosts 指向 localhost,需为 "网易云音乐 UWP" 手工开启 loopback 才能使用,请以 管理员身份 运行命令

checknetisolation loopbackexempt -a -n="1F8B0F94.122165AE053F_j2p0p5q0044a6"

方法 1. 修改 hosts

向 hosts 文件添加两条规则

<Server IP> music.163.com
<Server IP> interface.music.163.com

使用此方法必须监听 80 端口 -p 80
若在本机运行程序,请指定网易云服务器 IP (可在修改 hosts 前通过 获得) 或 使用代理 ,以防请求死循环-f xxx.xxx.xxx.xxxping music.163.com-u http(s)://xxx.xxx.xxx.xxx:xxx
Android 客户端下修改 hosts 无法直接使用,原因和解决方法详见云音乐安卓又搞事啦,安卓免 root 绕过网易云音乐 IP 限制

方法 2. 设置代理

PAC 自动代理脚本地址 http:///proxy.pac

全局代理地址填写服务器地址和端口号即可

平台 基础设置
Windows 设置 > 工具 > 自定义代理 (客户端内)
UWP Windows 设置 > 网络和 Internet > 代理
Linux 系统设置 > 网络 > 网络代理
macOS 系统偏好设置 > 网络 > 高级 > 代理
Android WLAN > 修改网络 > 高级选项 > 代理
iOS 无线局域网 > HTTP 代理 > 配置代理

代理工具和方法有很多请自行探索,欢迎在 issues 讨论

方法 3. 调用接口

作为依赖库使用

const match = require('@unblockneteasemusic/server');

/**
 * Set proxy or hosts if needed
 */
global.proxy = require('url').parse('http://127.0.0.1:1080');
global.hosts = { 'i.y.qq.com': '59.37.96.220' };

/**
 * Find matching song from other platforms
 * @param {Number} id netease song id
 * @param {Array<String>||undefined} source support qq, xiami, baidu, kugou, kuwo, migu, joox
 * @return {Promise<Object>}
 */
match(418602084, ['qq', 'kuwo', 'migu']).then(console.log);

設定 HTTPS 憑證

新版的 NeteaseMusic 需要 HTTPS 才能使用。证书的设置教学可参阅 《安裝 UNM 的 HTTPS 憑證》 一文。

THE END
分享
海报
UnblockNeteaseMusic | 解锁网易云音乐客户端变灰歌曲
前言 目前在国内的音乐平台,网易云音乐可谓是一枝独秀,作为国内首个以“歌单”为核心架构的音乐APP,长久以来凭借精准的歌单推荐与总是热闹非凡的“乐评”氛围”……
<<上一篇
下一篇>>
文章目录
关闭
目 录