UnblockNeteaseMusic README

The project's README from github.com/nondanee/UnblockNeteaseMusic. As one markdown file: README.md.

logo

UnblockNeteaseMusic

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

特性

运行

使用 npx

$ npx @nondanee/unblockneteasemusic

或使用 Docker

$ docker run nondanee/unblockneteasemusic
$ docker-compose up

配置参数

$ 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
  -h, --help                      output usage information

使用

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

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

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

目前除 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 -f xxx.xxx.xxx.xxx (可在修改 hosts 前通过 ping music.163.com 获得) 或 使用代理 -u http(s)://xxx.xxx.xxx.xxx:xxx,以防请求死循环

Android 客户端下修改 hosts 无法直接使用,原因和解决方法详见云音乐安卓又搞事啦,安卓免 root 绕过网易云音乐 IP 限制

方法 2. 设置代理

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

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

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

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

✳方法 3. 调用接口

作为依赖库使用

$ npm install @nondanee/unblockneteasemusic
const match = require('@nondanee/unblockneteasemusic')

/** 
 * 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)

效果

Windows 客户端

UWP 客户端

Linux 客户端

macOS 客户端

Android 客户端

iOS 客户端

致谢

感谢大佬们为逆向 eapi 所做的努力

使用的其它平台音源 API 出自

trazyn/ieaseMusic

listen1/listen1_chrome_extension

向所有同类项目致敬

EraserKing/CloudMusicGear

EraserKing/Unblock163MusicClient

ITJesse/UnblockNeteaseMusic

bin456789/Unblock163MusicClient-Xposed

YiuChoi/Unlock163Music

yi-ji/NeteaseMusicAbroad

stomakun/NeteaseReverseLadder

fengjueming/unblock-NetEaseMusic

acgotaku/NetEaseMusicWorld

mengskysama/163-Cloud-Music-Unlock

azureplus/163-music-unlock

typcn/163music-mac-client-unlock

许可

The MIT License

UnblockNeteaseMusic (nondanee/UnblockNeteaseMusic)

Searching Database…

这是什么?UnblockNeteaseMusic 可以让网易云音乐里变灰、无法播放的歌曲重新能听:它把失效的歌曲链接替换成从其他音源(如 QQ 音乐、酷我、咪咕)获取的可播放链接。
那我到底要安装什么——一个改过的播放器吗?都不是——它是一个用 JavaScript 写的独立代理服务器,由你自己运行。你现有的网易云客户端只需像设置普通 HTTP/HTTPS 系统代理那样把流量走它,服务器会在传输过程中实时改写歌曲链接。
怎么把它跑起来,并让我的播放器连上它?用 npx 或 Docker 启动服务器(仓库自带 compose 文件),然后让客户端连上它:添加 hosts 规则(需要监听 80 端口)、设置 PAC 脚本 http://Name:PORT/proxy.pac,或者在客户端设置里手动填写代理。
有没有已经不能用的客户端?HTTPS 降级的办法在最新版 Linux 和 macOS 客户端上已经失效,代理密码认证在 Windows 客户端和 macOS 系统设置里也是坏的。另外当代理跑在本机 localhost 时,UWP 客户端还需要手动开启环回权限。
它支持哪些音乐客户端?支持 Windows、UWP、Linux 和 macOS 的桌面客户端,以及 Android、iOS 和网页版播放器。较新的 Linux 和 macOS 版本、iOS 和网页版需要自签名证书(MITM)或专用 HTTPS 端点,网页版还需要一个辅助脚本。
它使用哪些替代音源,哪些默认开启?它可以从 QQ、虾米、百度、酷狗、酷我、咪咕和 JOOX 获取可播放的链接。默认只启用第 1、5、6 个音源,按顺序对应 QQ、酷我和咪咕。
它是怎么解锁在中国大陆以外被屏蔽的歌曲的?它会在请求中加上 X-Real-IP 参数来绕过海外限制;你也可以固定指定的网易云服务器 IP,或者把流量经由一个上游 HTTP/HTTPS 代理转发。
我不想代理整个客户端,能在我自己的代码里直接用吗?可以——除了 hosts、PAC 和手动代理这几种方式,README 里还列出了直接调用它的接口,以及把本项目当作依赖库来使用。
Creator
nondanee
Size
1.7 MB
Stars
17.3K
Age
8y
Commits · 90 Days