-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
安卓设备只有重启第一次可以成功解锁 #423
Comments
Android 端安装用户证书无效 #30 (comment) 我用 WLAN 代理无法复现 判断可能是 sni 没拦到,能 debug 的话把 sni 打印出来看一看 UnblockNeteaseMusic/src/hook.js Line 209 in 91e631d
这是 root 了吧?root 把用户证书改成系统证书试试 |
步骤2的日志 ...(begin)
TUNNEL > 59.111.239.61:443
TUNNEL > 59.111.179.213:443
TUNNEL > 59.111.239.61:443
url Url {
protocol: 'https:',
slashes: true,
auth: null,
host: '59.111.179.213:443',
port: '443',
hostname: '59.111.179.213',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'https://59.111.179.213:443/'
} sni: null
url Url {
protocol: 'https:',
slashes: true,
auth: null,
host: '59.111.239.61:443',
port: '443',
hostname: '59.111.239.61',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'https://59.111.239.61:443/'
} sni: null
url Url {
protocol: 'https:',
slashes: true,
auth: null,
host: '59.111.239.61:443',
port: '443',
hostname: '59.111.239.61',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'https://59.111.239.61:443/'
} sni: null
(end)
archlinux的笔记本作为网关,用v2ray把相关流量都转发到8080端口。说来也巧,之前有些时候v2ray拦sni也没拦到。 |
设备没有root,这个问题应该和证书没什么关系吧 |
等待一段时间再次进入歌单偶然解锁成功日志: TUNNEL > localhost:8081
TUNNEL > localhost:8081
TUNNEL > localhost:8081
TUNNEL > localhost:8080
MITM > interface3.music.163.com
TUNNEL > localhost:8080
MITM > interface3.music.163.com
TUNNEL > api.iplay.163.com:443
url Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'api.iplay.163.com:443',
port: '443',
hostname: 'api.iplay.163.com',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'https://api.iplay.163.com:443/'
} sni: api.iplay.163.com
MITM > interface3.music.163.com
TUNNEL > localhost:8081
MITM > interface3.music.163.com
TUNNEL > clientlog3.music.163.com:443
url Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'clientlog3.music.163.com:443',
port: '443',
hostname: 'clientlog3.music.163.com',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'https://clientlog3.music.163.com:443/'
} sni: clientlog3.music.163.com
|
确实没 sni 啊 下载 pac 文件打开看看里面有没有包含
没有的话手动加到 target.host 里 UnblockNeteaseMusic/src/hook.js Line 25 in 91e631d
|
有时步骤2连TUNNEL都没有…… |
哪个地方的pac文件? |
这个问题和证书没有直接关系 如果主站 https API (music.163.com) 用域名访问是"正常"的 |
|
确实在termux中curl -v https://music.163.com 后提示CA证书有问题。 function FindProxyForURL(url, host) {
if (host == 'music.163.com' || host == 'interface.music.163.com' || host == 'interface3.music.163.com' || host == 'apm.music.163.com' || host == 'apm3.music.163.com' || host == '59.111.239.61' || host == '59.111.239.62' || host == '59.111.179.213' || host == '59.111.181.35' || host == '59.111.181.38' || host == '59.111.181.60' || host == '223.252.199.66' || host == '223.252.199.67' || host == '59.111.160.195' || host == '59.111.160.197' || host == '193.112.159.225' || host == '118.24.63.156' || host == '115.236.121.1' || host == '115.236.118.33' || host == '39.105.63.80' || host == '47.100.127.239' || host == '2407:ae80:200:1001::20' || host == '59.111.239.61' || host == '59.111.239.62' || host == '59.111.179.213') {
return 'PROXY localhost:8080'
}
return 'DIRECT'
} 包含上述地址。 设系统代理后正常。 有可能有其他解决方案吗。 |
不清楚,第二个端口不要开试试看吧 |
这会导致Linux设备异常,不过没关系,谢谢你的帮助。 |
今天manjaro上也出现了这个问题,可能是网络变化(网络中断和恢复)导致的,重启docker容器就好了。 这个问题玄学在重启UnblockNeteaseMusic就会好,而不是重启网易云,安卓也是。 |
我似乎好像知道是为什么了 😂 |
好像也没什么问题 UnblockNeteaseMusic/src/hook.js Line 25 in 91e631d
你把 |
仍然重启好一次。 |
当时我应该是看到流量经过8080直接绕过了,因为直接打开music.163.com使用的是他原本的证书。 |
麻烦用 curl 确认一下
是内部网络挂了吗?或者端口 down 了?pac 还可以正常打开吗? |
现在不好复现那个时候的场景,我遇到之后再确认一下吧。 但现在安卓的那个问题是一直可以复现的。 |
好👌 |
问题已解决,将clientlog3.music.163.com屏蔽即可。 |
好的,屏蔽 clientlog 会影响听歌记录,自己权衡一下 |
但实际上它确实奏效了。可以看到音源变灰之前请求了一次clientlog3,随后便似乎不再发送请求。 我看到他发往IP:443的请求,其Host也都是IP:443,似乎还是HTTP非TLS,且body为空,可以看出是一个无意义的GET请求,我没有逆向过不知道这段代码他想做什么。 如果你想复现并调试的话,可以在linux下使用v2ray作透明代理,v2ray配置相关流量转发到8080端口(可以参考docker-compose那个issue),并用电脑开热点,用安卓设备连接,无需填写代理,即可复现。 简单的有一些客户端帮助复现,比方说我在维护的V2RayA,以及Clash、Qv2ray等。 |
一个好消息。 我将clientlog3.music.163.com加入hook.target.host后,同样解决了问题。 我猜测是否与x-napm-retry有关? |
复现和调试黑盒的意义不大,兜底的请求策略应该很复杂 嗯
|
观察后发现MITM除了给clientlog3.music.163.com颁发了TLS证书以外没有任何修改,猜测网易云可能是在从clientlog3.music.163.com获得了可用的证书后,使得https降级不再进行,导致后续MITM失败。 |
不是颁发证书,是导流到 https 端口上 问题应该在 keep-alive 上,之后的请求都使用了 clientlog 的那条 tcp 连接 |
Hello, UnblockNeteaseMusic会对clientlog进行修改吗,为什么加入host会影响听歌记录呢 |
不会修改,加入 host 会被拦截,拦截可能会导致请求失败 |
明白了,感谢解答。 我这里看到安卓设WLAN代理的情况下和拦截clientlog的情况是一样的,无法查看个人主页,说明应该是降级失败了。所以安卓这个代理方案一样会影响听歌记录。 |
用户页确实是降级失败,#30 (comment) ,但无法查看不代表影响记录 |
环境
安卓设备 网易云V7.0.20最新版
linux网关,通过tproxy全局代理转发请求至8080端口。
启动参数为
描述问题
无论是全部代理,还是部分代理,在程序启动后的第一次点进歌单后可解锁歌曲,再次进入则变灰,随后无论如何都是灰色。
复现步骤
启动程序,进入网易云,进入歌单,成功解锁,等待5秒,退出歌单。
进入歌单,解锁失败。
进入歌单,解锁失败。
重启网易云,解锁失败。
重启程序。
进入歌单,解锁成功,等待5秒,退出歌单。
进入歌单,解锁失败。
重启网易云,解锁失败。
复现几率在70%左右。
各类设备情况
iOS设备解锁正常
Linux网关解锁正常
安卓设备解锁异常(安装证书后仍然异常)
The text was updated successfully, but these errors were encountered: