NobyDa / Script

This project is based on the scripting capabilities of several excellent iOS proxy tools (e.g. Surge, Quantumult X)
GNU General Public License v3.0
8.15k stars 3.17k forks source link

哔哩自动切换区域在运行一段时间后失效 #382

Closed shelken closed 2 years ago

shelken commented 2 years ago

如题, app:quanx 系统:ios15.4 重启b站也没用,重启代理有用。但是一段时间之后就不生效了。从日看到可以匹配到脚本,但是没有切换的日志输出。

Sent from PPHub

NobyDa commented 2 years ago
  1. 添加相关reject规则
  2. 添加相关MITM,除脚本注释外再添加一个:ap?.biliapi.com
  3. 更新匹配URL正则
shelken commented 2 years ago

1.关于第一点,我之前确实加了,后来关了忘记启用,目前我重新启用了。(很好奇为什么不reject会影响脚本生效?求解释一下) 2.第二点,我先验证一下第一点,如果不行,我再加上看看是否可以; 3.完全与注释上的正则一致。 感谢回复

NobyDa commented 2 years ago

一般不会详细解释具体用途,因为如果读者缺少网络知识,会非常晦涩难懂;

由于QX完全以TUN(虚拟网卡)的方式接管几乎所有网络请求,并未在本地配置HTTP回环代理,这种方式对于app来说是无感知的,使得bilibili客户端可以判断为“无代理环境”,进而尝试使用新协议gRPC over HTTP2进行数据传输,导致脚本触发失败。

添加reject规则后,该规则将拦截bilibili gRPC服务端地址,迫使bilibili使用旧协议传输内容,使得脚本正常触发。

shelken commented 2 years ago

谢谢回答。几天测试之后,发现自动切换并不是很好用,经常的情况是直接点进番剧不会切换;不过手动在搜索框输入来触发切换这个是可以的,不过发现在客户端中长时间停留后不能触发,退出客户端后进入又可以生效。总体还是多一种在b站看新番的方式了,感谢。

shelken commented 2 years ago

修正一下:关于我说的自动切换,我检查了一下自己写的,发现DF那个位置是我写错了,应该是代理分组才对的,我写成DIRECT了; const DF = $.read('BiliArea_DF') || 'DIRECT'; //Sub-policy name used after region is blocked(e.g. url 404) const DF = $.read('BiliArea_DF') || 'BiliHK'; //Sub-policy name used after region is blocked(e.g. url 404)