UnblockNeteaseMusic

解锁网易云音乐客户端变灰歌曲(Docker版)

logo

特性

  • 支持多个音源,替换变灰歌曲链接(现只能解决win客户端和网页端)

  • 支持的完整音源清单可以见下方〈音源清单〉处。

  • 完整的流量代理功能 (HTTP / HTTPS),可直接作为系统代理 (同时支持 PAC)

运行

Docker-compose(推荐)

建议clone在服务器目录的上一级执行终端拉取代码,随后生成UnblockNeteaseMusic文件夹(也可替换成你想要的文件夹名称)

git clone https://github.com/UnblockNeteaseMusic/server.git UnblockNeteaseMusic
cd UnblockNeteaseMusic
docker-compose up

Bash

解析

先切换 UnblockNeteaseMusic 文件夹目录,再执行 docker-compose up 让项目运行起来,随后根据实际需要修改并执行参数,可以见下方<配置参数>处

执行 node app.js

我的Entrypoint

node app.js -o bodian bilibili -s -p 8080:8081 -e https://music.163.com

更新:

git pull

配置参数

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

optional arguments:
  -v, --version                   显示版本号。执行后会打印当前安装的 UnblockNeeeMusic 版本并退出。
  -p port, --port http[:https]    指定服务器监听的端口。默认通常是 8080。可以用 http[:https] 
                                  格式同时启用 HTTP 和 HTTPS 服务。
  -a address, --address address   指定服务器绑定的主机地址。默认是 0.0.0.0(监听所有网络接口)。
                                  如果只想本地访问,可设为 127.0.0.1。
  -u url, --proxy-url url         设置上游代理。让本程序通过另一个代理服务器
                                 (如 Shadowsocks、HTTP 代理)来访问音源和网易云,适用于本身网络受限的环境。
  -f host, --force-host host      强制指定网易云服务器的 IP。用于解决 DNS 污染或指定特定服务器,通常高级用户使用。
  -o source [source ...], --match-order source [source ...]
                                  设置音源搜索优先级。当歌曲变灰时,按顺序从这些平台搜索可用版本。这是最常用的参数之一。
  -t token, --token token         设置代理认证令牌。为代理服务设置密码
                                  客户端使用时需在配置中填入此令牌,提升安全性(尤其在公网部署时)。
  -e url, --endpoint url          替换虚拟端点为公网主机。主要用于特定场景(如 iOS 的 HTTP 代理模式)
                                  将代理服务器内部使用的虚拟域名替换成一个可公开访问的地址。
  -s, --strict                    启用严格模式。开启后,代理服务器将只处理与网易云音乐相关的域名请求
                                  防止被滥用去代理其他网站,公网部署强烈建议开启。
  -c, --cnrelay host:port         设置中国大陆中继/代理。这是一个高级功能,用于解决某些音源(如QQ、咪咕)
                                  因IP限制在海外无法直接获取播放链接的问题。你需要自行准备一个在中国大陆的代理或服务器。
  -h, --help                      显示此帮助信息。

Bash

音源清单

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

node app.js -o bilibili ytdlp

Bash

名称

代号

默认启用

注意事项

QQ 音乐

qq

需要准备自己的 QQ_COOKIE(请参阅下方〈环境变量〉处)。必须使用 QQ 登录。

酷狗音乐

kugou

酷我音乐

kuwo

波点音乐

bodian

咪咕音乐

migu

需要准备自己的 MIGU_COOKIE(请参阅下方〈环境变量〉处)。

JOOX

joox

需要准备自己的 JOOX_COOKIE(请参阅下方〈环境变量〉处)。似乎有严格地区限制。

YouTube(纯 JS 解析方式)

youtube

需要 Google 认定的非中国大陆区域 IP 地址。

YouTube(通过 youtube-dl)

youtubedl

需要自行安装 youtube-dl

YouTube(通过 yt-dlp)

ytdlp

需要自行安装 yt-dlpyoutube-dl 仍在活跃维护的 fork)。

B 站音乐

bilibili

B 站音乐

bilivideo

在大陆地区外的IP地址可能查询不到某些版权视频(如索尼音乐上传的MV等)

第三方网易云 API

pyncmd

  • 支持 pyncmd 的 API 服务由GD studio提供。

环境变量

变量名称

类型

描述

示例

ENABLE_FLAC

bool

激活无损音质获取

ENABLE_FLAC=true

ENABLE_LOCAL_VIP

str

激活本地黑胶 VIP,可选值:true(等同于 CVIP)、cvipsvip

ENABLE_LOCAL_VIP=svip

LOCAL_VIP_UID

str

仅对这些 UID 激活本地黑胶 VIP,默认为对全部用户生效

LOCAL_VIP_UID=123456789,1234,123456

ENABLE_HTTPDNS

bool

激活故障的 Netease HTTPDNS 查询(不建议)

ENABLE_HTTPDNS=true

BLOCK_ADS

bool

屏蔽应用内部分广告

BLOCK_ADS=true

DISABLE_UPGRADE_CHECK

bool

禁用更新检测

DISABLE_UPGRADE_CHECK=true

DEVELOPMENT

bool

激活开发模式。需要自己用 yarn 安装依赖 (dependencies)

DEVELOPMENT=true

FOLLOW_SOURCE_ORDER

bool

严格按照配置音源的顺序进行查询

FOLLOW_SOURCE_ORDER=true

JSON_LOG

bool

输出机器可读的 JSON 记录格式

JSON_LOG=true

NO_CACHE

bool

停用 cache

NO_CACHE=true

MIN_BR

int

允许的最低源音质,小于该值将被替换

MIN_BR=320000

SELECT_MAX_BR

bool

选择所有音源中的最高码率替换音频

SELECT_MAX_BR=true

LOG_LEVEL

str

日志输出等级。请见〈日志等级〉部分。

LOG_LEVEL=debug

LOG_FILE

str

从 Pino 端设置日志输出的文件位置。也可以用 *sh 的输出重导向功能 (node 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>"

MIGU_COOKIE

str

咪咕音源的 aversionid cookie

MIGU_COOKIE="<your_aversionid>"

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"

SEARCH_ALBUM

bool

在其他音源搜索歌曲时携带专辑名称(默认搜索条件 歌曲名 - 歌手,启用后搜索条件 歌曲名 - 歌手 专辑名

SEARCH_ALBUM=true

NETEASE_COOKIE

str

网易云 Cookie

MUSIC_U=007554xxx

日志等级 (LOG_LEVEL)

这些是常用的值:

  • debug: 输出所有记录(调试用)

  • info: 只输出一般资讯(默认值)

  • error: 只在出严重问题时输出

详细请参见 Pino 对此的说明

使用

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

方法 设置代理

PAC 自动代理脚本地址 http://<Server Name:PORT>/proxy.pac

客户端内 设置 > 工具 > 自定义代理 (客户端内) > 输入Docker部署的域名或IP(http) > 端口(默认8080)

HTTPs在PC端无法使用

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

平台

基础设置

Windows

设置 > 工具 > 自定义代理 (客户端内)

Android

WLAN > 修改网络 > 高级选项 > 代理

iOS

无线局域网 > HTTP 代理 > 配置代理

代理工具和方法有很多请自行探索

设定 HTTPS 凭证

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