設定實務 · Clash 技術部落格

Clash 自動選擇節點怎麼設定?url-test、fallback 與測速容差

需要低延遲自動選擇可用 url-test,需要固定主備順序可用 fallback。健康檢查不能代替實際業務,用固定節點對照網頁、長回覆和下載,再調整檢查位址、interval 與 tolerance。

  • 策略群組
  • url-test
  • fallback
本文目錄

自動選擇有不同的需求:有人希望延遲更低,有人只想在主要線路失效時使用備用,也有人需要在登入期間固定出口。確認自己要哪種結果,再選策略群組與測試方法;看似相近的設定,可能會影響長時間連線與帳號工作階段。

url-test、fallback、select 和 load-balance 怎麼選?

策略群組的選擇方式

type它怎麼決定適合情境
select由使用者手動選擇疑難排解、固定帳號出口、重要長連線
url-test根據健康檢查延遲選擇同等級節點的日常自動選擇
fallback按清單順序選第一條可用項主備切換,優先級明確
load-balance按策略把連線分給多項用於並行分流,不依固定主備順序選擇

候選節點:可用性、篩選與空清單

建立自動群組前,用 select 固定候選節點,各完成一次實際請求。協定不受目前核心支援、訂閱失效或在本機網路完全不可達的節點,應先移出候選;否則健康檢查會持續出現錯誤,大量重複錯誤也會讓有效日誌難以查找。

節點可直接寫進 proxies,也可用 use 引用 proxy-providers。provider 更新會改變候選名單,檢查名稱過濾、地區篩選與空清單,也讓節點名稱能區分地區或線路。

健康檢查的 URL 與實際業務請求

健康檢查會讓每個候選節點存取 url 指定的位址。位址本身不穩定、在某些地區被拒絕,或必須登入,整組結果都會失真。通常選擇穩定、回應很小、無需帳號的 HTTPS 位址,例如回傳 204 的探測頁。

測試 URL 最好和日常存取內容接近,但不要使用帶個人 token 的 API,也不要給第三方網站製造高頻請求。同一個節點探測成功,只能說明這個 URL 在當時可達,影片、AI 串流回覆和 UDP 仍要在對應應用裡驗證。

自包含的 url-test 結構
proxy-groups:
  - name: 自动选择
    type: url-test
    include-all: true
    url: https://www.gstatic.com/generate_204
    interval: 300
    tolerance: 80
    lazy: true

interval、tolerance、lazy 與探測超時

interval
兩次健康檢查的間隔,單位為秒。太短會增加流量和伺服器端壓力。
tolerance
url-test 的延遲容差,單位為毫秒。差距不明顯時保留目前選擇,可減少來回切換。
lazy
組沒有被使用時減少或停止主動檢查,適合不是一直使用的策略群組。
timeout
某些設定可設單次探測等待時間。太短會把偶發慢回應當作不可用。

沒有一組參數適合所有網路。家庭網路穩定、節點延遲接近時,可用較長 interval 和適度 tolerance。行動網路頻繁切換,也不應把間隔壓到幾秒;新請求可能頻繁更換出口,既有連線是否中斷取決於節點故障,以及用戶端是否關閉舊連線。

修改後觀察一段實際使用。如果 Connections 中的節點幾分鐘內來回變化,而各候選只差幾十毫秒,先增大 tolerance 或 interval,而不是繼續增加節點。

fallback 的主線路與備用順序

fallback 不會因為第二條延遲更低就跳過去。只要第一條通過健康檢查,它就繼續使用第一條;第一條不可用,才選擇後面的可用項。因此設定順序應體現業務偏好,例如穩定主線在前、成本更高或地區不同的備用線在後。

完整定義主線與備用組,filter 關鍵詞要按節點名稱修改
proxy-groups:
  - name: 主线路
    type: select
    include-all: true
    filter: "(?i)主线"
    proxies: [DIRECT]

  - name: 同区备用
    type: select
    include-all: true
    filter: "(?i)同区备用"
    proxies: [DIRECT]

  - name: 异区备用
    type: select
    include-all: true
    filter: "(?i)异区备用"
    proxies: [DIRECT]

  - name: 主备线路
    type: fallback
    proxies: [主线路, 同区备用, 异区备用]
    url: https://www.gstatic.com/generate_204
    interval: 300
    lazy: true

主線路恢復後,fallback 會在後續健康檢查中重新判斷。切回時既有連線不一定移轉,新請求才更容易看到新出口;帳號管理介面和長時間下載仍應考慮使用固定 select,避免出口變化影響工作階段。

按地區組合 url-test 與 fallback

候選節點很多時,不必全部放進同一個 url-test。可以為每個地區分別建立 url-test,再把地區群組依優先順序加入 fallback。每個地區先選延遲較低的節點;目前地區無法使用時,再切換到下一個地區。Connections 中還能看到請求經過了哪些策略群組。

群組的巢狀層數越多,空 provider、循環引用和同名群組越難發現。兩層足夠就不要加第三層;每個地區群組都應能單獨使用,再加入主備群組。

兩層決策示例,地區關鍵詞要匹配自己的節點名稱
proxy-groups:
  - name: 香港自动
    type: url-test
    include-all: true
    filter: "(?i)香港|HK"
    url: https://www.gstatic.com/generate_204
    interval: 300
    tolerance: 80

  - name: 日本自动
    type: url-test
    include-all: true
    filter: "(?i)日本|JP"
    url: https://www.gstatic.com/generate_204
    interval: 300
    tolerance: 80

  - name: 地区主备
    type: fallback
    proxies: [香港自动, 日本自动]
    url: https://www.gstatic.com/generate_204
    interval: 300

在獨立測試組裡觀察選擇與故障切換

前面的 YAML 片段只定義策略群組。編輯完整設定的副本,把新增群組加入既有 proxy-groups 清單,保留原來的節點、proxy-providers 與 rules;不要用片段替換整份設定,也不要重複寫 proxy-groups 鍵。

以 Clash Verge Rev v1.6.2 及之後版本為例,將完整 YAML 副本拖入用戶端,建立本機設定後選擇使用。新群組應出現在 Proxies;載入失敗時重新選取原設定並查看日誌,不覆蓋原訂閱檔案。

不干擾日常會話的驗證方法

  1. 使用設定副本裡的獨立測試群組

    不要在正在下載、開會或登入重要帳號時試切換。

  2. 手動觸發一次健康檢查

    記錄每個候選的結果和目前選取項目;示例的下層 select 群組應指向實際代理節點,而非 DIRECT。

  3. 讓瀏覽器走該策略群組

    Connections 應顯示上層組、下層節點和實際出口。

  4. 觀察下一輪檢查

    url-test 看容差內是否保持,fallback 看清單前項是否優先。

測試 fallback 時,可以把一個已確認失效、且不含敏感資訊的測試節點暫時放在最前,只在獨立群組裡觀察它是否切換到第二項;完成後立即移除。不要透過斷網、關閉系統代理或破壞正式環境設定來製造故障,那會同時改變太多變數。

空名單、探測失敗與頻繁換節點的處理

組顯示空白

檢查 proxies / use 引用、provider 更新時間和節點篩選結果。

全部候選 Timeout

單獨測試 health URL,再比較目前網路與實際節點請求。

url-test 一直在兩條節點間切換

增加 tolerance 或 interval,並確認探測位址穩定。

fallback 總選第二項

第一項沒有通過健康檢查;查看它的具體錯誤而不是調順序。

切換後帳號頻繁重新登入

把敏感會話放進固定 select 組,避免自動變更出口。

provider 更新後組突然為空

核對過濾表達式和新節點名稱,舊快取可能掩蓋此前問題。

用網頁、長回覆與下載驗收自動組

把目標服務的規則指向自動組,連續完成幾次網頁、串流回覆或下載。Connections 應顯示預期的上層組和具體節點;url-test 不應因微小延遲差頻繁跳動,fallback 應在主線路可用時保持第一項。

健康檢查正常而原業務仍失敗時,改用 select 固定目前節點重測,再檢查協議、DNS 或目標服務。

參考資料