自从我更换了美区 Apple ID 后,原先购买的 Surge 就不能再用了,当然,现在 Surge 也更新了新的版本,对我来说,花大价钱购买一款高级网络调试工具然后单纯用来浏览 谷歌 和 YouTube,想想就觉得挺蠢的,好在 MacOS 版本的 Surge 2 授权还在,毕竟这个不跟随 Apple ID,我还可以继续使用,将来 Surge 2 停止更新维护了,我会考虑继续坚持几年再买新的。

总之在苹果手机端使用 Shadowrocket 客户端有一段时间了,线上也有一款 Quantumult,定位和 Shadowrocket 几乎一致,于是我也就购买了,在使用了一段时间之后,我来做个简短的小报告,作为实际的使用用户,以开发者的角度谈谈这两款应用,以及最终我的结论。

聊聊 Shadowrocket 和 Quantumult 的区别

请注意,这不是 app 推荐或者使用体验对比,虽然文中难以避免会在功能上进行对比,但本文无意与做全面且详尽的评测对比,并且内容偏向主观。

界面方面

Quantumult 有一套全新的界面,这比起使用 iOS 默认风格界面的 Shadowrocket 来说,给人耳目一新的感觉,全黑的风格独树一帜,对用了几年的 Shadowrocket 用户来说,有着无与伦比的本能吸引,当然,纯黑的界面也造成了一旦新鲜感过后,会觉得无比压抑,好在作者迭代很快,迅速推出了新的红色系列,以及再后来的各种颜色系列,但需要使用 URL Scheme 来开启。

Quantumult 做了一个很有意思的运行界面,它能粗略的基于 ip 探测线路的位置并显示在地图上,这样就显得很有趣,这是我喜欢 Quantumult 的地方,对于一成不变的 Shadowrocket 来说,确实很有感觉。

Quantumult 的操作逻辑很奇怪,很多地方甚至是违反 iOS 设计语言的,比如相对于 Shadowrocket 订阅的“subscribe”叫做“favorite”,用于判断代理的“rule”叫做“filter”,UDP 转发并不(无法)跟随代理设置,是独立的,这样就导致你如果要 UDP 转发,那么抱歉,你必须在切换代理后手动切换转发线路,而 Shadowrocket 则把这个配置放置在了设置页面中,直接叫“UDP”,不细心找的话你找不着,默认则是对应线路,无法单独配置只能开关。

如果你用了 SSR 的订阅,在 Quantumult 中,所有的订阅是叠在一起的,仅仅是在一个 section 中罢了,在 Shadowrocket 中则直接显示在首页并按照不同的订阅区分了 section,这让人用起来感觉很直观,当然,把订阅项目放在了线路上方我至今也不知道这个逻辑应该怎么理解,总之更新订阅倒是方便了很多,作为对比 Quantumult 则放在了 favorite 里边,需要左划才能点击更新,这个确实有点让人头疼。

至于测速,则 Quantumult 放在了一个独立的页面“Statistics”里,可能作者的意思是在这里统计每一次测速的结果?

总之,你需要到一个单独的页面点击测速,然后在一片线路的海洋里自行寻找那个速度最快的,记录下它的名字,然后回到设置页面在“Servers”里自己选择。

在新版本的 Quantumult 中,多了一个“Switch”的 tab,这个 tab 的功能是呼出一个弹出的窗口,在这个窗口里能快速切换线路,好在,上文中的麻烦过程终于可以一定程度上简化一下了。

Shadowrocket 上则没这么麻烦,在首页直接点击测速,然后自己比较哪个线路快就用哪个就好了,非常人性化。

功能方面

大概讨论了几个引起我注意的 UE 问题后,我们再来说说更多人在乎的功能, Shadowrocket 迭代了多年,支持的协议是最多的了,而 Quantumult 则只有 ss 和 ssr,当然这也足够大部分人使用,比如我自己就从来没有用到过 Shadowrocket 提供的那些协议,这里我感触比较深的一点就是测速。

Quantumult 给我的第一印象就是测速快,Quantumult 使用的方案与 Shadowrocket 不同,它使用了 http request 来测速,测到的结果普遍要比 Shadowrocket 的 tcp 或者 icmp 慢,但更贴近于真实效果,后者的 tcp 方案没有具体说明所以我只能从测速的结果上判断两者使用的是不同的方案,毕竟同样的线路, Shadowrocket 测得延迟 50ms,到了 Quantumult 就是 200ms 左右。

但 Quantumult 的测速是并发的,多少个线路,就多少个并发,一次点击,得到结果的时间取决于最慢的那条线路,基本上是一下就好了,而 Shadowrocket 就要痛苦很多了,测试的结果直接显示在线路名称后边是个优势,但由于刷新机制问题导致每次测速你无法的知这个结果到底是上次的还是这次的,一个一个刷新导致一旦遇到线路超级慢或者 down 了的时候,就只能呆呆地盯着发呆。

对于规则导入来说, Shadowrocket 是支持 Surge 规则的, Quantumult 其实也支持只是没有说明,你可以导入 Surge 规则,一样能够读取并自动转换。值得一提的是,这里 Shadowrocket 有一个我非常喜爱的小功能,它能够记忆你导入规则的 url,由于我在 GitHub 做了一个每周自动更新的黑白名单,这样我在 Shadowrocket 上就可以每隔一段时间点击一下导入来刷新规则了,至于 Quantumult 则不能,导入就是导入,如果你需要刷新,请彻底删除后重新导入。

性能方面

至于很多人讨论关于 Shadowrocket 的稳定性,这一点我并没有遇到过, Shadowrocket 有 bug 是毋庸置疑的,但我遇到的都是可以接受的视觉问题,并没有影响到功能本身,频繁的掉线等问题也并没有遇到。就我自己的感受来说, Shadowrocket 和 Quantumult 在这一点上并没有什么区别,耗电也基本相当,当然我从来没有长时间开启过 Shadowrocket 的日志功能,仅在特殊调试的时候开启过几分钟。

值得一提的是在使用 Shadowrocket 的时候我遇到过网页打不开的情况,这也可能是其他用户经常遇到的所谓“断线”的问题?

具体体现为测速是正常的,但点开网页则立即变为空白,我遭遇这个问题时多半是因为 DNS 挂了,这个时候去设置里更换 DNS 就 ok 了,可能是由于我用 Quantumult 的时间短,并没有遇到同样的问题。

另外值得吐槽的就是 Shadowrocket 和 Quantumult 两者都支持自动测速,但我从来没有搞懂这个测速是怎么工作的,我期望他们能像 Surge 那样自动测速并切换线路,但显然两者都不能很好的工作。

所以我只能每次都打开对应的 app,点击测速,然后自己手动选一个在当前网络下速度比较快的线路,在这个过程中,还是 Shadowrocket 的流程更为直接一些,在首页完成一切,在 Quantumult 中则要点到统计,再点测速,然后找到那个比较快的,记住名字,点切换线路,在弹出的窗口里滚动找到那个线路。

最后总结

除了上述的各种吐槽外,有一点是无可否认的 Shadowrocket 已经进入了稳定期,其作者并不愿意继续快速迭代,当然实际上 app 的功能也十分好用,而 Quantumult 则还处于快速迭代的成长期,上文中的种种诟病可能在下一次更新时就不再存在,毕竟一个活跃的项目更能给人安全感,哪怕当前还略有不足。