設定知識 預計閱讀 10 分鐘

訂閱格式說明:Clash YAML、Base64 節點連結與訂閱轉換差異

說明 Clash YAML 設定、Base64 編碼節點清單與單一協定連結的結構差異,並介紹訂閱轉換原理、風險及正確匯入方式。

一、先看回傳內容,再選擇匯入方式

Clash 用戶端通常需要相容於目前核心的 YAML 設定;Base64 編碼節點清單與單一協定連結都不等於完整設定。檔案名稱有「訂閱」字樣或副檔名是 .yaml,都不代表一定能匯入。格式取決於伺服器回傳的文字結構,以及用戶端是否提供相應的解析或轉換功能。

訂閱網址是取得內容的入口,不代表固定格式。同一網址可能依請求參數或 User-Agent 回傳不同內容:瀏覽器看到的是節點連結,用戶端取得的卻是 YAML,反過來也有可能。因此,「瀏覽器能開啟網址」和「Clash 用戶端能載入設定」必須分別確認。

內容類型常見特徵適合的處理方式
Clash YAML可看到 proxies:、proxy-groups:、rules: 等欄位確認核心相容性後,匯入為設定
Base64 節點清單外層是一長串編碼文字,解碼後通常是逐行排列的協定連結使用支援此輸入格式的工具,轉換成目標設定
單一協定連結以 ss://、vmess://、trojan:// 等開頭使用節點匯入功能,或轉換後加入設定
網頁或 API 錯誤出現 <!DOCTYPE html>、登入提示或錯誤 JSON先修正訂閱請求,不要繼續轉換

二、Clash YAML:節點、策略群組與規則的用途

YAML 是序列化格式,而 Clash 設定是核心所定義的一組欄位。合法的 YAML 不一定是合法的 Clash 設定。例如,只有一個 message 欄位的 API 回應雖然符合 YAML 語法,卻沒有可用的代理設定。

  • proxies:節點定義,包含協定類型、伺服器、連接埠及驗證參數。
  • proxy-providers:節點提供者,可從檔案或遠端網址載入節點集合。
  • proxy-groups:策略群組,定義手動選擇、延遲測試或故障轉移等選擇方式。
  • rules:依序比對流量,並交由 DIRECT、REJECT 或已定義的策略處理。
  • dns、tun:設定名稱解析與流量接管;並非每份節點訂閱都包含這些內容。

用來辨識欄位的最小範例

以下是直連規則設定,mixed-port: 7890 表示 HTTP 與 SOCKS 共用監聽連接埠。此設定沒有遠端節點,也不會啟用系統代理或 TUN,僅用來說明完整設定與節點清單的差異。用戶端可能透過介面設定覆寫連接埠等欄位,實際值以執行中的設定為準。

direct-demo.yaml · 僅供直連示範
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

proxies: []

proxy-groups:
  - name: LOCAL
    type: select
    proxies:
      - DIRECT

rules:
  - MATCH,LOCAL

此處的 MATCH,LOCAL 指向已定義的 LOCAL 策略群組。常見的 MATCH,PROXY 也要求設定中存在名為 PROXY 的節點或策略群組;它不是會自動產生的內建出口。只複製規則卻漏掉策略群組,會造成參照錯誤。

完整設定與 provider 檔案不可混用

節點 provider 檔案通常以 proxies: 為核心,只提供節點集合;規則 provider 檔案則通常使用 payload:。這些檔案需要由主設定引用,不應直接當成包含策略群組與分流規則的完整訂閱。尤其不要把規則 provider 的網址填入節點訂閱欄位。

三、Base64 與協定連結:解碼不等於轉換

Base64 是編碼方式,不是加密,也不是代理協定。傳統訂閱常將多條協定連結逐行排列,再把整段文字進行 Base64 編碼。解碼後得到的仍是節點描述,不會自動產生策略群組、DNS 或規則。

此外,有些協定連結本身也使用 Base64。例如常見的 VMess 分享格式會將 JSON 節點參數編碼後放在 vmess:// 後方;Shadowsocks 連結也有不同的編碼形式。不要混淆「整份訂閱的編碼層」與「單一協定連結的編碼層」,更不要反覆解碼,直到文字看起來熟悉為止。

  1. 辨識外層:原文已是逐行排列的 ss:// 等連結,就不必先對整段內容進行 Base64 解碼。
  2. 在本機解碼:確認是編碼後的節點清單時,使用可信任的本機工具檢視結果,並留意 URL-safe 字元及缺少填充符號的情況。
  3. 核對欄位:檢查協定、連接埠、傳輸方式與 TLS 參數,不要只確認「節點名稱有顯示」。
  4. 產生設定:將可解析的節點轉換成目標核心欄位,再補上策略群組與規則;這一步才是訂閱轉換。

四、訂閱轉換:目標核心、範本與憑證風險

轉換工具通常會執行三個步驟:下載來源內容、解析節點參數、依目標格式輸出。若套用了規則範本,還會另外產生策略群組、分流規則,甚至遠端規則集參照。因此,同一組節點套用不同範本後,最終的流量路由可能完全不同。

優先使用服務提供者提供的相容格式

如果訂閱管理頁面提供「Clash」、「Clash Meta」或「mihomo」選項,請優先選擇符合實際核心的格式。Clash Meta 現稱為 mihomo;舊版 Clash 核心與 mihomo 支援的欄位及協定範圍並不相同。轉換器介面中的目標名稱也可能沿用舊稱,最後仍應以輸出欄位和目標核心文件為準。

轉換無法讓舊核心新增協定支援。來源節點使用目標核心不支援的協定或傳輸參數時,工具可能報錯、略過節點或捨棄欄位。將輸出副檔名改成 .yaml,無法解決相容性問題。

公開轉換服務可存取哪些資訊

  • 來源訂閱 URL,包括路徑、查詢參數及存取權杖。
  • 取得的伺服器位址、連接埠、密碼、UUID 等節點憑證。
  • 訂閱回傳的方案資訊,以及與轉換請求相關的存取記錄。

HTTPS 可保護傳輸過程,但無法阻止轉換服務本身讀取輸入內容。需要轉換時,優先使用可信任的本機工具或自行架設的服務;將網頁儲存在本機,不代表轉換也在本機完成,還要確認它是否會向遠端後端送出請求。

轉換後務必複查的項目

比對來源內容,確認節點數量、協定類型、TLS 的 servername、WebSocket 的 ws-opts、gRPC 的 grpc-opts,以及驗證資訊是否保留。不要為了排除連線錯誤而一律啟用 skip-cert-verify。也要檢查範本是否加入陌生的 rule-providers、DNS 上游或外部控制設定;轉換成功只代表有產生輸出,不代表設定符合預期。

五、在 Clash 用戶端匯入並驗證

先分清楚「匯入遠端設定」與「新增單一節點」。多數 Clash 圖形介面用戶端以設定檔為管理單位,不保證能直接接受任意協定連結。以下以 Clash Verge Rev 的「訂閱」頁面為例;其他產品的入口可能稱為「設定」,按鈕名稱也會隨版本而異。

  1. 備份目前設定:保存現有訂閱網址、本機覆寫設定及目前使用的策略群組選擇。測試新設定時先保留舊設定,方便切換回去。
  2. 新增遠端設定:前往「訂閱」,將服務提供者提供的 Clash 或 mihomo 訂閱網址填入 URL 欄位,執行「匯入」,再選取新增的設定。
  3. 匯入本機檔案:如果手邊有 YAML 檔案,請使用用戶端的本機設定匯入功能;不要將磁碟路徑貼到遠端 URL 欄位。
  4. 確認解析結果:前往「代理」頁面,確認策略群組與節點是否出現。接著查看記錄,區分設定載入失敗、provider 下載失敗與節點連線失敗。
  5. 驗證流量:確認實際監聽連接埠,再啟用系統代理測試瀏覽器連線。若執行中的連接埠是 7890,應用程式的連線位址應為本機 127.0.0.1:7890,而不是訂閱伺服器位址。

系統代理與 TUN 決定流量如何進入核心,並不負責將 Base64 節點清單轉換成 YAML。匯入失敗時反覆切換 TUN,通常只會增加排查變數。先讓設定成功載入,再處理流量接管範圍、DNS 與路由問題。

需要長期保留的規則應放在用戶端支援的覆寫機制中。直接編輯遠端訂閱下載的檔案,下次更新時可能會還原成服務提供者的原始內容。覆寫涉及清單合併時,也要確認用戶端採用附加、置前或取代策略,避免將最後的 MATCH 規則放在自訂規則之前。

六、匯入失敗:依錯誤發生層級排查

現象或記錄片段優先檢查下一步
401 Unauthorized / 403 Forbidden權杖是否過期、服務提供者的限制,以及網址是否完整複製重新取得訂閱網址;不要試圖透過轉換繞過存取限制
yaml: unmarshal errors回應是否為 YAML、欄位型別是否正確在本機檢視實際回應,核對錯誤行附近的結構
proxy not found規則或策略群組引用的名稱是否存在逐字核對名稱、大小寫,以及轉換後的重新命名結果
節點數量少於來源訂閱轉換器是否略過不支援的協定或篩除節點檢查轉換記錄、篩選條件及目標核心的支援範圍
設定已載入,但連線逾時節點可連線性、驗證資訊、DNS、TLS 與傳輸參數檢查連線記錄,不要先重新轉換格式

YAML 縮排與欄位型別

YAML 縮排使用空格,不要使用 Tab。清單項目必須保留 -,映射通常使用冒號加空格。密碼或名稱含有冒號、井字號等字元時,應依 YAML 規則加上引號。驗證值建議使用字串,避免純數字或特殊文字被解析成其他型別。

瀏覽器能下載,用戶端卻無法更新

檢查重新導向、憑證、請求標頭差異,以及更新訂閱時使用直連還是代理路徑。如果訂閱只能透過代理存取,而目前設定尚無可用節點,就可能遇到更新依賴尚未建立的情況。可以先使用服務提供者提供的本機 YAML 完成首次匯入,再檢查遠端更新路徑。

匯入新協定後顯示不支援

在用戶端的「關於」頁面確認用戶端版本與核心版本,兩者不是同一個編號。記下確切協定名稱、核心版本與錯誤訊息,再查詢相容性。不要只因安裝檔名稱包含 Clash,就認定所有欄位都通用;舊版 Clash 設定、mihomo 擴充欄位及用戶端自訂覆寫指令碼都需要分別判斷。

處理順序固定為:確認回應內容 → 辨識格式 → 核對目標核心 → 匯入設定 → 檢查連線。取得相容的 YAML 後就不必再轉換;需要轉換時,請保留來源內容與轉換設定,方便比對並找出遺失欄位。

下載 Clash依平台選擇用戶端