訂閱格式說明: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,僅用來說明完整設定與節點清單的差異。用戶端可能透過介面設定覆寫連接埠等欄位,實際值以執行中的設定為準。
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 連結也有不同的編碼形式。不要混淆「整份訂閱的編碼層」與「單一協定連結的編碼層」,更不要反覆解碼,直到文字看起來熟悉為止。
- 辨識外層:原文已是逐行排列的
ss://等連結,就不必先對整段內容進行 Base64 解碼。 - 在本機解碼:確認是編碼後的節點清單時,使用可信任的本機工具檢視結果,並留意 URL-safe 字元及缺少填充符號的情況。
- 核對欄位:檢查協定、連接埠、傳輸方式與 TLS 參數,不要只確認「節點名稱有顯示」。
- 產生設定:將可解析的節點轉換成目標核心欄位,再補上策略群組與規則;這一步才是訂閱轉換。
四、訂閱轉換:目標核心、範本與憑證風險
轉換工具通常會執行三個步驟:下載來源內容、解析節點參數、依目標格式輸出。若套用了規則範本,還會另外產生策略群組、分流規則,甚至遠端規則集參照。因此,同一組節點套用不同範本後,最終的流量路由可能完全不同。
優先使用服務提供者提供的相容格式
如果訂閱管理頁面提供「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 的「訂閱」頁面為例;其他產品的入口可能稱為「設定」,按鈕名稱也會隨版本而異。
- 備份目前設定:保存現有訂閱網址、本機覆寫設定及目前使用的策略群組選擇。測試新設定時先保留舊設定,方便切換回去。
- 新增遠端設定:前往「訂閱」,將服務提供者提供的 Clash 或 mihomo 訂閱網址填入 URL 欄位,執行「匯入」,再選取新增的設定。
- 匯入本機檔案:如果手邊有 YAML 檔案,請使用用戶端的本機設定匯入功能;不要將磁碟路徑貼到遠端 URL 欄位。
- 確認解析結果:前往「代理」頁面,確認策略群組與節點是否出現。接著查看記錄,區分設定載入失敗、provider 下載失敗與節點連線失敗。
- 驗證流量:確認實際監聽連接埠,再啟用系統代理測試瀏覽器連線。若執行中的連接埠是
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 後就不必再轉換;需要轉換時,請保留來源內容與轉換設定,方便比對並找出遺失欄位。