Open nondanee opened 5 years ago
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,点击 "继续访问" 安装证书 👉 https://github.com/nondanee/UnblockNeteaseMusic/issues/593#issuecomment-674523736) (iOS 上容易遗漏的步骤 👉 https://support.apple.com/zh-cn/HT204477)
之后在启动命令中增加 https 监听端口,格式为 -p <http port>:<https port>
,hosts 模式应为 80:443
,代理模式随意,两个端口号不同即可
自签证书下网易云网页版是可用的,但是阻止变灰无效,因为网页内嵌加密,需要脚本配合
测试过除咪咕外,QQ、虾米、百度、酷狗、酷我 API 都有海外墙,修改请求头无法绕过,必须通过国内代理,而音源文件本身没有海外请求限制,不需要代理。 考虑大陆服务器带宽比较珍贵,全局代理代价太大,增加了中继 "RPC"
目前仅提供 QQ 音源的公共中继服务
因 QQ 128k 音源可以直接使用测试 vkey,默认未启用中继服务
其它音源需要从国内请求的部分都预留了降级逻辑,不过在源码里屏蔽了,需要注释掉这个限制 https://github.com/nondanee/UnblockNeteaseMusic/blob/fa48f901efc537786c7f9e4d12e159b03d879982/provider/insure.js#L13
中继服务器的源码为 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文件改哪里
@app-AZ
pm2 start app.js -- -e http://xxx.xxx:999
@onewayticket255 我自己没测过 726 和 730,如果默认 http 的话那也挺好的,方便 MITM,之后我去确认一下
但是 700 我这边结果还是:直接安装无法降级,在 636 降级了,覆盖上来就可以降级 关键点不是覆盖,而是在 636 降级 http 成功了(如果在 636 没降级过,覆盖 700 也还是不能降级的)
其实装了证书的话,降不降级就无所谓了
降级和自签证书这两个 trick 都很容易封的,且用且珍惜
Hosts模式,CA证书信任了,node app.js -p 80:443 -f 103.126.92.132
启动后,列表不灰了,但是播放不出来,请问什么原因?日志中的链接我在浏览器是秒开的,版本774
@CrazyMelody
看 log 的话,443 的端口没有被请求,有的话应该是 MITM > music.163.com (ssl)
你试一下在 chrome 里打开 https://music.163.com 看看会不会提示不安全,期间我换过一次证书不知道你有没有重新安装
因为 isure.stream
log 说明是有请求的
猜测可能被 QQ ban 了?(user-agent 会被查出来) 如果可以的话
https://github.com/nondanee/UnblockNeteaseMusic/blob/bc8b94a98f034e7b3e827ace8d694a923a763cc3/server.js#L95
在这个位置 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 会被查出来) 如果可以的话 https://github.com/nondanee/UnblockNeteaseMusic/blob/bc8b94a98f034e7b3e827ace8d694a923a763cc3/server.js#L95在这个位置 print 一下 url 和 proxyRes.statusCode 试一下 抱歉我没试测试 774 版本,你可以新建一个 issue 看看别人的反馈
感谢回复,找到问题了,因为公司网络有个诡异的问题,用chrome打不开大部分https网站,得科学上网才可以,用safari则秒开。。。我把网络换成流量就正常了
@CrazyMelody 好的
https://github.com/nondanee/UnblockNeteaseMusic/issues/48#issuecomment-477870013
首先谢谢你写的破解代码。想问一下你这个安装证书操作 具体在centos7下怎么操作啊?
@bigNeoneo
服务器不需要安装证书,要使用代理的客户端才需要。
那么我默认你问的是 linux 下的网易云客户端怎么使用
我测过 linux 客户端不会信任安装系统的证书,所以装了也没用,就别装了
启动时增加 --ignore-certificate-errors
直接忽略掉证书错误,README 里有写
其实我是想问,这样启动服务后,我在windows客户端设置代理就直接用了,很完美,可是我在IOS设备,用potasto直接挂VPN使用,就无法使用,看控制台也有显示 求解答,再次感谢
请教一个问题,就是服务器端怎样配置可以让音源文件不走代理?因为本身音源不需要检测地区的话,我期望的是服务器端只做链接修改,音源的下载还是由客户端完成。
在服务器端,我的启动方法是node app.js -s -p 端口
在安卓上,我的配置方法是打开Wifi设置,修改PAC为http://服务器IP:端口/proxy.pac
。结果可以下载周董的歌,但下载速度只有100K/s,所以我猜测下载文件是走的服务端(因为我的服务器是最低配所以带宽应该是比较小)。
@Aqua-Dream 是的音源(下载)走服务器 可以不走代理,按他这样改就行了 https://github.com/nondanee/UnblockNeteaseMusic/issues/143#issuecomment-509217052
不过安卓(和 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分钟才能播放,是什么原因呢,大大,我是不是应该在-o参数里,把qq、虾米放到前面?
不知道啊 如果之前不会等 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加速吗
大大,使用win端网易的时候,是不是每次用之前都需要去服务器执行一次node app.js -s -p 16070 -o xiami qq migu netease baidu kugou kuwo joox命令?刚刚执行后出现如下提示
@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 原来听不了的歌曲可以听了,但是感觉带宽还是和直接用国内的一样,缓冲慢,感觉整个都是跑了代理了,而不是查询走代理,播放走国外的 是哪里没有配对吗?
除了基本的命令行参数,在源码中还预留了一些可配置位置 如果有能力,可以了解一下这个部分