先釐清:訂閱網址、內容格式與代理協定
「訂閱匯入失敗」不一定代表網址失效。同一個連結可能回傳 Clash YAML、Base64 編碼的節點清單,甚至是登入頁面。用戶端取得內容後,還得判斷結構、解析節點,再交由核心建立連線。任何一步不相符,都可能導致匯入失敗或節點無法使用。
排查時,把以下三個層次分開檢查,比反覆按「更新訂閱」更有效。
- 訂閱網址:下載設定檔的 HTTP 或 HTTPS 網址。路徑是否帶有
.yaml副檔名,並不能證明回應內容的格式。 - 內容格式:節點與設定採用的資料結構,例如 YAML、以 Base64 包裝的 URI 清單或 SIP008 JSON。
- 代理協定:實際連線使用的是 Shadowsocks、VMess、Trojan 等哪一種協定。格式轉換不會把一種代理協定變成另一種。
YAML:完整設定檔不等於節點提供器
YAML 是設定檔的撰寫格式,不是代理協定。完整的 Clash 設定通常會包含 proxies、proxy-groups、rules 等欄位,也可能透過 proxy-providers 引用外部節點。除了伺服器位址與密碼,還能設定代理群組選擇、規則順序、DNS 與監聽連接埠等內容。
完整設定檔可包含分流邏輯
以下範例用於辨識設定結構。網域名稱與密碼僅供示範,無法用來連線;mixed-port: 7890 表示本機混合代理的監聽連接埠,不是遠端伺服器連接埠。
mixed-port: 7890
allow-lan: false
mode: rule
proxies:
- name: "範例 SS 節點"
type: ss
server: node.example.com
port: 443
cipher: aes-128-gcm
password: "demo-password"
proxy-groups:
- name: "出口選擇"
type: select
proxies:
- "範例 SS 節點"
- DIRECT
rules:
- DOMAIN-SUFFIX,example.org,DIRECT
- MATCH,出口選擇
這裡的 443 是範例中的遠端連接埠。規則由上而下比對:連線至 example.org 及其子網域時直連,其他連線則由「出口選擇」群組決定。匯入後如果只看到一個節點,卻沒有相應的代理群組與規則,請確認用戶端是否將來源內容當成「匯入節點」,而非匯入完整設定檔。
只有 proxies 的檔案可能是提供器內容
節點提供器檔案通常會在頂層以 proxies: 儲存節點清單,再由主設定檔中的 proxy-providers 載入,並透過代理群組的 use 引用。這類檔案不含完整的分流策略,不能只因為「這是 YAML」就當成可直接切換使用的完整設定檔。
反過來說,完整設定檔也不應直接貼進只接受節點清單的入口。若要保留本機規則並只更新服務商提供的節點,應使用用戶端支援的提供器或覆寫方案,而不是每次更新後手動重改整份遠端設定檔。具體設定方式請參閱協定手冊。
Base64:經過一層編碼的節點連結清單
常見的「Base64 訂閱」通常會先將多筆節點 URI 逐行排列,再把整段文字進行 Base64 編碼。解碼後可能會看到以 ss://、vmess://、trojan:// 等開頭的連結。有些訂閱會直接回傳未編碼的明文連結。
- Base64 不具加密功能:取得內容的人通常可以還原其中的伺服器位址、驗證資訊與節點備註。
- 節點內容本身也可能經過編碼:例如某些 URI 的驗證欄位或酬載本身也使用 Base64;解開訂閱外層後,不代表所有欄位都已是明文。
- 擴充欄位的支援程度不一:傳輸層、TLS、外掛參數或新協定欄位,必須同時獲得匯入器與核心支援,才可能完整保留。
Base64 只是外層包裝,通常不包含 Clash 的 rules 與 proxy-groups。將其轉換為 Clash 設定時,新出現的「自動選擇」、「故障轉移」或分流規則,多半來自轉換範本,而非從原始節點清單還原而來。
SIP008:Shadowsocks 的結構化伺服器清單
SIP008 是 Shadowsocks 生態系中的線上設定交付規範,以 JSON 表示伺服器清單。它不是涵蓋所有代理協定的通用訂閱標準,也無法描述 Clash 的策略群組與網域規則。常見的 SIP008 v1 文件會包含 version 與 servers 欄位,伺服器項目則列出位址、連接埠、加密方法、密碼與備註。
{
"version": 1,
"servers": [
{
"id": "c71e2e80-925f-4cf6-a437-ef9b79e9cb17",
"remarks": "範例 SS 節點",
"server": "node.example.com",
"server_port": 443,
"method": "aes-128-gcm",
"password": "demo-password"
}
]
}
轉換為 Clash 節點時,通常會將 server_port 對應至 port、將 method 對應至 cipher、將 remarks 對應至 name,再補上 type: ss。這是欄位對應,不是協定轉換。
如果項目包含 plugin 與 plugin_opts,還要確認目標核心支援的外掛及其參數格式。轉換器能輸出 YAML,不代表外掛交握一定相容。只有伺服器支援相應的連線方式,且用戶端設定正確,才能建立連線。
Clash 系用戶端可直接匯入哪些格式
請區分「核心讀取設定」與「圖形用戶端協助轉換」。Clash 與 mihomo 主要使用 Clash 風格的 YAML 設定檔;部分圖形用戶端另提供分享連結匯入、訂閱辨識或範本合併功能。不能因為某個用戶端支援 Base64,就推定所有 Clash 用戶端都支援。
| 取得的內容 | 適用的匯入入口 | 需要確認的事項 |
|---|---|---|
| Clash 完整 YAML | 匯入設定檔或遠端設定 | 核心是否支援相關協定與設定欄位 |
| YAML 節點提供器 | 主設定檔中的 proxy-providers | 代理群組是否透過 use 引用提供器 |
| Base64 或明文 URI 清單 | 用戶端明確支援的節點匯入功能,或可信任的轉換流程 | 是否需要補上代理群組、規則與 DNS |
| SIP008 JSON | 明確支援 SIP008 的匯入或轉換入口 | SS 加密方法與外掛參數是否相容 |
各用戶端的選單名稱並不一致。操作時,請先區分「匯入設定檔」、「新增遠端設定」與「匯入節點」這三種用途,不要把節點分享連結貼進只接受 HTTPS 訂閱網址的欄位。初次安裝可先依照快速入門教學匯入設定,再處理格式相容問題。
訂閱轉換會遺失什麼:節點以外的資訊最容易消失
「轉換成功」只代表目標檔案已產生,不代表原始設定已完整複製。請先確認來源格式是否包含目標資訊,再檢查轉換器是否確實保留。
從完整 YAML 轉換為節點連結
- 規則與順序:
DOMAIN-SUFFIX、IP-CIDR、MATCH等規則通常不會包含在單一節點 URI 中。 - 代理群組關係:
select、url-test、fallback的層級,以及測速網址、間隔等設定通常都無法保留。 - 本機執行參數:DNS、TUN、監聽位址、混合連接埠、控制介面等設定不屬於節點分享內容。
- 外部參照:規則集、節點提供器及其更新策略,可能在匯出時遭到忽略,或只保留當下展開後的節點快照。
從節點清單轉換為完整 YAML
轉換器必須另外決定節點要放進哪個群組、哪些網域直連,以及預設流量要走哪裡。不同範本會產生不同結果。同一批節點轉成兩份設定檔後,造訪同一個網站可能會走不同出口,原因通常是規則有差異,而不是節點本身改變了。
節點名稱也值得檢查。重新命名、去重或依地區分組,可能使原有規則引用失效;有些名稱經過 URI 編碼,轉換時也必須正確解碼。若匯入時顯示「找不到代理」,請先比對 proxy-groups 與 rules 中引用的名稱,不要急著刪除所有規則。
轉換無法憑空補上伺服器不支援的功能
將 Shadowsocks 項目改寫為 Trojan 或其他協定欄位,不會讓原伺服器支援該協定。同樣地,來源內容若缺少 TLS 伺服器名稱、傳輸路徑或必要的驗證欄位,轉換器也無法憑空推算。請重新取得正確的目標訂閱,不要為了讓檔案能儲存就隨意補上參數。
可重複使用的訂閱辨識與轉換流程
- 保留原始來源:記下訂閱入口的格式說明與取得時間,並備份目前可用的設定檔。不要直接覆寫舊設定檔的唯一副本來進行測試。
- 確認回應內容:檢查下載是否成功。以
<!DOCTYPE html>或登入表單開頭的回應是網頁,不是可用的代理設定;即使 HTTP 狀態碼為 200,也不能排除這種情況。 - 檢查結構,而非檔名:頂層包含
proxies:等欄位通常表示 YAML;包含version與servers的 JSON 可能是 SIP008;一長串編碼文字則應在本機解碼後檢查結構。 - 優先使用原生入口:如果服務商提供適用於相應核心的 Clash 或 mihomo 格式,請優先重新取得。只有在沒有合適入口時,才考慮可信任的本機或自架轉換工具。
- 保留更新管道:匯出一次 YAML 得到的是設定快照,不會自動追蹤原網址的後續變更。遠端轉換網址則可能仰賴轉換服務持續運作,並讓該服務取得原始訂閱內容。
- 匯入後逐項核對:比較來源與目標的節點數、協定種類、代理群組與最終預設規則,再測試一個應直連的目標及一個應走代理的目標。
例如來源清單有 12 個項目,目標只剩 9 個,就應確認另外 3 個是否因不支援該協定、欄位缺漏、重複篩除或名稱衝突而遭略過。這個數字只是核對方法的範例,不代表轉換工具的正常損耗範圍;不應在未查明原因時,就將節點減少視為理所當然。
匯入失敗或更新無效:依錯誤發生的層次排查
出現 YAML 語法錯誤
先檢查錯誤行附近的縮排、冒號與引號。YAML 縮排必須使用空格,不能用 Tab 代替。範例中的密碼加上引號,是為了避免特殊字元被解讀為結構符號。如果實際回應是 JSON 或 HTML,調整 YAML 縮排並沒有幫助,應回頭檢查訂閱入口。
設定檔可匯入,但沒有節點或無法連線
先確認檔案是否只有提供器內容,以及主設定檔是否有引用該提供器。若節點存在卻無法連線,請接著檢查核心記錄中的「不支援的代理類型」、「未知的加密方法」或外掛參數錯誤。格式正確不代表連線可用,後者還取決於伺服器狀態、網路路徑與帳戶是否有效。
剛修改的規則,更新一次就恢復原狀
遠端設定更新通常會直接取代下載內容。在遠端設定檔上直接編輯,可能會在下次更新時被覆蓋。需要長期保留的規則,應放進用戶端支援的覆寫、合併或獨立主設定檔機制,並確認最終載入順序。規則會由上而下比對,因此將自訂規則加在 MATCH 後面,通常不會得到預期結果。