进阶配置
nondanee opened this issue · 116 comments
除了基本的命令行参数,在源码中还预留了一些可配置位置
如果有能力,可以了解一下这个部分
自签证书
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
,代理模式随意,两个端口号不同即可
自签证书下网易云网页版是可用的,但是阻止变灰无效,因为网页内嵌加密,需要脚本配合
国内中继
测试过除咪咕外,QQ、虾米、百度、酷狗、酷我 API 都有海外墙,修改请求头无法绕过,必须通过国内代理,而音源文件本身没有海外请求限制,不需要代理。
考虑大陆服务器带宽比较珍贵,全局代理代价太大,增加了中继 "RPC"
目前仅提供 QQ 音源的公共中继服务
因 QQ 128k 音源可以直接使用测试 vkey,默认未启用中继服务
其它音源需要从国内请求的部分都预留了降级逻辑,不过在源码里屏蔽了,需要注释掉这个限制
UnblockNeteaseMusic/provider/insure.js
Line 13 in fa48f90
中继服务器的源码为 bridge.js,部署后修改 insure.js 的 host 变量为自己的服务器地址即可
P.S. 来自套路云、良心云的请求会被虾米拒绝
Hi,我使用仓库里面默认的证书,安装到Mac中,然后经用surge代理,surge端显示无效的证书链是个啥情况?(Mac客户端没升级之前一直都是OK的)
@iDesperad0
需要在 "钥匙串" 里信任根证书,此步骤是否遗漏?
装完证书应该需要重启一下应用,chrome是这样的好像。
妈耶,是我的疏忽!因为之前一直用代理模式而把端口设置成8080,改成hosts模式忘了改回80了,刚才改成80已经OK了!只不过以前一直用的代理模式已经行不通了,感觉有点奇怪,有时间我再琢磨琢磨,也可能是surge的锅。
总之不论哪个方法最后还是成了,而且320Kbps是真香啊!非常非常感谢你哈!
@iDesperad0 你可以测试一下用系统代理,看看有没有问题,我试过应该是可以的。
QQ的音源真的很迷啊,128K真的难以下咽。忍住不用QQ音乐越来越难。
是不是QQ的音源又挂了😂?刚才突然发现好多歌曲不能放了,以为hosts也失效了,折腾老半天,看log发现小部分歌使用了千千静听音源,其他大部分QQ音乐独占的资源几乎全失效了。
@iDesperad0
最新的 release (包括 docker) 上的挂了,已经好几天了(星期二到现在)
最新的 commit,M500 是没问题的
以后不会再管 QQ 高音质了,换一个封一个......
@nondanee
哈哈,辛苦了,无奈QQ音乐占据着国内最大的版权比例😢。
@LeticiaAnna
不支持,README 里写了,设置 -t user:password
用不了(当然你可以试试看,switchyomega 里可以用)
上游代理也不支持用户名密码
不好意思我手抖把你的评论删掉了==
我这里测试卸载干净再装Mac 2.0(730),直连基本都用http
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
这是今天下午测的。这结果很迷,和之前我的测试结果不太一样。
进阶成功,我想问一下老哥,-e http://xxx.xxx:999 接域名的话,能不能改你的js文件来进行操作,我想用PM2来进行node后台,但是找不到pm2 脚本配置命令该怎么写,如果能改到js文件里面那我就直接PM2 app.js就可以了,希望老哥能说一下js文件改哪里
@onewayticket255
我自己没测过 726 和 730,如果默认 http 的话那也挺好的,方便 MITM,之后我去确认一下
但是 700 我这边结果还是:直接安装无法降级,在 636 降级了,覆盖上来就可以降级
关键点不是覆盖,而是在 636 降级 http 成功了(如果在 636 没降级过,覆盖 700 也还是不能降级的)
其实装了证书的话,降不降级就无所谓了
降级和自签证书这两个 trick 都很容易封的,且用且珍惜
@CrazyMelody
看 log 的话,443 的端口没有被请求,有的话应该是 MITM > music.163.com (ssl)
你试一下在 chrome 里打开 https://music.163.com 看看会不会提示不安全,期间我换过一次证书不知道你有没有重新安装
因为 isure.stream
log 说明是有请求的
猜测可能被 QQ ban 了?(user-agent 会被查出来) 如果可以的话
Line 95 in bc8b94a
在这个位置 print 一下 url 和 proxyRes.statusCode 试一下
抱歉我没试测试 774 版本,你可以新建一个 issue 看看别人的反馈
@CrazyMelody
看 log 的话,443 的端口没有被请求,有的话应该是MITM > music.163.com (ssl)
你试一下在 chrome 里打开 https://music.163.com 看看会不会提示不安全,期间我换过一次证书不知道你有没有重新安装因为
isure.stream
log 说明是有请求的
猜测可能被 QQ ban 了?(user-agent 会被查出来) 如果可以的话
Line 95 in bc8b94a
在这个位置 print 一下 url 和 proxyRes.statusCode 试一下
抱歉我没试测试 774 版本,你可以新建一个 issue 看看别人的反馈
感谢回复,找到问题了,因为公司网络有个诡异的问题,用chrome打不开大部分https网站,得科学上网才可以,用safari则秒开。。。我把网络换成流量就正常了
@CrazyMelody 好的
首先谢谢你写的破解代码。想问一下你这个安装证书操作 具体在centos7下怎么操作啊?
@bigNeoneo
服务器不需要安装证书,要使用代理的客户端才需要。
那么我默认你问的是 linux 下的网易云客户端怎么使用
我测过 linux 客户端不会信任安装系统的证书,所以装了也没用,就别装了
启动时增加 --ignore-certificate-errors
直接忽略掉证书错误,README 里有写
所以就是一直不升级。。。?
请教一个问题,就是服务器端怎样配置可以让音源文件不走代理?因为本身音源不需要检测地区的话,我期望的是服务器端只做链接修改,音源的下载还是由客户端完成。
在服务器端,我的启动方法是node app.js -s -p 端口
在安卓上,我的配置方法是打开Wifi设置,修改PAC为http://服务器IP:端口/proxy.pac
。结果可以下载周董的歌,但下载速度只有100K/s,所以我猜测下载文件是走的服务端(因为我的服务器是最低配所以带宽应该是比较小)。
@Aqua-Dream
是的音源(下载)走服务器
可以不走代理,按他这样改就行了 #143 (comment)
不过安卓(和 macOS)端下载前有一次预下载计算 MD5 的过程 (MD5 不正确无法正常下载),#98 #101
服务器带宽很小的话也比较慢 (累计下载两次)
@Aqua-Dream
我回旧版本测了下好像并没有我以前顾虑的问题,下个版本我会改过来
@Aqua-Dream
是的音源(下载)走服务器
可以不走代理,按他这样改就行了 #143 (comment)不过安卓(和 macOS)端下载前有一次预下载计算 MD5 的过程 (MD5 不正确无法正常下载),#98 #101
服务器带宽很小的话也比较慢 (累计下载两次)
貌似确实有效,感谢
@lostimever
按照什么步骤,请简单说一下
用的 proxifier?要不你看一下这个 #91
@lostimever
按照什么步骤,请简单说一下
用的 proxifier?要不你看一下这个 #91
感谢,我这边好了,我简单说一下我这边配置,你以后可以做参考:
1、服务器上用supervisord 作进程管理;
2、macOS Mojave 10.14.5 (18F203);
3、Proxifier for Mac v2.22
4、网易云 Version 2.1.0 (782)
iOS还没有搞定,以后再研究一下
大佬,请问按照node app.js -p 65535这种方式设置后,现在是不是不能用了?
win端网易音乐内歌曲由灰变黑,但是播放时总是显示失败。
大佬,请问按照node app.js -p 65535这种方式设置后,现在是不是不能用了?
win端网易音乐内歌曲由灰变黑,但是播放时总是显示失败。
我5月的时候通过这种方式还能在win端网易音乐用的
@auntspock
不会啊,刚试了没问题
log 没有显示匹配结果吗?
客户端版本和 unblock server 版本分别是多少?
测试用了哪首歌?歌曲 id 是多少?
@auntspock
不会啊,刚试了没问题
log 没有显示匹配结果吗?
客户端版本和 unblock server 版本分别是多少?
测试用了哪首歌?歌曲 id 是多少?
谢谢大大回复,我截图如下可能更好说明:
1、centos7 64位,采用的0.16.0版release。
2、在win端网易客户端启用全局代理后,服务器日志如下
3、复制日志中http开头的地址在浏览器打开可以打开播放和下载。
@auntspock
不要用 -s
或者追加 -e http://music.163.com
@auntspock
不要用-s
或者追加-e http://music.163.com
意思是删除-s对吧,好的我试试
不知道啊
如果之前不会等 3 分钟的话你可以用上一个版本试试
还有
加了 -e http://music.163.com
的话
是可以用 -s
的
好的,那我又加上-s。
上个版本是指0.15.2对吗,我试试
会不会跟我没有开bbr有关
@auntspock
这个你自己测试吧
反正 0.16.0 加上 -e http://music.163.com
就和 0.15.2 的默认配置一致了 (在代码逻辑上)
好的谢谢大大
@auntspock
这个你自己测试吧
反正 0.16.0 加上-e http://music.163.com
就和 0.15.2 的默认配置一致了 (在代码逻辑上)
另外我需要在服务器上开bbr加速吗
@auntspock
不需要,去找个进程守护工具 #136
报错说端口被占用了,应该是之前就启动了吧
好的大大,装了个supervisord。
1、如果我要调整音源的搜索顺序,该执行哪个步骤呢?
2、如果在手机使用该服务,是在手机的网络设置-v**选项里面填入网址和端口吗?
@auntspock 你提的问题跟此 issue 没有关系,麻烦新开一个 issue
@nondanee 你好,关于中继方面,还是不是很懂,想请教下
现在有两台服务器:
假设国内服务器ip:192.168.12.13:7654
国外的是172.16.70.18:3688
按照中继 "RPC"的配置,已经注释provider/insure.js里的
if(path != 'qq/ticket') return Promise.reject() 这行
在bridge.js没看到host变量,不太清楚"部署后修改 host 变量为自己的服务器地址即可"是在哪里改
然后我用node app.js -p3688 -u http://192.168.12.13:7654
在网易云里面设置http代理:172.16.70.18:3688
原来听不了的歌曲可以听了,但是感觉带宽还是和直接用国内的一样,缓冲慢,感觉整个都是跑了代理了,而不是查询走代理,播放走国外的
是哪里没有配对吗?
@yevision94
启动中继 server 用 node bridge.js
host
变量在 insure.js 里
不需要加 -u
用 -u
是在使用多级代理,确实跟直接用国内一样
现在如果用 PAC 或者 hosts 模式,播放已经默认不走代理了
哪些歌原来不能听啊?
一开始把insure.js的host改了之后测试可以听了,感谢!
另外是要先node bridge.js
,再node app.js
吧,刚尝试只运行bridge不行
之前是董真和心然的海棠无香刚出那会听不了,会变成其它不知名的歌
补充:刚试了用原来默认的配置不走中继也能听了,不知道什么时候好的,现在不确定中继是不是行了,笑哭
@yevision94
bridge.js
运行在国内,app.js
随便运行在哪都行,host
是 bridge 的地址
默认配置里 netease
和 qq
的音源是不用中继的
如果不确定是不是中继服务的效果,你可以自己请求下这个 url 看看
UnblockNeteaseMusic/provider/insure.js
Line 14 in 777f8f0
@nondanee 这样子说的话,实际是没用到中继。
node bridge.js
这个也是用 -p 指定端口吗?
另外,发现RADWIMPS最新天气之子的专辑里的風たちの声(movie edit)听不了,变成了radwimps你的名字里面的一首歌,还有其它几首也是
@yevision94
node bridge.js 9000
这样,直接跟端口号
匹配的问题参考👉 #149
我看了下《風たちの声》在 QQ 音乐要付费
看了下这两种关键词搜索结果不一样
風たちの声 - RADWIMPS
https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=風たちの声%20-%20RADWIMPS
風たちの声 (Movie edit) - RADWIMPS
https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=風たちの声%20(Movie%20edit)%20-%20RADWIMPS
感觉是 QQ 音乐搜索关键词优化的问题......
@kossel
好吧我试了下也确实不行==,那你再给 nginx 加上 https 反代吧
或者让 nginx 不在 0.0.0.0
server {
listen 127.0.0.1:80;
server_name _;
location / {
proxy_pass http://127.0.0.1:XXX; # http 端口
proxy_set_header HOST 'music.163.com';
}
}
server {
listen 127.0.0.1:443 ssl default_server;
server_name _;
ssl on;
ssl_certificate <???>/server.crt;
ssl_certificate_key <???>/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://127.0.0.1:XXXX; # https 端口
proxy_set_header HOST 'music.163.com';
}
}
@kossel
好吧我试了下也确实不行==,那你再给 nginx 加上 https 反代吧
或者让 nginx 不在 0.0.0.0server { listen 127.0.0.1:80; server_name _; location / { proxy_pass http://127.0.0.1:XXX; # http 端口 proxy_set_header HOST 'music.163.com'; } } server { listen 127.0.0.1:443 ssl default_server; server_name _; ssl on; ssl_certificate <???>/server.crt; ssl_certificate_key <???>/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://127.0.0.1:XXXX; # https 端口 proxy_set_header HOST 'music.163.com'; } }
本来想使用自签证书 直接使用mac连接使用的 但是mac上使用的clash没发加载证书,应该就不行了吧,于是想使用这种方法。
请问 这种nginx转发的方式 可以UnblockNeteaseMusic服务和nginx用两个服务器吗?还是只能用一个服务器?
另外是这种方式 使用网易音乐客户端的电脑还需要自签证书吗?
我现在的方式是 服务器上nginx 使用自己签发的证书 然后将生成的ca.crt、server.crt、server.key三个文件覆盖掉另一台服务器上UnblockNeteaseMusic程序里的对应文件 然后网站配置按你上面的代码设置了 http转发端口到UnblockNeteaseMusic服务器的4511,https转发到4522
然后在安装UnblockNeteaseMusic的服务器运行node app.js -p 4511:4512 -e https://url
现在mac和iphone 连接到UnblockNeteaseMusic服务器的 4511 列表显示正常 有版权歌也能听 但是无版权歌就显示“播放失败网络错误” 解析出来的qq音乐地址复制出来也可以播放
请问能帮忙看下是什么原因?谢谢
@htwyqjj
clash 不信任系统上安装的证书吗?我不太清楚
这种转发方式是 hosts 模式使用的,为解决端口冲突用,代理用不到。
可以用两个,也可以用一个
还是需要,macOS 客户端 2.X 有限制,回到 1.X 就没限制了
-e
不加试试看
@kossel
好吧我试了下也确实不行==,那你再给 nginx 加上 https 反代吧
或者让 nginx 不在 0.0.0.0server { listen 127.0.0.1:80; server_name _; location / { proxy_pass http://127.0.0.1:XXX; # http 端口 proxy_set_header HOST 'music.163.com'; } } server { listen 127.0.0.1:443 ssl default_server; server_name _; ssl on; ssl_certificate <???>/server.crt; ssl_certificate_key <???>/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://127.0.0.1:XXXX; # https 端口 proxy_set_header HOST 'music.163.com'; } }本来想使用自签证书 直接使用mac连接使用的 但是mac上使用的clash没发加载证书,应该就不行了吧,于是想使用这种方法。
请问 这种nginx转发的方式 可以UnblockNeteaseMusic服务和nginx用两个服务器吗?还是只能用一个服务器?
另外是这种方式 使用网易音乐客户端的电脑还需要自签证书吗?我现在的方式是 服务器上nginx 使用自己签发的证书 然后将生成的ca.crt、server.crt、server.key三个文件覆盖掉另一台服务器上UnblockNeteaseMusic程序里的对应文件 然后网站配置按你上面的代码设置了 http转发端口到UnblockNeteaseMusic服务器的4511,https转发到4522
然后在安装UnblockNeteaseMusic的服务器运行node app.js -p 4511:4512 -e https://url
现在mac 使用clash链接到UnblockNeteaseMusic服务器的 4511 列表显示正常 有版权歌也能听 但是无版权歌就显示“播放失败网络错误” 解析出来的qq音乐地址复制出来也可以播放
请问能帮忙看下是什么原因?谢谢
@htwyqjj
clash 不信任系统上安装的证书吗?我不太清楚这种转发方式是 hosts 模式使用的,为解决端口冲突用,代理用不到。
可以用两个,也可以用一个
还是需要,macOS 客户端 2.X 有限制,回到 1.X 就没限制了
-e
不加试试看
你的意思是 我的电脑或者手机 还是要安装ca.crt证书才可以 是吗
@htwyqjj
macOS 上必须装证书,手机可以不装
好吧 我以为使用nginx 转发 就不需要安装证书了 原来还是需要的……那干吗还需要nginx转发这种方式啊……
另外我试了一下 不安装证书 手机端不能播放
@htwyqjj
macOS 上必须装证书,手机可以不装
感谢 兜兜转转 绕了一大圈子 mac安装自签证书 可以使用了
另外ios最新版应该也需要证书了 我昨天使用quantumtul使用 MITM 是可以使用的 今天删除了证书 不能播放了
@htwyqjj
我之前就回复你了啊 #48 (comment)
这种转发方式是 hosts 模式使用的,为解决端口冲突用,代理用不到。
iOS 如果不安装证书,则需要 "配置 https endpoint" #65
见 README 中的描述
iOS 客户端 (配置 https endpoint 或使用自签证书)
和这个的配置可能很像,但是不一样
@htwyqjj
我之前就回复你了啊 #48 (comment)这种转发方式是 hosts 模式使用的,为解决端口冲突用,代理用不到。
iOS 如果不安装证书,则需要 "配置 https endpoint" #65
见 README 中的描述iOS 客户端 (配置 https endpoint 或使用自签证书)
和这个的配置可能很像,但是不一样
但是我ios 没有安装证书 按照iOS 如果不安装证书,则需要 "配置 https endpoint" #65
这个来 不行啊
@htwyqjj
那也有可能的
我没试过新版客户端,README 截图用的是 6.0 好像
经测试 手机安装自签证书 无需quantumtul使用 MITM 即可使用
感谢你的解答!谢谢!
国内中继
测试过除咪咕外,QQ、虾米、百度、酷狗、酷我 API 都有海外墙,修改请求头无法绕过,必须通过国内代理,而音源文件本身没有海外请求限制,不需要代理。
考虑大陆服务器带宽比较珍贵,全局代理代价太大,增加了中继 "RPC"
目前仅提供 QQ 音源的公共中继服务
因 QQ 128k 音源可以直接使用测试 vkey,默认未启用中继服务其它音源需要从国内请求的部分都预留了降级逻辑,不过在源码里屏蔽了,需要注释掉这个限制
UnblockNeteaseMusic/provider/insure.js
Line 13 in fa48f90
中继服务器的源码为 bridge.js,部署后修改 insure.js 的 host 变量为自己的服务器地址即可
P.S. 来自套路云、良心云的请求会被虾米拒绝
本人小白一只,大大能给我细讲一下国外怎么访问么?真心感谢
我自己有国内的服务器,不知道怎么配置。
不知道能不能支持 apple music音源?或者spotify
@shzxm
不能
没找到下载 spotify 歌曲的方法,据说 spotify 使用 ogg 格式且有 DRM
Apple Music API 申请就需要 enroll apple developer program,门槛太高
自签证书模式是只对mac好使吗?在UWP客户端下,无法播放。在PC端下,改hosts文件无效全灰,内部设置代理80/443的话,网络超时无法播放。
@Lonelykid
刚验证了下,对 UWP 和 Windows 客户端都好使
- UWP 只用 http 接口,甚至都不用装证书。UWP 访问本地要额外打开 loopback,README 有写
- 修改 hosts 后 Windows 客户端也可用,注意
interface.music.163.com
这个域名也要写入,README 有写 - 修改 hosts 并在 Windows 客户端设置代理端口 80 也可用 (你这是什么奇怪操作? hosts 或者代理二选一就行)
还有 443 那个是 https 代理,像客户端设置、Android 的 wifi 代理、iOS 的 WLAN 代理都不支持
@nondanee 谢谢,无法播放可能是我临时的网络问题,UWP现在可用了,不是在本地不需要加loopback吧。不过PC客户端的确是无视了hosts设置,歌曲全都是灰的,客户端内设置也不好使,版本2.6.0 Build 198145
@Lonelykid
emmm 我把 AppData 删掉试了下 (新安装状态),确实无视 hosts 了
我之前试了可用大概是因为在之前版本用过 hosts,升级上来有些配置保留了
但是客户端内设代理还是可以用的,我的版本是 2.6.0 (Build:198161)
使用pm2管理启动服务,设置好端口号,仍然以8080端口启动
apps:
- script: ./app.js
name: netease
watch: true
log_date_format: "YYYY-MM-DD HH:mm Z"
error_file: /wlf/music/UnblockNeteaseMusic/logs/error.log
out_file: /wlf/music/UnblockNeteaseMusic/logs/out.log
env_production:
NODE_ENV: production
HOST: localhost
PORT: 10001
启动命令为
pm2 start pm2.yml --env production
查看日志显示为:
0|netease | 2019-11-27 14:30 +08:00: HTTP Server running @ http://0.0.0.0:8080
@lostimever
不支持从环境变量读参数,必须设置 args
args: -a localhost -p 10001
@lostimever
不支持从环境变量读参数,必须设置 argsargs: -a localhost -p 10001
嗯嗯,感谢🙏
想请教一下作者大大🙏。provider里面虾米xiami.js怎么添加自己的cookie?或者内置账号?
因为自己刚好还剩一年的虾米会员,还是想尽可能利用起来。也看了隔壁qq.js是有注释预留cookie的地方,但是虾米木有找到类似的。。。
谢谢大佬耐心回复。我自己回去研究一下。
国内中继
测试过除咪咕外,QQ、虾米、百度、酷狗、酷我 API 都有海外墙,修改请求头无法绕过,必须通过国内代理,而音源文件本身没有海外请求限制,不需要代理。
考虑大陆服务器带宽比较珍贵,全局代理代价太大,增加了中继 "RPC"
目前仅提供 QQ 音源的公共中继服务
因 QQ 128k 音源可以直接使用测试 vkey,默认未启用中继服务其它音源需要从国内请求的部分都预留了降级逻辑,不过在源码里屏蔽了,需要注释掉这个限制
UnblockNeteaseMusic/provider/insure.js
Line 13 in fa48f90
中继服务器的源码为 bridge.js,部署后修改 insure.js 的 host 变量为自己的服务器地址即可
P.S. 来自套路云、良心云的请求会被虾米拒绝
@nondanee 因为我是macOS使用,所以我尝试部署的是 RPC+https endpoint 模式…
按照上面的说明
先在 国内节点 git clone 后无任何修改 执行 node bridge.js 9000
然后在 国外节点 修改 insure.js
并执行 node app.js -p 8080:8081 -e https://mydomain.com -o qq migu kuwo joox
1 node bridge.js 9000
会有log显示吗?我这边完全没有动静的说
2 由于 1 中没有log显示,我尝试使用本issues中的测试代码进行测试
3 macOS客户端版本是2.3.0(816) 连通后原本灰掉的歌曲显示能播,但是点击播放在loading一段时间(log会出现MITM > music.163.com
)后直接播放了下一曲(之前就能播放的歌曲)
4 https endpoint 配置应该是没问题的,毕竟issues测试joox是能解析到歌曲的
- 是的,bridge 没有 log 的
- 额。。。国内节点要求大陆的,香港的不行
- 不显灰和能不能播是两回事:因为在显示列表的时候我没法确定每首灰的歌的匹配结果,所以全部显示能点击,实际等播放到那首歌了再去匹配;如果不修改列表显示,那么客户端在 UI 上就限制了,点这首歌直接弹框不能听,不去请求服务器,也就不会过代理;loading 的时间在做匹配,匹配不到会返回空,没法播放的话网易云会自动下一首
- 嗯,问题就是因为香港节点,joox 服务东南亚港澳
@nondanee
我的部署姿势没错吧?
然后我国内节点的确是在大陆啊 就是开bridge的节点
我知道香港能用joox,所以看起来压根没成功连到大陆的bridge?
两边防火墙都是关闭的,可以排除防火墙的原因导致没连bridge成功,所以如何排查一下呢?
@jxcn
应该没错
嗯没连到
可以直接浏览器打开链接测试一下 bridge server 正不正常
http(s)://HOST:PORT/qq/track?{%22song%22:%220034UmOI0ObAqd%22,%22file%22:%22001pSSJ10V7r7e%22}
@jxcn
那在 bridge 里这行 if(path != 'qq/ticket') return Promise.reject()
注释了吗==,看你截图里没有
insure 里可以 print 出来看看
return request('GET', `${host}/${path}?${query}`)
.then(response => response.body())
.then(data => {
console.log('bridge', data)
return data
})
服务商网络问题 换IP解决了…
感谢大佬投入。
我在使用中遇到如下问题:
安装好证书在iphone设置代理后,歌单恢复但是提示播放失败。
docker 命令如下:
docker run -d -p 12306:8080 -v /home/pi/SourceCode/unblockneteasemusic/server.crt:/usr/src/app/server.crt -v /home/pi/SourceCode/unblockneteasemusic/server.key:/usr/src/app/server.key --name neteasemusic nondanee/unblockneteasemusic -p 8080:8081 -e https://music.163.com
试过
-e http://music.163.com
同样现象
部分log如下:
MITM > 115.236.118.33
[1400394244] 以父之名 (Live)
http://dl.stream.qqmusic.qq.com/M50000026oNl2nIpMd.mp3?vkey=806CCD60642A65C5DA2B81C99B9A331A5BE26C45CE299F0B788BF189FAFE0DB43B9730523131450608E7B1BCDB710B31A3681986413391C1&uin=0&fromtag=8&guid=7332953645
TUNNEL > localhost:8081
TUNNEL > localhost:8081
TUNNEL > localhost:8081
TUNNEL > localhost:8081
MITM > 59.111.181.38
MITM > 59.111.181.38
MITM > 115.236.118.33
MITM > 115.236.118.33
MITM > 115.236.118.33
MITM > 115.236.118.33
MITM > 115.236.118.33
MITM > 115.236.118.33
TUNNEL > wfd.netease.im:443
TUNNEL > wfd.netease.im:443
TUNNEL > wfd.netease.im:443
有版权歌曲正常播放
@DOTA2mm
看 log 似乎证书没被信任啊,浏览器里打开 music.163.com 看看会不会有证书错误警告?
这两天一直遇到一个奇怪的问题,自签证书在ios客户端显示网络不给力,而用项目自带的证书,就没有问题。
两者只有证书不同,可以排除掉部署和客户端配置不对的情况。
经过反复测试,自签证书有效期不能太长,否则在客户端会提示“网络不给力”。
openssl x509 -req -extfile <(printf "subjectAltName=DNS:music.163.com,DNS:*.music.163.com") -days 800 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
数次调整,发现days不能超过900,具体上限是多少未知。目前设定到800,工作正常。
想请教下作者,这个是什么原因导致的,为什么有效期太长就不行了。
@blackmatrix7
估计是这个问题了 #276 (comment) #403 (comment)
https://support.apple.com/zh-cn/HT210176
明白了,谢谢解答。