排除整個App,與替網站新增直連規則不同

有時瀏覽器需要代理,另一個手機App卻希望維持原本的網路連線。逐一找出它使用的網域再寫直連規則,不一定是最直接的做法。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,以及App自行設定的代理,不直接套用本篇結論。這裡只繞過這條 CMFA VPN,不會關閉 Wi-Fi 路由器或上游網路上的代理。本文也不是舊版 Clash for Android、FlClash 或桌面版 Clash Verge Rev 的選單教學。

先確認是否允許直接連線:排除的App不再依賴 CMFA 的 VPN 連線,通常會改用手機原本的網路。若 Android 已啟用 Block connections without VPN(封鎖不經 VPN 的連線),這些App可能完全無法上網。受公司管理或要求所有流量通過 VPN 的裝置,不應為了跟著教學操作而關閉安全政策;請先停止本次修改。

先確認模式,再判斷勾選代表什麼

Access Control Mode(存取控制模式)與 Access Control Packages(應用程式套件清單)是兩個不同項目。清單只記錄選取了哪些App,模式才決定這些選取項目如何生效。

英文介面選項已勾選App的意義
Allow all apps
允許所有App
不依這份清單篩選App;過去儲存的勾選紀錄不會因此自動清除
Allow selected apps
僅允許選取的App
勾選的App進入 CMFA 的 VPN,未勾選的App不進入
Deny selected apps
排除選取的App
勾選的App繞過 CMFA 的 VPN;本篇採用這個方向

這裡的「Deny」是不允許進入這個 VPN,不是禁止App上網。反過來,進入 VPN 也不代表一定使用遠端節點:流量仍依目前的設定與模式處理,也可能符合直連規則。

請先記錄目前的模式與完整勾選清單。如果原本使用 Allow selected apps,不要保留原清單就直接切換為 Deny selected apps,否則所有App的選取邏輯會反轉。以下步驟適用於原本允許所有App,或已使用排除模式、而且能確認既有清單用途的環境。

先停止連線,設定清單後再啟動

選擇能接受短暫網路中斷的時間,並儲存其他App正在進行的工作。此版本執行時會停用存取控制模式等 VPN 選項,因此要先停止連線,再進入設定。這不是把App從最近使用的程式中滑掉,也不是強制停止程序。

  1. 回到 CMFA 首頁,點選 Running(執行中)停止連線,等待狀態顯示 Stopped(已停止)。
  2. 開啟 Settings → Network(設定 → 網路),確認原本用來接管流量的 Route System Traffic 已啟用。若一直只使用本機代理連接埠,本篇的 VPN 排除步驟不適用。
  3. 開啟 Access Control Mode,選擇 Deny selected apps。不要同時更改 DNS、IPv6 或其他網路選項。
  4. 進入 Access Control Packages,找到目標App並勾選。確認名稱與套件名稱,再檢查整份既有清單,確保每個勾選項目都是希望繞過的App;從 Allow all apps 切換過來時,過去留下的勾選也會一起生效。
  5. 使用頁面返回或 Android 的返回操作,正常離開App清單,再回到首頁。此版本在離開清單時儲存選取結果,不必尋找額外的「儲存」按鈕;不要選好後就強制停止 CMFA。
  6. 點選首頁的 Stopped,重新建立連線。若 Android 請求 VPN 授權,先確認是自己剛啟動的 CMFA 請求,再依系統提示處理。等待恢復執行後再測試。

為什麼要重新連線:Android 會在建立 VPN 時套用應用程式的允許或排除清單。本版 CMFA 若在執行中修改清單並正常返回,也會自動停止再啟動服務。因此不要在下載或通話途中嘗試修改。本文先停止再設定,是為了能編輯模式,也讓中斷的時間點可以控制。

只想排除一個App時,不建議使用全選或反向選取,因為這些功能會一次更動整份清單。若找不到App,先確認是否安裝在目前的設定檔中,以及清單是否隱藏了系統應用程式;不要隨意勾選名稱相近的元件。本篇沒有取得與此版本及頁面完全相符的真實截圖,因此不以舊版匯入訂閱的圖片冒充操作示意。

用目標App驗證,不要只看瀏覽器的出口

連線恢復後,重新開啟剛才勾選的那個App,發出一次新的網路請求。另一個瀏覽器顯示的出口,只能說明瀏覽器自己的連線,不能證明目標App已繞過。應選擇修改前已確認經過節點的目標做前後對照;原本就直接連線的國內網頁,不能作為唯一證據。

  • 檢查目標App:基本上網功能正常,新的連線表現與手機直接連線時一致。只有App能明確顯示自身出口,且直連與節點出口不同時,才比較出口 IP。
  • 檢查其他App:未排除的App仍依原本設定運作。狀態列繼續顯示 VPN 圖示是正常的,不能據此判斷所有App都經過代理。
  • 排除後無法上網:先確認 Android 是否封鎖非 VPN 連線,以及目標服務在目前網路下是否原本就能直接存取。繞過代理,不會讓原本無法直連的服務自動變得可用。
  • 看起來沒有變化:檢查是否選錯模式、改到另一個App分身、沒有正常返回以儲存,或還沒建立新的 VPN 連線。不要一邊切換節點,一邊清除資料。

要撤銷時,先停止 CMFA,回到同一份清單,只取消本次新增的勾選,正常返回後重新啟動。如果本次也從 Allow all apps 改了模式,請依操作前的紀錄還原模式和清單,而不是清空其他人的設定。恢復進入 VPN 後,目標App仍依原設定分流,不保證每個請求都經過節點。

整個操作不需要 Root、ADB、重新安裝軟體或編輯 YAML。保留訂閱與已可用的節點,只更改明確要排除的App及必要的存取控制模式;驗證不符合預期就撤銷。本篇交叉核對固定版本原始碼與 Android 官方機制,不代表已在所有品牌手機上完成實機相容性測試。

官方來源與版本邊界

版本號、檔案名稱與介面文字可能隨專案更新而變動,操作前請以連結中的專案文件為準。