Closed wangliangliang2 closed 4 years ago
有什么特别的吗?
有什么特别的吗?
没啥特别的。 只是其他issue介绍很杂而且介绍的方法试了试ios端都不可用。 还有的issue用docker里面的ca.crt也是很让人摸不着头脑。 按上面的步骤简单做下ios 和mac端就可以了正常解锁,算是一个方法贴吧。
@wangliangliang2 这个可以用于Quantumult吗,还是说只能用在Surge上?
@wangliangliang2 这个可以用于Quantumult吗,还是说只能用在Surge上?
纯分析的角度来看这个适用Quan、小火箭、surge。理由是这个不涉及软件间区别化,只是应用大家都有的MITM功能. 我大概用了下这个项目,感觉流程是这样的[没有抓包验证过(懒),仅仅猜测]: NeteaseMusic->surge(Quan、小火箭)->unblock server MITM(解析找资源返回https://music.163.com/base64.mp3[-e 的启动参数])-> (surge MITM)->返回mp3数据。
@wangliangliang2 学习了,谢谢~
-> third, trust certicafication of surge and don't forget the about in setting should also trust,then toggle up MITM on iOS.
这句话改一下好不好我的老表真的看着很喜感(对不起原谅我(误
-> One more thing, add the certificate you generated by Surge to the system and trust it in system preferences. After that, turn on the MitM.
下面是比较完整 Surge 规则+去广告拦截上报
AND,((URL-REGEX,.+eapi/ad/get), (USER-AGENT,NeteaseMusic)),REJECT AND,((URL-REGEX,.+/api/log.+), (USER-AGENT,NeteaseMusic)),REJECT AND,((URL-REGEX,.+/api/feedback/client/log.+), (USER-AGENT,NeteaseMusic)),REJECT AND,((DOMAIN-SUFFIX,http://hz.music.163.com/), (USER-AGENT,NeteaseMusic)),REJECT AND,((DOMAIN-SUFFIX,interface3.music.163.com), (USER-AGENT,NeteaseMusic)),DIRECT USER-AGENT,NeteaseMusic,🌸 UnblockNeteaseMusic DOMAIN-SUFFIX,music.126.net, 🌸 UnblockNeteaseMusic DOMAIN-SUFFIX,music.163.com,🌸 UnblockNeteaseMusic
@wangliangliang2
不会吧,#56 #65 不是都把底下讨论最精华的部分全写在最开头的 comment 里了吗,不用全看啊 iOS 应该可以用啊,装 CA 不行吗?https://github.com/nondanee/UnblockNeteaseMusic/issues/65#issuecomment-543188771
docker 里面的 ca.crt 就是仓库里的 ca.crt,docker image 是 ci build,和源码一毛一样 仓库里的 ca.crt 点开安装在信任一下就行了
还有,为什么一定要用 docker 呢,npx 也很简单啊?
iOS 上用的起 surge 的应该是少数吧 =.=
@Co2333 去广告开个会员就行了 拦截上报的话听歌排行、年报这种应该都会受影响
@wangliangliang2
不会吧,#56 #65 不是都把底下讨论最精华的部分全写在最开头的 comment 里了吗,不用全看啊 iOS 应该可以用啊,装 CA 不行吗?#65 (comment)
docker 里面的 ca.crt 就是仓库里的 ca.crt,docker image 是 ci build,和源码一毛一样 仓库里的 ca.crt 点开安装在信任一下就行了
还有,为什么一定要用 docker 呢,npx 也很简单啊?
iOS 上用的起 surge 的应该是少数吧 =.=
1.装ca不行。 2.docker只是我用的真实环境及测试这个项目的使用环境。写清楚方便别人而已。 3.这个跟surge用不用没关系,其他代理软件也可以,原因我解释过了,用surge也只是我的测试和使用环境。
@wangliangliang2
我合到 #56 里了
surge for mac 上使用异常,步骤和楼主基本一致
[Proxy] 🇪🇺 UnblockNeteaseMusic = http, 127.0.0.1, 8080
运行后访问客户端,CPU 飙升,surge dashboard 直接假死
docker 里的日志,不停在刷
@lifesign 看起来 surge 把 docker 内发起的请求都拦截了,client 显示的是 com.docker.vpnkit....
docker 内 UnblockNeteaseMusic 发起的 music.163.com 请求被 surge 转发到 UnblockNeteaseMusic 代理,死循环
看看能不能在 surge 规则里把 docker 排除一下
@lifesign 看起来 surge 把 docker 内发起的请求都拦截了,client 显示的是 com.docker.vpnkit....
docker 内 UnblockNeteaseMusic 发起的 music.163.com 请求被 surge 转发到 UnblockNeteaseMusic 代理,死循环
看看能不能在 surge 规则里把 docker 排除一下
临时加了条规则是可以的,现在 Mac 的客户端可用,不过这个可能影响 docker 的策略了,我在尝试一下
[Rule] PROCESS-NAME,/Applications/Docker.app/Contents/Resources/bin/com.docker.vpnkit,DIRECT
网页端好像还是不行
Surge For Mac 已经开启 MitM,而且把 Skip Server Certificate Verification 勾上了
不勾上会有这个错误
@lifesign 好的
网页版的问题 README 里说过了
支持 Windows 客户端,UWP 客户端,Android 客户端,Linux 客户端 (1.2 版本以上需要自签证书 MITM,启动客户端需要增加 --ignore-certificate-errors 参数),macOS 客户端 (726 版本以上需要自签证书),iOS 客户端 (配置 https endpoint 或使用自签证书) 和网页版 (需要自签证书,需要脚本配合)
参考 https://github.com/nondanee/UnblockNeteaseMusic/issues/48#issuecomment-477870013 最后
@lifesign 看起来 surge 把 docker 内发起的请求都拦截了,client 显示的是 com.docker.vpnkit....
docker 内 UnblockNeteaseMusic 发起的 music.163.com 请求被 surge 转发到 UnblockNeteaseMusic 代理,死循环
看看能不能在 surge 规则里把 docker 排除一下
尝试了一下,这样的做法,docker 下的命令只能走直连了,如果不配置镜像,将无法访问类似 docker pull
的命令
抓包观察后有几个结论
DOMAIN-SUFFIX,docker.com,🚀 Proxy
所以没问题DOMAIN-SUFFIX,docker.io,🚀 Proxy
即可尝试最简配置如下
[Rule]
DOMAIN-SUFFIX, music.163.com, 🇪🇺 UnblockNeteaseMusic
DOMAIN-SUFFIX,docker.io,🚀 Proxy
DOMAIN-SUFFIX,docker.com,🚀 Proxy
目标是
多次尝试后发现,一开始打开客户端的情况下,是没问题的,也能听,但是通过操作反复切换歌曲,网页端和客户端交叉访问,会有一个时刻 docker logs 里不断出现这个时,就进入了死循环中,目前无法按照相同的操作路径复现 出现过问题的有
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
MITM > music.163.com:80
大部分是请求 http://music.163.com/* 的时候,这个时候因为命中了 surge 基于域名后缀的规则(但没区分 http 或者 https),会转发到 surge,surge 又转发到 docker,导致死循环了
以下日志输出 music.163.com 这种是正常的,不知道和输出 music.163.com:80 差异在哪里,含义上似乎是一样的
MITM > music.163.com
MITM > music.163.com
[412327303] 哪里都是你 (Live)
http://win.web.rh01.sycdn.kuwo.cn/cac68b6d2f33707a78b857c47ccd246f/5e106e4f/resource/n1/5/9/4267523983.mp3
MITM > win.web.rh01.sycdn.kuwo.cn (ssl)
MITM > music.163.com
MITM > music.163.com
MITM > music.163.com
[26609712] 美景
http://rq01.sycdn.kuwo.cn/a947d59448bc8dbe679440541bb57052/5e106e5d/resource/n3/19/81/981709890.mp3
TUNNEL > localhost:8081
MITM > rq01.sycdn.kuwo.cn (ssl)
TUNNEL > p3.music.126.net:443
目前参考 https://github.com/nondanee/UnblockNeteaseMusic/issues/56 里的,这样测试是可行的,不会出现假死,客户端正常听,但是带来的一个问题是网页无法使用,似乎无解
[Rule]
PROCESS-NAME,NeteaseMusic*,UnblockNeteaseMusic
DOMAIN-SUFFIX,docker.io,🚀 Proxy
DOMAIN-SUFFIX,docker.com,🚀 Proxy
请求 http://music.163.com/* 是命中的是 DIRECT,不会转发到 docker
@lifesign 网页无法用很好解决啊,加上浏览器的 PROCESS-NAME
出现这个问题的原因是 surge 会检查 docker 发出的请求,但你无法给特定 container/image 写白名单
那么普通的 cli 程序发出的请求会走 surge 规则吗? 比如 curl 这种,我觉得没有 export http_proxy 应该不会吧~ 如果不走的话建议直接 npx
@lifesign 网页无法用很好解决啊,加上浏览器的 PROCESS-NAME
出现这个问题的原因是 surge 会检查 docker 发出的请求,但你无法给特定 container/image 写白名单
那么普通的 cli 程序发出的请求会走 surge 规则吗? 比如 curl 这种,我觉得没有 export http_proxy 应该不会吧~ 如果不走的话建议直接 npx
加上 PROCESS-NAME 的话,像 chrome 的访问就都走代理的,这样也不合适 普通的 cli 请求不会的,docker 是因为命中了两条规则才会走代理 那这么看起来 docker 和 surge 的配合想要同时兼容客户端和网页是没什么好办法了,转 npx 的方式落
nblockNeteaseMusic = http, 127.0.0.1, 8080
运行后访问客户端,CPU 飙升,surge dashboard 直接假死
我的docker之前是放在云服务器里,运行正常。 现在是放nas中(和电脑同一个局域网),运行也正常。 以上两种情况 docker 和 surge 的配合是能同时兼容客户端和网页的,并且不好导致cpu飙升。 至于本机的docker情况,我没测试过。 PS:HTTPS Decrypt 可以关掉的。
first, in you vps start docker with cmd: docker run -d --name unblockneteasemusic -p 8080:8080 nondanee/unblockneteasemusic:latest -s -e https://music.163.com -p 8080:8081
second, add rules in surge.conf: [Proxy] 🇪🇺 UnblockNeteaseMusic = http,\,\
[Rule]
DOMAIN-SUFFIX, music.163.com, 🇪🇺 UnblockNeteaseMusic
# add USER-AGENT rule in iOS
USER-AGENT,NeteaseMusic,🇪🇺 UnblockNeteaseMusic
DOMAIN,interface3.music.163.com,🇪🇺 UnblockNeteaseMusic
USER-AGENT,%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90,🇪🇺 UnblockNeteaseMusic
[MITM]
hostname = music.163.com,interface3.music.163.com
third, trust certicafication of surge and don't forget the about in setting should also trust,then toggle up MITM on iOS.
now, you can enjoy music both in Mac and iOS.
ps: Mac NeteaseMusic version 2.2.0 (Build:800) iOS NeteaseMusic version 6.4.7 the fllowing is results: