UnblockNeteaseMusic解鎖網易云音樂客戶端變灰歌曲
UnblockNeteaseMusic 可以用來解鎖網易云音樂客戶端變灰歌曲
特性
- 使用網易云舊鏈 / QQ / 蝦米 / 百度 / 酷狗 / 酷我 / 咕咪 / JOOX 音源替換變灰歌曲鏈接 (默認僅啟用前四)
- 為請求增加
X-Real-IP參數解鎖海外限制,支持指定網易云服務器 IP,支持設置上游 HTTP / HTTPS 代理 - 完整的流量代理功能 (HTTP / HTTPS),可直接作為系統(tǒng)代理 (同時支持 PAC)
運行
從源碼運行
$ node app.js
或使用 Docker
$ docker run nondanee/unblockneteasemusic
$ docker-compose up
配置參數
$ node app.js -h
usage: unblockneteasemusic [-v] [-p port] [-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
-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 http basic authentication
-e url, --endpoint url replace virtual endpoint with public host
-s, --strict enable proxy limitation
-h, --help output usage information
使用
警告:本項目不提供線上 demo,請不要輕易信任使用他人提供的公開代理服務,以免發(fā)生安全問題
若將服務部署到公網,強烈建議使用嚴格模式 (此模式下僅放行網易云音樂所屬域名的請求) -s 限制代理范圍 (需使用 PAC 或 hosts),或啟用 Proxy Authentication -t <name>:<password> 設置代理用戶名密碼 (目前密碼認證在 Windows 客戶端設置和 macOS 系統(tǒng)設置都無法生效,請不要使用),以防代理被他人濫用
支持 Windows 客戶端,UWP 客戶端,Linux 客戶端 (1.2 版本以上需要自簽證書 MITM,啟動客戶端需要增加 --ignore-certificate-errors 參數),macOS 客戶端 (726 版本以上需要自簽證書),Android 客戶端和網頁版 (需要自簽證書,需要腳本配合)
目前除 UWP 外其它客戶端均優(yōu)先請求 HTTPS 接口,默認配置下本代理對網易云所有 HTTPS API 連接返回空數據,促使客戶端降級使用 HTTP 接口 (新版 Linux 客戶端和 macOS 客戶端已無法降級)
測試發(fā)現 iOS 客戶端設置 WLAN 代理有效果 (HD 版不行),雖 Apple 強制要求使用 HTTPS 但 API 請求仍可以降級。不過音源播放地址需要 HTTPS,因此無法直接使用,需要一個有受信任證書的 (公網) HTTPS 接口來轉發(fā)流量,有域名和證書條件的話可以參考 @u3u 的 配置指南 (其它項目有提到使用 Surge,Shadowrocket 可以直接轉發(fā) HTTPS 流量到 HTTP,有興趣可以試試)
因 UWP 應用存在網絡隔離,限制流量發(fā)送到本機,若使用的代理在 localhost,或修改的 hosts 指向 localhost,需為 "網易云音樂 UWP" 手動開啟 loopback 才能使用,請以管理員身份執(zhí)行命令
checknetisolation loopbackexempt -a -n="1F8B0F94.122165AE053F_j2p0p5q0044a6"
方法 1. 修改 hosts
向 hosts 文件添加兩條規(guī)則
<Server IP> music.163.com
<Server IP> interface.music.163.com
使用此方法必須監(jiān)聽 80 端口
-p 80若在本機運行程序,請指定網易云服務器 IP
-f xxx.xxx.xxx.xxx(可在修改 hosts 前通過ping music.163.com獲得) 或使用代理-u http(s)://xxx.xxx.xxx.xxx:xxx,以防請求死循環(huán)Android 客戶端下修改 hosts 無法直接使用,原因和解決方法詳見云音樂安卓又搞事啦,安卓免 root 繞過網易云音樂 IP 限制
方法 2. 設置代理
PAC 自動代理腳本地址 http://<Server Name:PORT>/proxy.pac
全局代理地址填寫服務器地址和端口號即可
| 平臺 | 基礎設置 |
|---|---|
| Windows | 設置 > 工具 > 自定義代理 (客戶端內) |
| UWP | Windows 設置 > 網絡和 Internet > 代理 |
| Linux | 系統(tǒng)設置 > 網絡 > 網絡代理 |
| macOS | 系統(tǒng)偏好設置 > 網絡 > 高級 > 代理 |
| Android | WLAN > 修改網絡 > 高級選項 > 代理 |
| iOS | Surge,Shadowrocket 等添加配置 (來自 @HenryQW,@kongminhao) |
代理工具和方法有很多請自行探索
?方法 3. 調用接口
作為依賴庫使用
$ npm install nondanee/UnblockNeteaseMusic
const match = require('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 netease, qq, xiami, baidu, kugou, kuwo, migu, joox
* @return {Promise<Object>}
*/
match(418602084, ['netease', 'qq', 'xiami', 'baidu']).then(song => console.log(song))
