nondanee / UnblockNeteaseMusic

Revive unavailable songs for Netease Cloud Music
MIT License
17.4k stars 2.51k forks source link

食用指南 #22

Open nondanee opened 5 years ago

nondanee commented 5 years ago

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

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

在 follow 下面的步骤之前,希望你已仔细阅读过 README 中的 "使用" 部分,对配置过程也有初步了解

本篇为基础配置,所有平台通用 README 中提到对部分平台客户端有额外要求,相关教程参考其它带有紫色 "pinned" 标签的 issue

nondanee commented 5 years ago

安装 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,教程非常多,请善用搜索

nondanee commented 5 years ago

下载项目

使用 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 等工具快捷打开终端窗口

nondanee commented 5 years ago

安装依赖

不需要

启动方式

下述启动命令 node app.js 可以等效替换为

npx @nondanee/unblockneteasemusic
# npm i -g @nondanee/unblockneteasemusic
unblockneteasemusic
docker run [OPTIONS] nondanee/unblockneteasemusic

如果看不懂请直接忽略

nondanee commented 5 years ago

使用方法① (代理模式)

1. 直接启动

node app.js

2. 配置代理

各系统下的基础配置参见 README

由于网易云 Windows 客户端的 Bug,测试代理会报错 "该代理不可使用",实际并不影响 看到 Server running @ http://0.0.0.0:8080 之后出现如 MITM > ... 的请求日志即配置成功

nondanee commented 5 years ago

使用方法② (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 commented 5 years ago

其它配置

参数可叠加

开启严格模式

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 ...
johoney commented 5 years ago

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

johoney commented 5 years ago

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

nondanee commented 5 years ago

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

johoney commented 5 years ago

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

nondanee commented 5 years ago

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

johoney commented 5 years ago

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

johoney commented 5 years ago

bat比较实用

shugo-chara commented 5 years ago

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

nondanee commented 5 years ago

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

npm install pkg
npm run pkg

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

spencerwooo commented 5 years ago

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

nondanee commented 5 years ago

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

shugo-chara commented 5 years ago

谢谢~~ 发现有个问题,走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 commented 5 years ago

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

shugo-chara commented 5 years ago

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

nondanee commented 5 years ago

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

gqbre commented 5 years ago

----------------------------- 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; ` image

需要在所有客户端(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

  1. 右上角加号添加节点,填一个备注名比如 UnblockNetease
  2. 类型选择 HTTP (注意不是HTTPS)
  3. 服务器填写你搭建服务的 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 commented 5 years ago

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 commented 5 years ago

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

netstat -ano | find "80"
PLUSLEE commented 5 years ago

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

daorren commented 5 years ago

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

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

gqbre commented 5 years ago

@daorren

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

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

nondanee commented 5 years ago

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

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

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

当然你公网开的得是 http

daorren commented 5 years ago

@nondanee 你的意思我理解,问题是SS客户端的pac文件我并不能直接编辑。 @gqbre 提供的方式我也试了,if代码块会最终会变成SS客户端生成pac文件里,filter数组中的几个元素

gqbre commented 5 years ago

@daorren MAC 下的话用 Proxifier ,对指定软件走代理,专门对付那些不提供代理选项又不走系统代理的软件。 Win 下这种软件应该更多,找找看

nondanee commented 5 years ago

@daorren 抱歉哈,之前在 windows 上的 Shadowsocks 是可以直接编辑 PAC 文件的,之后试了下 ShadowsocksX-NG 确实不行 @gqbre 的建议挺好的,或者去试试别的 ss 客户端

daorren commented 5 years ago

@nondanee @gqbre 谢谢建议,我再看看

fantuanyufan commented 5 years ago

请问安卓手机怎么食用呢

nondanee commented 5 years ago

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

Kirding commented 5 years ago

putty一关闭,网易云就显示没网,好像app.js没有后台自动运行,用的是80端口那个方法,有解决办法吗

Kirding commented 5 years ago

putty一关闭,网易云就显示没网,好像app.js没有后台自动运行,用的是80端口那个方法,有解决办法吗

解决了,用pm2 app.js命令保持常驻后台

nondanee commented 5 years ago

@Kirding 简单地用 nohup node app.js & 也行哈

Kirding commented 5 years ago

@Kirding 简单地用 nohup node app.js & 也行哈

Get,thangks

cilone commented 5 years ago

感谢作者的付出!在Windows本地部署成功,美滋滋。请问可以部署在VPS上吗,让Android也可以轻松使用?

nondanee commented 5 years ago

@cilone 可以啊,一样的方法,或者用 docker 镜像也可以

cilone commented 5 years ago

@cilone 可以啊,一样的方法,或者用 docker 镜像也可以

设置好了,必须80端口吗?80端口被这个占用,部署的网站就打不开了-.-

Kirding commented 5 years ago

@cilone 可以啊,一样的方法,或者用 docker 镜像也可以

设置好了,必须80端口吗?80端口被这个占用,部署的网站就打不开了-.-

应该是可以直接在server.js里改的,说明文档里也有改端口命令,我的小机子纯粹用来装挂机脚本,所以80无所谓

nondanee commented 5 years ago

@cilone 用 hosts 的话只能 80 端口,代理的话随意 如果一定要用 80 的话可以在前面挂一个 nginx,用 server_name 做一下 proxy_pass 就好了

server {
        listen 80;
        server_name music.163.com;

        location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header HOST $server_name;
        }
}
110560 commented 5 years ago

安卓手机,,怎么用pac模式,,,我现在打开百度都是用的我服务器流量,,

nondanee commented 5 years ago

@110560 设置代理的时候有三个选项吧 "无", "手动", "代理自动配置",用自动,填上 http://?????/proxy.pac

110560 commented 5 years ago

谢谢上面那个问题解决了。。。。 还有个问题就是,必须保持ssh node app.js才会运行 请问这个emmmm怎么破

nondanee commented 5 years ago

@110560 简单的用 nohup,或者 pm2, forever 之类的

110560 commented 5 years ago

npm install forever -g 搞定谢谢 还有一个问题就是 有些曲子显示获取播放地址失败 这个只能靠音量增强了吗?emmmm 好难受手机root很烦人

nondanee commented 5 years ago

@110560 比如说哪首?