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

进阶配置 #48

Open
nondanee opened this issue Mar 29, 2019 · 116 comments
Open

进阶配置 #48

nondanee opened this issue Mar 29, 2019 · 116 comments
Labels
pinned Something is important

Comments

@nondanee
Copy link
Owner

除了基本的命令行参数,在源码中还预留了一些可配置位置
如果有能力,可以了解一下这个部分

@nondanee
Copy link
Owner Author

nondanee commented Mar 29, 2019

自签证书

macOS 客户端 700 以上版本无法通过握手后返回空数据的方式降级 https 请求 (如有别的降级方式,请告知我),Linux 客户端 1.2 以上版本有同样问题,其它平台暂时还未遇到

可以直接换用旧版本
http://d1.music.126.net/dmusic/NeteaseMusic_2.0.0_700_web.dmg
http://d1.music.126.net/dmusic/NeteaseMusic_2.0.0_690_web.dmg
http://d1.music.126.net/dmusic/NeteaseMusic_1.5.10_636_web.dmg

新版通过自签证书直接代理 https 流量能够解决此问题 (同时支持 hosts 模式和代理模式)
可以直接使用仓库里的证书,若需自己签发证书,步骤如下 (需要用到 OpenSSL)
仓库未公开 CA 私钥,若担心作者作恶,请自行创建 CA 签发证书,感谢 @ITJesse 提醒 #166

# 生成 CA 私钥
openssl genrsa -out ca.key 2048

# 生成 CA 证书 ("YOURNAME" 处填上你自己的名字)
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 -out ca.crt -subj "/C=CN/CN=UnblockNeteaseMusic Root CA/O=YOURNAME"

# 生成服务器私钥
openssl genrsa -out server.key 2048

# 生成证书签发请求
openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/L=Hangzhou/O=NetEase (Hangzhou) Network Co., Ltd/OU=IT Dept./CN=*.music.163.com"

# 使用 CA 签发服务器证书
openssl x509 -req -extfile <(printf "extendedKeyUsage=serverAuth\nsubjectAltName=DNS:music.163.com,DNS:*.music.163.com") -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

上述步骤完成后

将服务器私钥 (server.key) 和服务器证书 (server.crt) 拷贝到仓库中覆盖原有文件 (若使用 docker,可通过添加 -v /path/to/server.crt:/usr/src/app/server.crt -v /path/to/server.key:/usr/src/app/server.key 参数映射本地路径覆盖原有文件),再将 CA 证书 (ca.crt) 安装到系统;如果不自行签发,直接安装仓库里的 CA 证书 (ca.crt) 即可

CA 证书需要手动配置为信任,切记
(macOS 上信任证书的简便步骤 👉 #463)
(macOS 上若手动安装证书无效,请设置 Safari 通过代理后打开 music.163.com,点击 "继续访问" 安装证书 👉 #593 (comment))
(iOS 上容易遗漏的步骤 👉 https://support.apple.com/zh-cn/HT204477)

之后在启动命令中增加 https 监听端口,格式为 -p <http port>:<https port>,hosts 模式应为 80:443,代理模式随意,两个端口号不同即可

自签证书下网易云网页版是可用的,但是阻止变灰无效,因为网页内嵌加密,需要脚本配合

@nondanee
Copy link
Owner Author

nondanee commented Mar 29, 2019

国内中继

测试过除咪咕外,QQ、虾米、百度、酷狗、酷我 API 都有海外墙,修改请求头无法绕过,必须通过国内代理,而音源文件本身没有海外请求限制,不需要代理。
考虑大陆服务器带宽比较珍贵,全局代理代价太大,增加了中继 "RPC"

目前仅提供 QQ 音源的公共中继服务
因 QQ 128k 音源可以直接使用测试 vkey,默认未启用中继服务

其它音源需要从国内请求的部分都预留了降级逻辑,不过在源码里屏蔽了,需要注释掉这个限制

if(path != 'qq/ticket') return Promise.reject()

中继服务器的源码为 bridge.js,部署后修改 insure.js 的 host 变量为自己的服务器地址即可

P.S. 来自套路云、良心云的请求会被虾米拒绝

@nondanee nondanee added the pinned Something is important label Mar 29, 2019
@nondanee nondanee pinned this issue Mar 29, 2019
@happy-proxy
Copy link

happy-proxy commented Apr 1, 2019

Hi,我使用仓库里面默认的证书,安装到Mac中,然后经用surge代理,surge端显示无效的证书链是个啥情况?(Mac客户端没升级之前一直都是OK的)

@nondanee
Copy link
Owner Author

nondanee commented Apr 1, 2019

@iDesperad0
需要在 "钥匙串" 里信任根证书,此步骤是否遗漏?
装完证书应该需要重启一下应用,chrome是这样的好像。

@happy-proxy
Copy link

妈耶,是我的疏忽!因为之前一直用代理模式而把端口设置成8080,改成hosts模式忘了改回80了,刚才改成80已经OK了!只不过以前一直用的代理模式已经行不通了,感觉有点奇怪,有时间我再琢磨琢磨,也可能是surge的锅。
总之不论哪个方法最后还是成了,而且320Kbps是真香啊!非常非常感谢你哈!

@nondanee
Copy link
Owner Author

nondanee commented Apr 2, 2019

@iDesperad0 你可以测试一下用系统代理,看看有没有问题,我试过应该是可以的。

@happy-proxy

This comment has been minimized.

@happy-proxy

This comment has been minimized.

@nondanee

This comment has been minimized.

@happy-proxy

This comment has been minimized.

@nondanee
Copy link
Owner Author

nondanee commented May 10, 2019

@LeticiaAnna
不支持,README 里写了,设置 -t user:password 用不了(当然你可以试试看,switchyomega 里可以用)
上游代理也不支持用户名密码

不好意思我手抖把你的评论删掉了==

Repository owner deleted a comment from LeticiaAnna May 10, 2019
@onewayticket255
Copy link

我这里测试卸载干净再装Mac 2.0(730),直连基本都用http
Snipaste_2019-05-10_16-11-17.png

CleanMyMac卸载原始版本再安装    
版本                直连                   连unblockserver
1.5.10 636      music.163.com:443      可以降级 https 请求
2.0    700      music.163.com:443      不可以降级 https 请求
2.0    730      http

覆盖升级                            直连           连unblockserver
1.5.10 636  --> 2.0 700      music.163.com:443  不可以降级 https 请求
2.0    700  --> 2.0 730      http

这是今天下午测的。这结果很迷,和之前我的测试结果不太一样。

@app-AZ
Copy link

app-AZ commented May 10, 2019

进阶成功,我想问一下老哥,-e http://xxx.xxx:999 接域名的话,能不能改你的js文件来进行操作,我想用PM2来进行node后台,但是找不到pm2 脚本配置命令该怎么写,如果能改到js文件里面那我就直接PM2 app.js就可以了,希望老哥能说一下js文件改哪里

@nondanee
Copy link
Owner Author

nondanee commented May 10, 2019

@app-AZ
pm2 start app.js -- -e http://xxx.xxx:999

@nondanee
Copy link
Owner Author

@onewayticket255
我自己没测过 726 和 730,如果默认 http 的话那也挺好的,方便 MITM,之后我去确认一下

但是 700 我这边结果还是:直接安装无法降级,在 636 降级了,覆盖上来就可以降级
关键点不是覆盖,而是在 636 降级 http 成功了(如果在 636 没降级过,覆盖 700 也还是不能降级的)

其实装了证书的话,降不降级就无所谓了

降级和自签证书这两个 trick 都很容易封的,且用且珍惜

@CrazyMelody
Copy link

CrazyMelody commented Jun 3, 2019


Hosts模式,CA证书信任了,node app.js -p 80:443 -f 103.126.92.132启动后,列表不灰了,但是播放不出来,请问什么原因?日志中的链接我在浏览器是秒开的,版本774

@nondanee
Copy link
Owner Author

nondanee commented Jun 3, 2019

@CrazyMelody
看 log 的话,443 的端口没有被请求,有的话应该是 MITM > music.163.com (ssl)
你试一下在 chrome 里打开 https://music.163.com 看看会不会提示不安全,期间我换过一次证书不知道你有没有重新安装

因为 isure.stream log 说明是有请求的
猜测可能被 QQ ban 了?(user-agent 会被查出来) 如果可以的话

return resolve(ctx.proxyRes = proxyRes)

在这个位置 print 一下 url 和 proxyRes.statusCode 试一下

抱歉我没试测试 774 版本,你可以新建一个 issue 看看别人的反馈

@CrazyMelody
Copy link

@CrazyMelody
看 log 的话,443 的端口没有被请求,有的话应该是 MITM > music.163.com (ssl)
你试一下在 chrome 里打开 https://music.163.com 看看会不会提示不安全,期间我换过一次证书不知道你有没有重新安装

因为 isure.stream log 说明是有请求的
猜测可能被 QQ ban 了?(user-agent 会被查出来) 如果可以的话

return resolve(ctx.proxyRes = proxyRes)

在这个位置 print 一下 url 和 proxyRes.statusCode 试一下
抱歉我没试测试 774 版本,你可以新建一个 issue 看看别人的反馈

感谢回复,找到问题了,因为公司网络有个诡异的问题,用chrome打不开大部分https网站,得科学上网才可以,用safari则秒开。。。我把网络换成流量就正常了

@nondanee
Copy link
Owner Author

nondanee commented Jun 3, 2019

@CrazyMelody 好的

@asplun
Copy link

asplun commented Jun 7, 2020

最近显示*.music.163.com证书过期。。。

@nondanee
Copy link
Owner Author

@asplun 证书在仓库里,过期前就重新签了,你自己同步

@dpmaycry
Copy link

dpmaycry commented Jul 13, 2020

自签证书直接代理 https

请教下 我用的docker镜像:docker run --name neteasymusic -v /root/ssl/server.crt:/usr/src/app/server.crt -v /root/ssl/server.key:/usr/src/app/server.key -d -p 90:8080 nondanee/unblockneteasemusic,然后网络高级设置了pac地址(地址可正常下载pac文件),也信任了自签名ca证书,但是打开后网易云音乐提示网络错误(mac 2.3.2 (834))我是不是遗漏了哪一步。。。


各种翻issue 解决3个问题,感谢牛逼的作者~~
1.我生成的证书有问题 重新按照作者的方式生成
2.中途换用了node方式启动,相同证书 docker启动不行,所以建议还是直接用node+源码方式运行
3.如果要支持iOS客户端,则需要1 安装你的自签名证书,2 开启https://music.163.com的转发 就是forever start UnblockNeteaseMusic/app.js -p 8080:8081 -s -e https://music.163.com

@saltfishh
Copy link

请问是否能默认下载最高音质的音乐

@Kwaiyu
Copy link

Kwaiyu commented Jan 8, 2021

大家好,我在运行第四个命令使用 CA 签发服务器证书时出错:
openssl x509 -req -extfile <(printf "extendedKeyUsage=serverAuth\nsubjectAltName=DNS:music.163.com,DNS:*.music.163.com") -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
QQ截图20210108235819
QQ截图20210109000104

QQ截图20210109000140

我使用openssl 1.1.1稳定开发版,并且前三个命令没有报错,(报错的命令在管理员cmd,管理员powershell,管理员git bush全都试过)请问是什么原因,应该怎么解决?

它在Linux系统上正常.

使用命令:
node app.js -p 8000 在windows 正常 IOS不能用
使用命令:
node app.js -s -e https://music.163.com -p 8000:8001 在IOS正常,windows不能用
请问这该如何解决?

@Xm798
Copy link

Xm798 commented Mar 5, 2021

大家好,我在运行第四个命令使用 CA 签发服务器证书时出错:
openssl x509 -req -extfile <(printf "extendedKeyUsage=serverAuth\nsubjectAltName=DNS:music.163.com,DNS:*.music.163.com") -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
QQ截图20210108235819
QQ截图20210109000104

QQ截图20210109000140

我使用openssl 1.1.1稳定开发版,并且前三个命令没有报错,(报错的命令在管理员cmd,管理员powershell,管理员git bush全都试过)请问是什么原因,应该怎么解决?

它在Linux系统上正常.

使用命令:
node app.js -p 8000 在windows 正常 IOS不能用
使用命令:
node app.js -s -e https://music.163.com -p 8000:8001 在IOS正常,windows不能用
请问这该如何解决?

试一下
node app.js -s -e http://music.163.com -p 8000:8001

@ice4prince
Copy link

国内中继

测试过除咪咕外,QQ、虾米、百度、酷狗、酷我 API 都有海外墙,修改请求头无法绕过,必须通过国内代理,而音源文件本身没有海外请求限制,不需要代理。
考虑大陆服务器带宽比较珍贵,全局代理代价太大,增加了中继 "RPC"

目前仅提供 QQ 音源的公共中继服务
因 QQ 128k 音源可以直接使用测试 vkey,默认未启用中继服务

其它音源需要从国内请求的部分都预留了降级逻辑,不过在源码里屏蔽了,需要注释掉这个限制

if(path != 'qq/ticket') return Promise.reject()

中继服务器的源码为 bridge.js,部署后修改 insure.js 的 host 变量为自己的服务器地址即可

P.S. 来自套路云、良心云的请求会被虾米拒绝

小白有点头疼,求问大神这个js文件怎么注释掉啊,因为不知道js怎么修改。现在之前的灰色全变成了你所在的地区暂时不能balab

@0liu
Copy link

0liu commented Mar 26, 2021

在服务器上用nginx反向代理和container,客户端上修改hosts文件,但是总是显示nginx 502 Bad Gateway,请问应该怎么解决呢。。

docker命令如下

docker run --name neteasemusic --restart always -v /etc/nginx/ssl/server.crt:/usr/src/app/server.crt -v /etc/nginx/ssl/server.key:/usr/src/app/server.key -d -p 1630:1631 nondanee/unblockneteasemusic -f 103.126.92.132 -o kuwo

nginx配置。用的仓库自带的证书

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

        location / {
                proxy_pass http://localhost:1630;
                proxy_set_header HOST 'music.163.com';
        }
}

server {
        listen 443 ssl;
        server_name music.163.com interface.music.163.com;

        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;

        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;

        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'AES128+EECDH:AES128+EDH';
        ssl_prefer_server_ciphers on;

        location / {
                proxy_pass https://localhost:1631;
                proxy_set_header HOST 'music.163.com';
        }
}

@RikkaBlue
Copy link

@0liu 也许是你 docker 端口写法错误,-p 中 是 <主机端口>:<container_port>
如果不行,你试试 curl -H "Host:music.163.com" http://127.0.0.1:1630 -iv 看输出结果如何

@0liu
Copy link

0liu commented Apr 12, 2021

@0liu 也许是你 docker 端口写法错误,-p 中 是 <主机端口>:<container_port>
如果不行,你试试 curl -H "Host:music.163.com" http://127.0.0.1:1630 -iv 看输出结果如何

谢谢,按照顶楼的说法,-p后面不应该是<http port>:<https port>?

之后在启动命令中增加 https 监听端口,格式为 -p :,hosts 模式应为 80:443,代理模式随意,两个端口号不同即可

@myfreax
Copy link

myfreax commented Apr 16, 2021

Hello every one,我编写一个一键配置脚本,欢迎使用
huangyanxiong01/auto-unlock-netease-music

@SekiBetu
Copy link

SekiBetu commented Jul 21, 2021

openssl x509 -req -extfile <(printf "extendedKeyUsage=serverAuth\nsubjectAltName=DNS:music.163.com,DNS:*.music.163.com") -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
ParserError:
Line |
   1 |  openssl x509 -req -extfile <(printf "extendedKeyUsage=serverAuth\nsub …
     |                             ~
     | The '<' operator is reserved for future use.

装了openssl,powershell 7 生成不了证书,提示这个错误

@GCPanic
Copy link

GCPanic commented Apr 13, 2023

请问能否考虑能否通过代理注入脚本?这样就省了安装脚本的功夫了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pinned Something is important
Projects
None yet
Development

No branches or pull requests