跳到主要內容

首頁 / 部落格 / 設定基礎

多訂閱管理與合併:proxy-providers 的正確用法

設定基礎2026-07-011880 字約 4 分鐘
多訂閱管理與合併:proxy-providers 的正確用法

手上有兩三個訂閱是常態:一個主力、一個備用、可能還有個自建的。

在用戶端裡來回切換設定檔很麻煩,而且切換時會中斷所有連接。更好的做法是用 proxy-providers 把它們合併成一份設定

proxy-providers 是什麼

它把「節點從哪來」這件事從主設定裡剝離出去:主設定只描述策略組和規則,節點由 provider 動態提供。

結構對比傳統方式proxies 段寫死節點策略組引用節點名訂閱一變就要改設定provider 方式節點由 provider 提供
provider 會自己定期更新,主設定永遠不用動

基本寫法

proxy-providers:
  主力:
    type: http
    url: "https://主力订阅链接"
    interval: 3600
    path: ./providers/main.yaml
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
      lazy: true

  备用:
    type: http
    url: "https://备用订阅链接"
    interval: 3600
    path: ./providers/backup.yaml
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 600
      lazy: true

proxy-groups:
  - name: "🚀 节点选择"
    type: select
    use: [主力, 备用]          # 使用这两个 provider 的全部节点
    proxies: ["♻️ 自动选择", DIRECT]   # 也可以混入其他条目

  - name: "♻️ 自动选择"
    type: url-test
    use: [主力]
    url: http://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50

欄位說明

欄位說明
typehttp(遠程訂閱)/ file(本地檔案)/ inline
url訂閱地址
interval更新間隔(秒),3600 = 一小時
path本地快取路徑
header自定義請求頭,用於指定 User-Agent
filter只保留匹配的節點
exclude-filter排除匹配的節點
exclude-type排除某些協議類型
health-check健康檢查設定
override批量覆蓋節點屬性(Mihomo)

用 filter 清理節點列表

訂閱裡常混著「剩餘流量:xx GB」「距離到期:xx 天」這種偽節點,還有你用不上的地區。

proxy-providers:
  主力:
    type: http
    url: "..."
    interval: 3600
    path: ./providers/main.yaml
    # 只要這些地區
    filter: "(?i)香港|HK|日本|JP|新加坡|SG|美国|US"
    # 排除這些
    exclude-filter: "(?i)剩余|到期|流量|官网|过期|重置|订阅|测试"
    exclude-type: "ss|ssr"       # 排除某些协议
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300

User-Agent:拿不到 Clash 格式時用它

有些服務商會根據 UA 回傳不同格式的訂閱:

proxy-providers:
  主力:
    type: http
    url: "..."
    header:
      User-Agent: ["clash.meta"]

常用取值:clash.metamihomoclash-verge/v2.5.2ClashforWindows/0.19.23

如果 provider 一直載入不出節點,UA 是首要懷疑物件。

health-check:為什麼必須開

不開健康檢查的話,provider 裡的節點沒有延遲資料,url-test 組就無從選擇。

health-check:
  enable: true
  url: http://www.gstatic.com/generate_204
  interval: 300
  lazy: true
  expected-status: 204     # 期望的状态码

lazy: true 讓沒有流量經過時跳過檢查,省資源。

override:批量修改節點屬性

Mihomo 特有,用來統一調整 provider 裡所有節點:

proxy-providers:
  主力:
    type: http
    url: "..."
    override:
      udp: true                    # 强制开启 UDP
      skip-cert-verify: false      # 强制校验证书
      additional-prefix: "[主力] "  # 节点名加前缀
      # additional-suffix: " ⚡"

additional-prefix 在多訂閱場景下很實用——節點列表裡一眼能看出這個節點來自哪個訂閱。

一套完整的多訂閱設定

proxy-providers:
  A订阅:
    type: http
    url: "https://a.example.com/sub"
    interval: 3600
    path: ./providers/a.yaml
    exclude-filter: "(?i)剩余|到期|官网"
    override:
      additional-prefix: "[A] "
    health-check: { enable: true, url: http://www.gstatic.com/generate_204, interval: 300, lazy: true }

  B订阅:
    type: http
    url: "https://b.example.com/sub"
    interval: 3600
    path: ./providers/b.yaml
    exclude-filter: "(?i)剩余|到期|官网"
    override:
      additional-prefix: "[B] "
    health-check: { enable: true, url: http://www.gstatic.com/generate_204, interval: 600, lazy: true }

proxy-groups:
  # 總開關
  - name: "🚀 节点选择"
    type: select
    proxies: ["♻️ 全局最优", "🅰️ A订阅", "🅱️ B订阅", "🇭🇰 香港", DIRECT]

  # 跨訂閱自動選最快
  - name: "♻️ 全局最优"
    type: url-test
    use: [A订阅, B订阅]
    interval: 300
    tolerance: 50
    lazy: true

  # 按訂閱分組,方便對比和排查
  - name: "🅰️ A订阅"
    type: url-test
    use: [A订阅]
    interval: 300
    tolerance: 50
  - name: "🅱️ B订阅"
    type: url-test
    use: [B订阅]
    interval: 300
    tolerance: 50

  # 跨訂閱按地區分組
  - name: "🇭🇰 香港"
    type: url-test
    use: [A订阅, B订阅]
    filter: "(?i)香港|HK|Hong ?Kong"
    interval: 300
    tolerance: 50

  # 主備切換:A 掛了自動用 B
  - name: "🛡 主备切换"
    type: fallback
    proxies: ["🅰️ A订阅", "🅱️ B订阅"]
    interval: 300
這套設定解決了什麼1一份設定管所有訂閱不用來回切設定檔,切換不中斷連接2跨訂閱自動選最優「全局最優」會在兩家的節點裡挑最快的3按訂閱分組便於排查懷疑某家不行時,直接切到那個組測4主備自動切換A 全掛時自動降級到 B5節點名帶前綴一眼看出來源

本地檔案與內聯

本地檔案(自己維護的節點):

proxy-providers:
  自建:
    type: file
    path: ./providers/self.yaml
    health-check: { enable: true, url: http://www.gstatic.com/generate_204, interval: 300 }

檔案格式:

proxies:
  - name: "我的小鸡"
    type: trojan
    server: my.example.com
    port: 443
    password: "pwd"

內聯(直接寫在主設定裡):

proxy-providers:
  自建:
    type: inline
    payload:
      - name: "我的小鸡"
        type: trojan
        server: my.example.com
        port: 443
        password: "pwd"

排查:provider 載入失敗

排查順序打開 path 指向的快取檔案,看內容是不是正常的 YAML內容是 HTML 頁面 —— url 回傳的是網頁,地址錯了或需要登入內容是一長串 base64 —— 訂閱格式不對,需要換 Clash 格式的連結檔案不存在 —— 下載失敗,當前網路訪問不了訂閱網域檔案正常但節點為空 —— filter 正則寫得太嚴,把所有節點都過濾掉了日誌切 debug,搜 provider 名字看載入記錄

更新不下來的處理

如果訂閱地址本身當前網路訪問不了,可以給 provider 指定走代理下載。部分版本支援在 provider 裡直接寫:

proxy-providers:
  主力:
    type: http
    url: "..."
    proxy: DIRECT      # 或指定某个策略组

不支援的話,在用戶端的「訂閱更新走代理」選項裡開啟。

和「多份 Profile」的區別

Clash Verge 裡可以儲存多份設定卡片,點一下切換。這和 proxy-providers 是兩種思路:

多份 Profileproxy-providers
切換方式手動點卡片不需要切換
切換代價核心重載,連接中斷
節點合併做不到可以跨訂閱分組
設定維護每份獨立一份主設定
適合場景差異大(工作/家庭規則完全不同)只是節點來源不同

如果只是訂閱來源不同、規則一樣,用 provider;如果規則也完全不同,用多份 Profile。

小結

  • 多訂閱優先用 proxy-providers 合併,不要靠切換設定檔
  • exclude-filter 清掉「剩餘流量」這類偽節點
  • health-check 必須開,否則 url-test 沒資料
  • 備用訂閱的 interval 設長一些,減少無謂連接
  • additional-prefix 標明來源,排查時省事
  • 載入失敗先看 path 裡的快取檔案長什麼樣

相關:策略組類型詳解節點命名與分組正則


相關文件