UnblockNeteaseMusic
UnblockNeteaseMusic copied to clipboard
食用指南
应课代表 @theandychung 的 PR #21 增加详细使用教程 若仍有部署安装上的问题请在下方评论 改进意见、bug 反馈等请新开 issue
P.S. 参与讨论并解决了疑问之后,可以点右侧 Unsubscribe 取消提醒,以防邮箱爆满
P.P.S. clone 了旧代码的同学请定期 git pull
更新, fork 了旧代码的同学请定期 New pull request 同步
在 follow 下面的步骤之前,希望你已仔细阅读过 README 中的 "使用" 部分,对配置过程也有初步了解
本篇为基础配置,所有平台通用 README 中提到对部分平台客户端有额外要求,相关教程参考其它带有紫色 "pinned" 标签的 issue
安装 Node.js
使用 Docker 的同学请忽略
Windows
Download | Node.js 下载 .msi 安装包并安装
macOS
Download | Node.js 下载 .pkg 安装包并安装
Linux
Installing Node.js via package manager | Node.js 参照教程安装 nodejs
当然用 macOS 的 Homebrew,Windows 的 Scoop 等包管理器安装也可以,根据个人喜好选择即可
Android 平台的终端模拟器如 Termux,NeoTerm 等也可以安装 Node.js,教程非常多,请善用搜索
下载项目
使用 Docker,npx,npm 全局安装的同学请忽略
方法❶ 使用 Git 克隆
git clone https://github.com/nondanee/UnblockNeteaseMusic.git #克隆项目仓库
cd UnblockNeteaseMusic #进入项目根目录
方法❷ 下载源码压缩包
在项目首页点击 Clone or download 绿色按钮,选择 Download ZIP 并解压
或在 Release 页面下载 Assets 中的 Source code (zip)
或 Source code (tar.gz)
压缩包并解压
打开项目目录后
Windows 用户请按住 Shift 后点击右键,选择 "在此处打开 PowerShell 窗口(S)" macOS 用户可以借助 OpenInTerminal,Go2Shell 等工具快捷打开终端窗口
~~安装依赖~~
不需要
启动方式
下述启动命令 node app.js
可以等效替换为
npx @nondanee/unblockneteasemusic
# npm i -g @nondanee/unblockneteasemusic
unblockneteasemusic
docker run [OPTIONS] nondanee/unblockneteasemusic
如果看不懂请直接忽略
使用方法① (代理模式)
1. 直接启动
node app.js
2. 配置代理
各系统下的基础配置参见 README
-
PAC 模式
填写脚本地址 http://127.0.0.1:8080/proxy.pac
-
全局代理模式
填写服务器地址 127.0.0.1
和端口号 8080
由于网易云 Windows 客户端的 Bug,测试代理会报错 "该代理不可使用",实际并不影响 看到
Server running @ http://0.0.0.0:8080
之后出现如MITM > ...
的请求日志即配置成功
使用方法② (hosts 模式)
1. 寻找网易云服务器的IP
ping music.163.com
得到类似 223.252.199.66 的IP
2. 向hosts文件添加记录
127.0.0.1 music.163.com
127.0.0.1 interface.music.163.com
Windows hosts
C:\Windows\System32\drivers\etc\hosts
Linux/macOS hosts/etc/hosts
3. 设置参数启动
node app.js -p 80 -f 223.252.199.66
若在 linux/macOS下报错
Error: listen EACCES 0.0.0.0:80
请加sudo
其它配置
参数可叠加
开启严格模式
node app.js -s ...
设置搜索的音源 (有序)
默认为
qq kuwo migu
,排在越前优先级越高,启用越多网络开销越大
node app.js -o joox qq ...
使用自定义端口
node app.js -p 5000 ...
使用 jixun 的反代服务器
node app.js -f 79.137.38.20 ...
使用上游 http / https 代理
node app.js -u http://127.0.0.1:1080 ...
这对于没有基础的人来说太难了,我用node.js里面的command通过 CD
进入目录来安装commander,然后输入 node app.js
它提示 Server running @ http://0.0.0.0:8080
,可是通过客户端设置代理却说代理不可用
能出个简易的视频教程吗?@nondanee,windows下真的不会弄
@johoney 抱歉啊忘记说明了,Windows客户端设置代理报不可用是正常的😂,网易云自己的bug,只要running提示底下有新的代理请求日志就是成功了
@nondanee 好的谢谢,已经成功解决了,不过我有个问题可以设置类似快捷启动的东西,然后打开这个就能迅速启动代理吗,我希望可以把它加入到shell:startup,这样就不用那么麻烦的启动了。记得之前这个项目是有exe的,不过最近失效了所以我才使用了这个最新的程序了。
@johoney
因为 release 麻烦啊,所以不发可执行文件了😂
项目根目录里新建一个 .bat 文件,写入 node app
,之后双击就可以启动了
或者在项目根目录执行 npm link
,之后在命令行或者 win +r 里直接输入 unblockneteasemusic
就能启动
@nondanee 太谢谢你了,开发者真棒!
bat比较实用
@nondanee 居然贴心的出了这么详细的图文教程拉过来猛抱抱~ 最近好像用之前打包好的文件不太稳定,新版不提供打包好的文件有点点不便。。 顺便问一下有办法在路由器里做启动么,省的每台设备都要启动一下。。
@shugo-chara 只有文没有图😂 更新很频繁,打包太累了,有 node 环境的话你可以自己打包
npm install pkg
npm run pkg
额路由器上运行的话估计不太现实。。。局域网里找一台常开的电脑跑着就行了
建议把这里的说明添加到 Wiki 里面,感觉大家不会来 Issue 里面找教程的。(逃走 ε=ε=ε=┏(゜ロ゜;)┛
@spencerwoo98 因为写wiki里不好回复啊😥
谢谢~~ 发现有个问题,走127.0.0.1:8080/proxy.pac自动代理的话,有时候正常运行,但是网易云提示无网络连接。终端里反馈都是https,并没有自动降级http。断开重连wifi,或者重启后又莫名好了。 mac系统,不定时出现。检查了网络和端口以及自动代理都无异常。
失败时:
Server running @ http://0.0.0.0:8080
HTTPS > https://music.163.com:443
HTTPS > https://music.163.com:443
HTTPS > https://music.163.com:443
重连或者重启或者等一阵子后:
HTTPS > https://music.163.com:443
HTTPS > https://music.163.com:443
HTTPS > https://scss.adobesc.com:443
HTTP > http://music.163.com
HTTP > http://music.163.com
HTTP > http://music.163.com
HTTPS > https://scss-prod-an1.adobesc.com:443
HTTP > http://music.163.com
HTTP > http://music.163.com
HTTP > http://music.163.com
难道是我网络环境问题吗?现在换的sony 2g光,速度应该没问题,而且之前用sb的光也有这个问题。
@nondanee
ps 现在几乎每天打开都会出现上述情况。。求助。
@shugo-chara
不好意思了这周有两个midterm两个assignment,才空下来
遇到问题最好能新开一个 issue,我先在这里回你了
我测试了没有问题,是提示这个吗?还是别的?能不能录个屏?
这个的话随便点别的地方再切换回来就好了
@nondanee 哈哈我也刚忙完看到回复。就是你图里的样子,但是点哪里都提示载入中,然后过一会儿就是网络不给力。重装网易云和重新自带代理都不行。 解决方法就是要么等,等他自己跳回http,要么就重启或者断网重连。
@shugo-chara 这个没办法了,代理是没办法直接控制程序的,只能等了
----------------------------- 19.12.16 更新-----------------------------
网易云音乐 Mac 客户端更新
目标代理域名更新为:*.music.163.com;*.music.126.net;*.netease.com;
----------------------------- 19.06.28 更新-----------------------------
mac 搭配 Proxifier 配置参考
mac 需要使用 **https 代理 两个程序:NeteaseMusic;com.apple.WebKit.Networking
目标代理域名只需要写:*.music.163.com;*.music.126.net;*.netease.com;
需要在所有客户端(mac, iPhone 等)安装仓库里的证书并设置信任(参考https://github.com/nondanee/UnblockNeteaseMusic/issues/65#issuecomment-493718439 )
有人反映使用仓库的证书 iOS 不能正常使用,我使用的是自签证书 暂时没有问题。
服务端启动命令为 node app.js -p port1:port2
,客户端需要使用的是 port1 端口(port2 是用来内部转发的 https 端口,随便写一个就行)
放在 VPS 上跑也一样,客户端安装并信任了证书就可以了
iOS 使用配置参考
iOS 上我使用的是 Shadowrocket (参考:https://github.com/nondanee/UnblockNeteaseMusic/issues/65#issue-439169649 )
- 右上角加号添加节点,填一个备注名比如 UnblockNetease
- 类型选择 HTTP (注意不是HTTPS)
- 服务器填写你搭建服务的 IP 地址
- 端口填写你启动服务的端口号 (就是 port1)
- 然后底部找到配置 点击本地文件 -> default.conf(你当前使用的配置) -> 编辑配置 -> 添加规则
- 添加下面三条规则,选项都选择刚添加的 UnblockNetease 节点,类型和用户代理/域名如下
- USER-AGENT: NeteaseMusic*
- DOMAIN-SUFFIX: music.163.com
- DOMAIN-SUFFIX: music.126.net
PS. 记得安装证书并信任,添加了之后不行的话重置一下 Shadowrocket 再试
丢个链接,详细教程 https://www.sheyilin.com/2019/06/unblockneteasemusic/
Windows碰到这种情况该怎么办呢?小白一个,只看得懂第二种方法,然而会直接报错...
G:\NeteaseMusic\UnblockNeteaseMusic-master>node app.js -p 80 -f 59.111.160.197
Server running @ http://0.0.0.0:80
events.js:167
throw er; // Unhandled 'error' event
^
Error: listen EACCES 0.0.0.0:80
at Server.setupListenHandle [as _listen2] (net.js:1269:19)
at listenInCluster (net.js:1334:12)
at Server.listen (net.js:1421:7)
at Promise.all.then.result (G:\NeteaseMusic\UnblockNeteaseMusic-master\app.js:58:9)
at process._tickCallback (internal/process/next_tick.js:68:7)
Emitted 'error' event at:
at emitErrorNT (net.js:1313:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
@PLUSLEE 管理员身份启动命令行试一下,也检查一下80端口是否被其它程序使用
netstat -ano | find "80"
@nondanee 谢谢,跑通了...客户端少了一步。万分感谢!从即刻App关注的“网路冷眼”微博上发现这个好东西
我的使用情况是, 服务想安装在公网服务器上,但不能运行在80端口。——修改hosts文件方式不可用 本机运行一个SS客户端,系统代理已经被它的pac地址占据了——修改系统代理也不可用
SS的pac文件是工具生成的,所以还不好做修改 感觉需要一个工具串联不同代理了,不知道有没有这样的软件
@daorren
- 好像无解
- SS 客户端,代理设置,编辑 pac 用户自定规则,试试看
@gqbre 这个理论上没用的,SS的pac文件是用gfwlist2pac生成的,自定义规则那里只是配置了需要代理的数据项
@daorren 有用的
楼上 @gqbre 是正解,编辑本地 PAC 文件,在 FindProxyForURL
里加 if
不过因为屏蔽了网易云的 HTTPS 请求,设为系统代理的话,网页版是用不了的,浏览器上要给网易云排除一下系统代理
桌面端代理这两个 host 就够了
if (host == 'music.163.com' || host == 'interface.music.163.com') {
return 'PROXY <Server Name>:<Server PORT>'
}
当然你公网开的得是 http
@nondanee 你的意思我理解,问题是SS客户端的pac文件我并不能直接编辑。 @gqbre 提供的方式我也试了,if代码块会最终会变成SS客户端生成pac文件里,filter数组中的几个元素