先说 Shadowrocket:
优点是价格实惠、功能(协议)多操作简单,更新要么失联要么鸡血( 2.1.23 的 MitM Bug 半年没修留下心理阴影),如果你没什么需求就是纯粹爬个墙那么它性价比高,但是小问题烦人。
然后是 Quantumult X:
自 Quantumult 开始就是体验上很接近的 Surge 的工具,最重要的一点就是稳定,相比 Shadowrocket 早期限速 70M 然后各种小问题基本上可以开了就当不存在,在 X 版后引入了开机启动、Filter/Rewrite Remote (类似于 Surge Ruleset )是 Shadowrocket 没有的,Rewrite Remote 也比 Surge 强大,Surge 的 Rewrite 和 hostname 不能做外部资源引用,JS 脚本生态和 Surge 相当,Shadowrocket 也有脚本功能,但是基本没见人写,但是,Quantumult 的作者也有自己的执着造成一些体验问题:
- JS 脚本远程砍了(这个放在第一点说其实是我基本不用脚本,而且这是盗版党造成的)
- VMess URI 自己造标准(这就是很多人经常说的为什么扫一扫、订阅链接添加不上 v2 协议是不是不支持 balabala )
- 规则类型优先级问题,在我看来这是很多余的设计,本来就是简单的前面规则覆盖后面规则的行为,非要搞类型优先级,那么就带来一些使用场景问题:
(在订阅时 DOMAIN 会转换成 host,这个 host 也是 Quantumult 作者自己造的轮子,以下仍以 DOAMIN 表述)
DOMAIN-KEYWORD 规则优先级带来的问题:
1. 本来 DOMAIN-KEYWORD,adservice,REJECT 就能解决的问题,如果有条代理或者直连规则为
xxx.com 而它有广告域名为
adservice.xxx.com 我还要专门写一条 DOMAIN,
adservice.xxx.com,REJECT
2. 在自定义规则时,比如想对 Instagram 进行指定节点,那么你用 DOMAIN-KEYWORD,instagram,ProxyA 就存在优先级问题,因为其他人的规则中就可能存在 Instagram 的域名如 DOMAIN-SUFFIX,
instagram.com,PROXY 和 DOMAIN-SUFFIX,
cdninstagram.com,PROXY
USER-AGENT 规则优先级带来的问题:
1. 对于不同应用使用统一域名时不能再简单的使用 User-Agent 规则进行分流,比如说 YouTube 和 YouTube Music,其主要传输内容域名均为
googlevideo.com ,这时候你是不能写两条 DOMAIN-SUFFIX 的,那么在 Surge 一类的工具上简单的做法就是加一条 YouTube Music 的 UA 如 USER-AGENT,com.google.ios.youtubemusic*,PROXY 和 USER-AGENT,YouTubeMusic*,PROXY,但是在 X 中 UA 类型规则优先级极低也就没法用
2. 有一些游戏应用是通过看广告解锁功能,解决方法也同上在广告规则前以 UA 规则指定直连来覆盖广告规则,但是同样是优先级问题造成没法用
如果说 DOMAIN-KEYWORD 规则的优先级问题解决方式是麻烦,那么 USER-AGENT 规则的优先级问题就是无解
但目前来说我仍推荐 Quantumult X,供参考