iOS Surge 开启后无法使用部分国产 APP 或网络出错的解决办法

July 26, 2022

越来越多的国内 APP 都在产品层面禁止了开启代理使用。例如交通银行买单吧、部分地方的健康码和银行客户端。对于常年开启 Surge 这类代理工具的用户来说,这就非常恶心了。

一个解决办法是开启 Surge 的 TUN Only 兼容模式:

[General]
compatibility-mode = 3

除了用配置文件开启外,你也可以直接在 Surge 的更多设置 => 兼容模式 里选择 TUN Only

上面的问题是解决了,不过按照 Surge 文档上的说法,开启 TUN Only 模式后会导致 HTTP 相关的高级功能失效,且性能会稍有下降。

针对上述情况,可以使用 Surge 提供的模块功能以及 HTTP API 搭配 iOS 的「快捷指令」程序实现自动化开启和关闭 TUN Only 兼容模式,遗憾的是,这种方法也是有缺点的,因为快捷指令是在打开 APP 之后才会触发 Surge API 调用,大部分 APP 在打开的一瞬间就会触发网络请求,这时候还是会检测到代理报错。

如果你想试一试这种方法,可以参考下述操作方法:

首先添加以下配置到你的 Surge 配置文件开启 Surge 的 HTTP API 功能。

[General]
http-api = 你的密码@127.0.0.1:7170

打开 Surge 安装以下模块,你可以将以下代码上传到合适的地方再用 URL 导入,也可以直接新建本地模块。

#!name=TUN Only
#!desc=开启 Tun Only 兼容模式,解决某些 APP 不能正常连接的问题
#!system=ios

[General]
compatibility-mode = 3

一切准备就绪后,打开手机上的快捷指令 APP 开始创建自动化流程

Step 1: 打开「快捷指令」新建自动化

step 1

Step 2

20220726011955-step 2

Step 3: 选取要监听的 APP,可以选取多个

20220726011950-step 3

选好了下一步

Step 4: 继续新建操作,选择「获取 URL 内容」

20220726011957-step 4

Step 5: 填写请求参数

20220726011959-step 5

Step 6: 配置完毕

20220726011952-Step 7

到这里就实现了当打开 xxx APP 的时候自动开启 Surge 的 TUN Only 模式。如果要实现关闭 APP 时自动关闭 TUN Only 模式,你可以按照上述步骤再来一遍。

最近发现有用户在 Github 开源了一个用于优化 Surge 和某些应用兼容性的模块,可以给我们参考:https://github.com/VirgilClyne/VirgilClyne/tree/main/modules/General

结束语

检测到开代理就不让用是一种非常恶心用户的做法,这种行为并不能实质性提升应用的安全性,只能说设计这套逻辑的相关 PD 和开发者都非常不专业。所以遇到这种表现的 APP,我更建议你通过 APP 的投诉入口或者客服电话进行投诉和建议。

本文原载于:baiyun.me

原文链接:https://baiyun.me/surge-with-china-apps

如果你喜欢我的内容,请考虑请我喝杯咖啡☕吧,非常感谢🥰 。

If you like my contents, please support me via BuyMeCoffee, Thanks a lot.