Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

食用指南 #22

Open
nondanee opened this issue Oct 13, 2018 · 220 comments

Comments

Projects
None yet
@nondanee
Copy link
Owner

commented Oct 13, 2018

应课代表 @theandychung 的 PR #21 增加详细使用教程
若仍有部署安装上的问题请在下方评论
改进意见、bug 反馈等请新开 issue

P.S. 参与讨论并解决了疑问之后,可以点右侧 Unsubscribe 取消提醒,以防邮箱爆满
P.P.S. clone 了旧代码的同学请定期 git pull 更新, fork 了旧代码的同学请定期 New pull request 同步

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 13, 2018

安装 Node.js

Windows

Download | Node.js
下载 .msi 安装包并安装

macOS

Download | Node.js
下载 .pkg 安装包并安装

Linux

Installing Node.js via package manager | Node.js
参照教程安装 nodejs

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 13, 2018

下载项目

使用 Git git clone https://github.com/nondanee/UnblockNeteaseMusic.git
进入项目根目录 cd UnblockNeteaseMusic

或在项目首页点击 Clone or download 绿色按钮,选择 Download ZIP 并解压
打开项目目录,按住 Shift 后点击右键,选择 "在此处打开 PowerShell 窗口(S)"

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 13, 2018

安装依赖

不需要

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 13, 2018

使用方法① (代理模式)

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 > ... 的请求日志即配置成功

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 13, 2018

使用方法② (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

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 13, 2018

其它配置

参数可叠加

开启严格模式

node app.js -s ...

设置搜索的音源(有序)

默认为 netease qq xiami baidu,排在越前优先级越高,启用越多网络开销越大

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 ...

@nondanee nondanee added the pinned label Oct 13, 2018

@johoney

This comment has been minimized.

Copy link

commented Oct 14, 2018

这对于没有基础的人来说太难了,我用node.js里面的command通过 CD 进入目录来安装commander,然后输入 node app.js 它提示 Server running @ http://0.0.0.0:8080,可是通过客户端设置代理却说代理不可用

@johoney

This comment has been minimized.

Copy link

commented Oct 14, 2018

能出个简易的视频教程吗?@nondanee,windows下真的不会弄

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 14, 2018

@johoney 抱歉啊忘记说明了,Windows客户端设置代理报不可用是正常的😂,网易云自己的bug,只要running提示底下有新的代理请求日志就是成功了

@johoney

This comment has been minimized.

Copy link

commented Oct 20, 2018

@nondanee 好的谢谢,已经成功解决了,不过我有个问题可以设置类似快捷启动的东西,然后打开这个就能迅速启动代理吗,我希望可以把它加入到shell:startup,这样就不用那么麻烦的启动了。记得之前这个项目是有exe的,不过最近失效了所以我才使用了这个最新的程序了。

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 20, 2018

@johoney
因为 release 麻烦啊,所以不发可执行文件了😂
项目根目录里新建一个 .bat 文件,写入 node app,之后双击就可以启动了
或者在项目根目录执行 npm link,之后在命令行或者 win +r 里直接输入 unblockneteasemusic 就能启动

@johoney

This comment has been minimized.

Copy link

commented Oct 20, 2018

@nondanee 太谢谢你了,开发者真棒!

@johoney

This comment has been minimized.

Copy link

commented Oct 20, 2018

bat比较实用

@shugo-chara

This comment has been minimized.

Copy link

commented Oct 21, 2018

@nondanee 居然贴心的出了这么详细的图文教程拉过来猛抱抱~
最近好像用之前打包好的文件不太稳定,新版不提供打包好的文件有点点不便。。
顺便问一下有办法在路由器里做启动么,省的每台设备都要启动一下。。

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 21, 2018

@shugo-chara
只有文没有图😂
更新很频繁,打包太累了,有 node 环境的话你可以自己打包

npm install pkg
npm run pkg

额路由器上运行的话估计不太现实。。。局域网里找一台常开的电脑跑着就行了

@spencerwooo

This comment has been minimized.

Copy link

commented Oct 22, 2018

建议把这里的说明添加到 Wiki 里面,感觉大家不会来 Issue 里面找教程的。(逃走 ε=ε=ε=┏(゜ロ゜;)┛

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Oct 22, 2018

@spencerwoo98 因为写wiki里不好回复啊😥

@shugo-chara

This comment was marked as off-topic.

Copy link

commented Oct 23, 2018

谢谢~~
发现有个问题,走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 现在几乎每天打开都会出现上述情况。。求助。

@nondanee

This comment was marked as off-topic.

Copy link
Owner Author

commented Oct 26, 2018

@shugo-chara
不好意思了这周有两个midterm两个assignment,才空下来
遇到问题最好能新开一个 issue,我先在这里回你了
我测试了没有问题,是提示这个吗?还是别的?能不能录个屏?
2018-10-26 16 20 28
这个的话随便点别的地方再切换回来就好了

@shugo-chara

This comment was marked as off-topic.

Copy link

commented Nov 2, 2018

@nondanee 哈哈我也刚忙完看到回复。就是你图里的样子,但是点哪里都提示载入中,然后过一会儿就是网络不给力。重装网易云和重新自带代理都不行。
解决方法就是要么等,等他自己跳回http,要么就重启或者断网重连。

@nondanee

This comment was marked as off-topic.

Copy link
Owner Author

commented Nov 3, 2018

@shugo-chara 这个没办法了,代理是没办法直接控制程序的,只能等了

@gqbre

This comment has been minimized.

Copy link

commented Nov 7, 2018

----------------------------- 19.06.28 更新-----------------------------

mac 搭配 Proxifier 配置参考

mac 需要使用 **https 代理 两个程序:NeteaseMusic;com.apple.WebKit.Networking
目标代理域名我把相关的全写上去了:.music.163.com;.music.126.net;mam.netease.com;api.iplay.163.com
应该只需要写:.music.163.com;.music.126.net 就够了,看自己
image

需要在所有客户端(mac, iPhone 等)安装仓库里的证书并设置信任(参考#65 (comment)
服务端启动命令为 node app.js -p port1:port2,客户端需要使用的是 port1 端口(port2 是用来内部转发的 https 端口,随便写一个就行)
放在 VPS 上跑也一样,客户端安装并信任了证书就可以了

iOS 使用配置参考

iOS 上我使用的是 Shadowrocket (参考:#65 (comment)

  1. 右上角加号添加节点,填一个备注名比如 UnblockNetease
  2. 类型选择 HTTP (注意不是HTTPS)
  3. 服务器填写你的 IP(本地跑 127.0.0.1 或者 VPS 的 IP/域名)
  4. 端口填写你启动服务的端口号 (就是 port1)
  5. 然后底部找到配置 点击本地文件 -> default.conf(你当前使用的配置) -> 编辑配置 -> 添加规则
  6. 添加下面三条规则,选项都选择刚添加的 UnblockNetease 节点,类型和用户代理/域名如下
  • USER-AGENT: NeteaseMusic*
  • DOMAIN-SUFFIX: music.163.com
  • DOMAIN-SUFFIX: music.126.net

PS. 记得安装证书并信任,添加了之后不行的话重置一下 Shadowrocket 再试

丢个链接,详细教程 https://www.sheyilin.com/2019/06/unblockneteasemusic/

@PLUSLEE

This comment has been minimized.

Copy link

commented Nov 7, 2018

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)
@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Nov 7, 2018

@PLUSLEE 管理员身份启动命令行试一下,也检查一下80端口是否被其它程序使用

netstat -ano | find "80"
@PLUSLEE

This comment has been minimized.

Copy link

commented Nov 7, 2018

@nondanee 谢谢,跑通了...客户端少了一步。万分感谢!从即刻App关注的“网路冷眼”微博上发现这个好东西

@daorren

This comment has been minimized.

Copy link

commented Nov 15, 2018

我的使用情况是,
服务想安装在公网服务器上,但不能运行在80端口。——修改hosts文件方式不可用
本机运行一个SS客户端,系统代理已经被它的pac地址占据了——修改系统代理也不可用

SS的pac文件是工具生成的,所以还不好做修改
感觉需要一个工具串联不同代理了,不知道有没有这样的软件

@gqbre

This comment has been minimized.

Copy link

commented Nov 15, 2018

@daorren

  1. 好像无解
  2. SS 客户端,代理设置,编辑 pac 用户自定规则,试试看
@daorren

This comment has been minimized.

Copy link

commented Nov 15, 2018

@gqbre
这个理论上没用的,SS的pac文件是用gfwlist2pac生成的,自定义规则那里只是配置了需要代理的数据项

@nondanee

This comment was marked as outdated.

Copy link
Owner Author

commented Nov 15, 2018

@daorren 有用的
楼上 @gqbre 是正解,编辑本地 PAC 文件,在 FindProxyForURL 里加 if
不过因为屏蔽了网易云的 HTTPS 请求,设为系统代理的话,网页版是用不了的,浏览器上要给网易云排除一下系统代理

桌面端代理这两个 host 就够了

if (host == 'music.163.com' || host == 'interface.music.163.com') {
	return 'PROXY <Server Name>:<Server PORT>'
}

当然你公网开的得是 http

@bugme2

This comment has been minimized.

Copy link

commented Jun 19, 2019

路由器自动代理网易云能不能写一个,全局代理倒是能用,但是很多毛病,比如QQ授权登陆不上,下载东西错误

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 19, 2019

@bugme2
请问你路由器是怎么全局代理的?把 http proxy 转换成隧道?怎么转换的?
其它的 http proxy 有没有这个问题?比如 goproxy / privoxy 等

现在有 PAC 自动代理,你想要什么样的?

@15d23

This comment has been minimized.

Copy link

commented Jun 20, 2019

我是直接 node app.js 运行的, node 版本是 12.4.0. 运行后显示:HTTP Server running @ http://0.0.0.0:8080。然后我在 mac 下使用三方软件代理了云音乐的所有链接到:https://127.0.0.1:8080. 。测试《周杰伦的床边故事》发现还是灰色的。但Windows 下直接填写代理是可以运行的。

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 20, 2019

@15d23
README 里有写哦

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

@bugme2

This comment has been minimized.

Copy link

commented Jun 20, 2019

@nondanee
额...就是这样
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 端口
这样可以用,但是毛病多。
大佬能不能写个只代理网易云的iptables规则,或者配合dnsmasq用也行。

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 20, 2019

@bugme2
已经有人做了,参考这个吧 👇 (我没测试条件)
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=692049&page=9#pid4104303

BTW 这是个 http 代理,只能处理 http 请求,tcp 流量不一定都是 http 的,所以转发全部 tcp 肯定是不行的

@bugme2

This comment has been minimized.

Copy link

commented Jun 20, 2019

@nondanee
我按照恩山的教程弄了一下,电脑可以用
但是手机无效,手机必须全局代理才生效。

规则我是这样写的
ipset create music hash:ip
iptables -t nat -N cloud_music
iptables -t nat -A cloud_music -p tcp -m set --match-set music dst -j REDIRECT --to-ports 8888
iptables -t nat -I PREROUTING -p tcp -j cloud_music

dnsmasq已经加了对应的域名,完成后电脑生效,手机无效,是何原因?

@zhhsh

This comment has been minimized.

Copy link

commented Jun 20, 2019

使用代理的方式可以正常执行,但日常要使用SS,所以改用修改hosts方式。
使用修改hosts方式(SS关掉了),终端输出如下,客户端一直没有网络连接,不知道是哪里出错了?
macos,客户端按照教程中间退回过1.5,又升到了2.0(700)

Node.js:

mbp:~ zhhsh$ /Users/zhhsh/Desktop/UnblockNeteaseMusic-master/app.js -p 80
HTTP Server running @ http://0.0.0.0:80
MITM > music.163.com 
MITM > music.163.com
MITM > music.163.com
...

hosts:

mbp:~ zhhsh$ cat /etc/hosts
# SwitchHosts!

# My hosts
...
#Unbblock Netease cloud music
127.0.0.1 music.163.com
127.0.0.1 interface.music.163.com
...
@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 21, 2019

@bugme2
移动端有 httpdns 和 IP 直连
ipset 里面一个规则不够,你把 PAC 里有的 host 全写进去吧

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 21, 2019

@zhhsh
-p 80:443

@bugme2

This comment has been minimized.

Copy link

commented Jun 21, 2019


都加上了,也重启了dnsmasq,还是只有电脑生效,有毒啊

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 21, 2019

@bugme2
底下的 IP 可能需要 ipset add music xxx.xxx.xxx.xxx,应该不是写在 dnsmasq 里面

@bugme2

This comment has been minimized.

Copy link

commented Jun 21, 2019

@nondanee
我试过,不行的,真的很奇怪,试了无数种操作,就是全局才有效

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 21, 2019

@bugme2
那么在移动端直接使用 WLAN 的 PAC 代理可以吗?

@bugme2

This comment has been minimized.

Copy link

commented Jun 21, 2019

@nondanee
可以,但是我想让所有连接路由的设备自动代理

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 21, 2019

@bugme2
那我没办法了,你去恩山问问吧

@zhhsh

This comment has been minimized.

Copy link

commented Jun 21, 2019

@nondanee
443加上去还是无效。。
找了一下,通过另一个途径修改了ss配置文件解决了和ss共存的问题

@qq517351411

This comment has been minimized.

Copy link

commented Jun 22, 2019

./unblockneteasemusic-linux

image
这是怎么回事呢

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jun 22, 2019

@qq517351411
打包的下载的二进制文件有问题?或者和系统架构不符?或者内存不够?(不清楚)

@frankli0324

This comment has been minimized.

Copy link

commented Jun 26, 2019

./unblockneteasemusic-linux

image
这是怎么回事呢

下次crash的时候执行一下dmesg截图

@Monster12138

This comment has been minimized.

Copy link

commented Jul 1, 2019

严格模式-s后的参数格式是怎么样的,可以给个例子吗

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jul 1, 2019

@Monster12138
后面不需要参数了,只要 -s 就行了

@zengxiaoliang

This comment has been minimized.

Copy link

commented Jul 19, 2019

#22 (comment)

大佬,
node app.js -o joox qq ... 使用这个启动后,并没有按照配置的顺序去获取音源,仍然从网易获取的;有其他办法能完成音源顺序配置呢?

求指导。。。。

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jul 19, 2019

@zengxiaoliang
我试了下没问题啊,就是配置顺序的
你截个图说明一下吧

@zengxiaoliang

This comment has been minimized.

Copy link

commented Jul 22, 2019

@zengxiaoliang
我试了下没问题啊,就是配置顺序的
你截个图说明一下吧

@nondanee

  1. 启动方式
    sudo node app.js -o joox kuwo kugou baidu xiami migu qq
  2. 启动后监听
    HTTP Server running @ http://0.0.0.0:9080
    HTTPS Server running @ https://0.0.0.0:443
    3.播放
    第一首
    TUNNEL > localhost:443
    TUNNEL > localhost:443
    MITM > music.163.com (ssl)
    TUNNEL > localhost:443
    TUNNEL > localhost:443
    MITM > music.163.com (ssl)
    MITM > music.163.com (ssl)

第二首
MITM > music.163.com (ssl)
[548823551] 平凡之路 (Live)
http://tyst.migu.cn/public/product08/xxxxx.mp3
MITM > music.163.com (ssl)

疑问:
第一首并没有请求非网易的音源,而第二首从Migu获取的音源;也就是说网易有音源的时候从网易,没有的时候才从第三方(本地无缓存)。

期待实现功能: 所有音源获取均按照配置顺序获取(因为migu\kuwo 音源都是高品质)

@nondanee

This comment has been minimized.

Copy link
Owner Author

commented Jul 22, 2019

@zengxiaoliang
是的,网易云听不了才走第三方,客户端本身能听的歌不会匹配
-o 里的 netease 是网易云旧链(README 里写了),网易云自己已经弃用了,所以也算第三方

为什么要做?网易云音质不够?咪咕高品也就 320K 啊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.