先辨別內容:訂閱網址不等於訂閱格式
Clash 訂閱匯入失敗時,先查看伺服器回傳的內容,再決定是否需要轉換。以 https:// 開頭的訂閱網址只是取得內容的入口,回傳的可能是完整 YAML、以 Base64 編碼的節點清單,也可能是登入頁面或錯誤訊息。檔名是 clash.yaml 不代表內容一定是有效設定;用戶端顯示「訂閱」也不代表它支援所有節點格式。
本文主要適用於使用 mihomo 核心的 Clash 用戶端。mihomo 是 Clash Meta 後續採用的專案名稱;舊版 Clash 核心與不同圖形用戶端支援的協定及匯入方式並不完全相同。請分別確認「核心能否連線使用該節點」和「介面能否解析該分享連結」,不要只憑用戶端名稱判斷。
| 內容類型 | 辨識方式 | 包含資訊 | 匯入方式 |
|---|---|---|---|
| 完整 Clash YAML | proxies:、proxy-groups:、rules: 等欄位 | 節點、策略群組、分流規則及執行設定 | 匯入為設定檔或遠端設定 |
| 節點提供者 YAML | 通常只有頂層 proxies: | 節點清單,通常不含策略群組和規則 | 由主設定中的 proxy-providers 引用 |
| Base64 通用訂閱 | 一段編碼文字,解碼後通常是多行分享連結 | 各節點的連線參數 | 使用支援該格式的匯入器或轉換工具 |
| 單筆分享連結 | ss://、vmess://、trojan:// | 單一節點的協定參數與備註 | 貼到節點匯入入口,或轉換成 YAML 節點 |
Clash YAML:節點與分流設定都在同一份文件中
YAML 是結構化文字格式,不是節點協定。proxies 用來定義節點,proxy-groups 將節點組成策略群組,rules 則決定連線交由哪個策略處理。完整設定還能設定 mixed-port、dns 和 tun。從節點連結產生 YAML 時,這些設定需要透過轉換範本或本機設定補上。
完整結構範例:一個 Shadowsocks 節點
以下是完整設定的結構範例,並非可直接連線的訂閱。proxy.example.com 是文件範例網域,密碼也是示範值;實際使用時,必須改成服務商提供的位址、連接埠、加密方式和密碼。此範例未啟用 TUN,也未設定專用 DNS。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxies:
- name: SS 範例
type: ss
server: proxy.example.com
port: 8388
cipher: aes-128-gcm
password: "password"
udp: true
proxy-groups:
- name: 手動選擇
type: select
proxies:
- SS 範例
- DIRECT
rules:
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,手動選擇
7890是本機 HTTP/SOCKS 混合代理連接埠;8388是遠端節點連接埠,兩者不能互換。SS 範例在節點定義和策略群組引用中必須完全相同,包括空格。MATCH是兜底規則,應排在具體規則之後。此處只示範規則順序,並非完整的中國大陸與境外分流方案。- 縮排請使用空格,不要使用 Tab。建議替密碼加上引號,避免特殊字元被 YAML 誤認為語法。
只有節點清單時,優先考慮 proxy-providers
如果需要長期維護自己的分流規則,可以固定主設定,只更新節點提供者,減少每次更新訂閱對本機規則的影響。以下是設定片段,需合併至既有主設定;對應的本機檔案 ./providers/nodes.yaml 應包含頂層 proxies: 和節點清單。
proxy-providers:
本機節點:
type: file
path: ./providers/nodes.yaml
proxy-groups:
- name: 訂閱選擇
type: select
use:
- 本機節點
檔案路徑取決於核心的執行目錄和用戶端的管理方式,不一定位於下載資料夾。主設定中的規則也要指向 訂閱選擇。不要把只有節點的檔案當成已包含分流規則的完整設定。
Base64 訂閱:只是編碼包裝,不是加密
常見的通用訂閱會先合併多行分享連結,再將整段文字以 Base64 編碼。解碼後得到的是節點連結清單,不會自動變成 Clash YAML。有些服務也會直接回傳明文連結,因此辨識格式時應先查看內容,不要一律直接解碼。
解碼後通常會看到什麼
以下是兩筆示範連結,使用範例網域和示範密碼,無法用來連線。第一筆的使用者資訊解碼後是 aes-128-gcm:password;第二筆的 sni 則指定 TLS 使用的伺服器名稱。
ss://[email protected]:8388#SS-demo
trojan://[email protected]:443?sni=proxy.example.com#Trojan-demo
- 在本機讀取訂閱文字時,先確認內容是否已是 YAML 或明文分享連結。
- 確認是 Base64 後再解碼。常見變體包括使用 URL-safe 字元表,以及省略結尾填充符號;匯入器必須能處理這些差異。
- 逐行辨識協定,再將伺服器、憑證、傳輸方式等參數對應為 YAML 節點。
- 加入策略群組和規則,確認目標核心支援所有欄位後,再匯入用戶端。
解碼失敗也可能是因為取得了 HTML 頁面,例如要求被重新導向至登入頁,或伺服器回傳流量限制訊息。此時應檢查訂閱是否過期、回應狀態及回傳內容,而不是一再嘗試解碼。更改副檔名或反覆編碼,都無法解決伺服器端的授權問題。
ss、vmess、trojan:轉換時不可遺漏的欄位
分享連結並非完全統一的標準格式。同一協定可能有多種連結寫法,轉換器支援的查詢參數也各不相同。轉換成功應代表「保留連線所需的語意」,而不只是「產生一份語法正確的 YAML」。
| 協定 | YAML 核心欄位 | 容易遺漏的參數 |
|---|---|---|
| Shadowsocks | type: ss、server、port、cipher、password | 外掛類型與 plugin-opts;核心對新式加密方式的支援情況 |
| VMess | type: vmess、uuid、alterId、cipher | network、tls、servername、WebSocket 路徑及 Host |
| Trojan | type: trojan、server、port、password | sni、alpn、傳輸方式及憑證驗證設定 |
Shadowsocks:別混淆兩種編碼層級
常見的 SIP002 連結會對 @ 前的使用者資訊編碼;舊式分享連結則可能編碼更長的一段內容。通用訂閱還可能在外層再包一層 Base64。請區分「整份訂閱的編碼」和「單筆連結內部的編碼」。若連結帶有外掛參數,就不能只複製位址和密碼,否則可能遺漏建立連線所需的傳輸設定。
VMess:解碼 JSON 後仍須對應欄位
常見的 vmess:// 連結包含以 Base64 編碼的 JSON。其中 add 通常對應伺服器,id 對應 UUID,aid 對應 alterId,net 對應傳輸方式。現代 VMess AEAD 設定通常使用 alterId: 0,但不能因此將所有舊設定一律改成這個值。
如果來源節點使用 WebSocket,請檢查 ws-opts.path 與 ws-opts.headers.Host。TLS 伺服器名稱和 WebSocket 的 Host 用途不同,即使偶爾相同,也不能合併。使用 gRPC 時,還要確認 grpc-opts.grpc-service-name;轉換工具是否保留此欄位,比節點備註是否好看更重要。
Trojan:正確解碼 URI 參數
密碼或備註含有特殊字元時,分享連結可能會使用百分比編碼。匯入器應依 URI 規則解析,不要直接用冒號或井字號切割所有文字。轉換後請確認密碼、SNI 和 ALPN 都有保留。遇到憑證錯誤時,先檢查系統時間和伺服器名稱,不要把 skip-cert-verify: true 當成預設解法。
格式互轉:節點可以匯出,規則未必能還原
「Base64 訂閱轉 Clash」通常是先擷取節點,再套用設定範本;「Clash 轉通用訂閱」通常只會匯出能表示為分享連結的節點。兩者都不是完整的可逆轉換:策略群組、規則順序、DNS、TUN 設定,以及部分核心專屬參數,通常沒有對應的通用分享連結欄位。
轉換方式的選擇順序
- 優先使用原生格式:在服務商的訂閱管理頁選擇目標核心支援的 Clash/mihomo 格式,避免增加額外的轉換步驟。
- 少量節點手動輸入:逐項對照協定欄位填寫,適合一到數個節點,也方便核對 TLS 和傳輸參數。
- 大量節點使用本機轉換:先確認工具支援來源協定和目標核心,轉換後再檢查節點數量、欄位和警告訊息。
- 使用線上轉換時慎交憑證:先確認服務營運者及其資料處理方式。不要將含有權杖的訂閱網址放進公開文件或公開設定檔。
- 如果輸入有 12 個節點,輸出卻只有 9 個,請先檢查未支援的協定、重複名稱的處理方式和篩選條件,不要直接覆蓋舊設定。
- 把所有節點改成相同名稱,可能會造成策略群組引用混亂。若需重新命名,也要同步檢查群組中的引用。
- 使用遠端
proxy-providers的設定,匯出時不一定會自動展開提供者中的節點。請確認工具實際讀取了哪些資料。 - 更換轉換範本會改變規則和策略群組。請保留轉換前的本機副本,以便比較和還原。
如果目標是「保留自己的規則,只更新服務商節點」,建議考慮節點提供者或用戶端支援的覆寫機制,而不是每次都將完整設定來回轉換。也請確認用戶端直接編輯遠端設定的方式;有些修改會在下次更新訂閱時被覆蓋。
匯入與排錯:先檢查格式,再確認連線
以 Clash Verge Rev 常見介面為例,完整遠端設定通常可在「訂閱」→「新增」中輸入訂閱 URL,儲存後更新並選取該設定;本機 YAML 則可透過該頁的檔案匯入入口處理。按鈕名稱可能因版本而異,請以目前介面為準。其他用戶端可能將對應頁面稱為「設定」或「Profiles」;單一節點匯入入口不能和完整設定匯入入口混用。
匯入後分四步確認
- 確認設定已啟用:在訂閱或設定頁確認目前選取的設定。成功下載不代表核心已載入該設定。
- 檢查解析結果:開啟「代理」頁,確認策略群組和節點數量,並選取需要的節點;群組為空通常表示節點引用錯誤或提供者載入失敗。
- 確認本機連線入口:在設定中核對實際混合連接埠。本文範例使用
127.0.0.1:7890,實際用戶端可能採用其他連接埠,請勿直接照抄覆蓋。 - 檢查記錄:先處理 YAML 解析錯誤、代理名稱不存在及提供者讀取錯誤,再排查驗證失敗、TLS 錯誤或連線逾時。
| 狀況 | 優先檢查項目 | 處理方式 |
|---|---|---|
| 提示 YAML 解析失敗 | 下載內容是否為 HTML、縮排是否混用了 Tab | 重新取得正確格式,依錯誤行號修正結構 |
| 提示代理不存在 | 策略群組或規則引用的名稱 | 逐字核對節點、策略群組及提供者名稱 |
| 可以匯入,但所有節點都連線失敗 | 密碼、UUID、TLS 名稱與傳輸參數 | 逐項比對來源連結,先不要修改分流規則 |
| 更新訂閱後自訂規則消失 | 是否直接修改了遠端設定內容 | 使用用戶端覆寫功能或本機主設定管理規則 |
| 部分節點遭轉換器略過 | 來源協定支援情況、輸出記錄及篩選條件 | 改用支援該協定的轉換方式,或手動輸入 |
常見問題:更改副檔名、QR Code 與訂閱更新
將 Base64 文字改成 .yaml 檔名就能直接匯入嗎?
不能只靠更改檔名完成轉換。副檔名不會改變內容結構;必須先解碼並解析節點,再產生符合目標核心要求的 YAML。如果用戶端內建通用訂閱解析功能,可以由用戶端完成這個步驟;但這是用戶端的額外功能,不代表 YAML 解析器原本就能讀取分享連結。
QR Code 和分享連結有什麼關係?
QR Code 通常只是將分享連結以文字形式存入,也可能儲存訂閱 URL。掃描後,先確認取得的是單一節點連結還是遠端訂閱網址,再選擇匯入入口。QR Code 圖片也可能洩漏密碼或權杖,公開前應比照文字憑證妥善處理。
轉成單一本機檔案後,節點還會自動更新嗎?
單次產生的本機 YAML 不會自動得知來源訂閱已更新。你需要重新轉換並匯入,或改用支援定期取得內容的遠端設定或 HTTP 節點提供者。能否自動更新取決於用戶端儲存的更新網址和排程方式,與檔案中是否出現「訂閱」字樣無關。
該選擇哪種格式作為最終檔案?
需要同時使用節點、策略群組和分流規則,就保存完整的 Clash/mihomo YAML;需要長期維護自己的規則,就保存主設定並另外管理節點提供者;只需在相容用戶端之間搬移節點,則使用分享連結或通用訂閱。選擇時應考慮需要保留哪些資訊,而非哪種編碼看起來比較複雜。