分应用绕过,和给网站添加直连规则不是一回事

有时浏览器需要代理,某个手机应用却希望保持原来的网络连接。逐个寻找它使用的域名并写直连规则,不一定是最直接的办法。Clash Meta for Android 的访问控制可以在 Android VPN 接管流量之前,将选中的应用排除;它没有一个必须叫作「分应用代理」的按钮,实际入口在网络设置里。

本文以仍在维护的 Clash Meta for Android(CMFA)2.11.34.Meta、官方 v2.11.34 Release 为准,核对了该版本的简体中文标签、设置页面和 VPN 实现。项目最低要求 Android 5.0,README 推荐 Android 7.0 及以上;本篇面向已经安装并能正常连接的手机,不重新选架构、下载 APK 或替换核心。不同 CPU 架构的安装包共用这套设置逻辑,但这不等于已对每款手机实测。

操作限定在同一个 Android 用户或个人资料中;工作资料、应用分身、其他 VPN、应用自己设置的代理不套用本篇结论。这里的绕过只针对这条 CMFA VPN,不会关闭 Wi-Fi 路由器或上游网络上的代理。它也不是旧版 Clash for Android、FlClash 或桌面版 Clash Verge Rev 的菜单教程。

先确认是否允许直连:被排除的应用不再依赖 CMFA 的 VPN 连接,通常改用手机原来的网络。如果 Android 已开启「不使用 VPN 时阻止连接」(Block connections without VPN),这些应用可能直接断网。受公司管理或要求所有流量经过 VPN 的设备,不应为了照做教程关闭安全策略;先停止本次修改。

先看模式,再判断勾选意味着什么

「访问控制模式」(Access Control Mode)和「访问控制应用包列表」(Access Control Packages)是两个不同项目。列表只记录选中了哪些应用,模式才决定这些选择怎样生效。

界面选项已勾选应用的含义
允许所有应用
Allow all apps
不按这个名单筛选应用;旧的勾选记录不会因此被自动清空
仅允许已选择的应用
Allow selected apps
选中的应用进入 CMFA 的 VPN,未选中的应用不进入
不允许已选择的应用
Deny selected apps
选中的应用绕过 CMFA 的 VPN;本篇使用这个方向

这里的「不允许」是不允许进入这个 VPN,不是让应用不能上网。反过来,进入 VPN 也不代表一定使用远端节点:流量仍会按照当前配置和模式处理,可能命中直连规则。

先记录当前模式和完整勾选列表。原来使用「仅允许已选择的应用」时,不要沿用原名单直接切成「不允许已选择的应用」,否则全体应用的处理方向会改变。下面适用于原来允许所有应用,或已经使用排除模式、并且能确认已有名单用途的环境。

停止连接后设置名单,再重新启动

挑选可以接受短暂网络中断的时间,保存其他应用正在进行的工作。该版本运行中会禁用访问控制模式等 VPN 选项,所以先停止连接,再进入设置;不是把应用从最近任务里划掉,也不是强行结束进程。

  1. 回到 CMFA 主页,点击「运行中」(Running)停止连接,等状态显示「已停止」(Stopped)。
  2. 打开「设置 → 网络」(Settings → Network),确认原本用于接管流量的「自动路由系统流量」(Route System Traffic)已开启。若一直使用仅本地代理端口的方式,本篇的 VPN 排除步骤不适用。
  3. 打开「访问控制模式」,选择「不允许已选择的应用」(Deny selected apps)。不要同时改 DNS、IPv6 或其他网络选项。
  4. 进入「访问控制应用包列表」,找到目标应用并勾选。核对名称和包名,检查整个已有名单,确保每个勾选项都是希望绕过的应用;从「允许所有应用」切换过来时,历史勾选也会一起生效。
  5. 使用页面返回或系统返回,正常退出应用列表,再返回主页。这个版本在退出列表时保存选择,不需要寻找额外的「保存」按钮;不要选完就强制结束 CMFA。
  6. 点击主页「已停止」重新建立连接。如果 Android 请求 VPN 授权,先确认是自己启动的 CMFA 请求,再按系统提示处理。等待状态恢复运行后再测试。

为什么要重新连接:Android 的应用允许/排除名单在建立 VPN 时应用。CMFA 本版在运行中修改名单并正常返回后,也会自动停止再启动服务;因此不要在下载、通话中途尝试修改。本文先停止再设置,是为了能编辑模式,并让中断时点可控。

不建议用「全选」「反选」来完成只排除一个应用的操作。那些功能会批量改变名单。若找不到应用,先核对是否安装在当前个人资料中,以及列表是否隐藏了系统应用,不要随意勾选名字相近的组件。本篇没有取得与这个版本及页面完全匹配的真实截图,因此不使用旧版导入订阅图片冒充操作示意。

用目标应用验证,不要只看浏览器的出口

连接恢复后,重新打开刚刚勾选的那个应用,发起一次新的联网请求。另一个浏览器显示的出口只能说明浏览器自己的连接,不能证明目标应用已经绕过。应选择修改前已确认经过节点的目标做前后对照;原本就走直连的国内页面,不能作为唯一证据。

  • 检查目标应用:基本联网正常,新的连接表现与手机直连时一致。只有应用能明确显示自身出口、且直连与节点出口不同时,才用出口 IP 对照。
  • 检查其他应用:未排除的应用仍按原来的配置工作。状态栏保留 VPN 图标是正常的,不能据此判断所有应用都经过代理。
  • 排除后断网:先核对 Android 是否阻止非 VPN 连接,以及目标服务在当前网络下本来能否直连。绕过代理不会让原本无法直连的服务自动变得可用。
  • 感觉没有变化:检查是否选错模式、改到另一个应用分身、没有正常返回保存,或尚未建立新的 VPN 连接。不要一边换节点,一边清空数据。

想撤销时,先停止 CMFA,回到同一列表,只取消本次新增的勾选,正常返回后重新启动。如果本次还从「允许所有应用」改了模式,应按操作前记录恢复模式和名单,而不是清空其他人的设置。恢复进入 VPN 以后,目标应用仍按原配置分流,不保证每个请求都走节点。

整个操作不需要 Root、ADB、重装软件或编辑 YAML。保留订阅和已可用的节点设置,只改变明确要排除的应用及必要的访问控制模式,验证不符合预期就撤销。本篇是固定版本源码与 Android 官方机制的交叉核对,不是所有品牌手机的实机兼容保证。

官方来源与版本边界

版本号、文件名和界面文字可能随项目更新而变化,操作前请以链接中的项目文档为准。