先區分訂閱 URL、節點清單與 Clash YAML
「訂閱連結」首先是一個 URL,而不是固定的檔案格式。客戶端存取 URL 後,伺服器才會回傳實際內容。回應結果可能是完整的 Clash YAML、只包含節點的 YAML、經過 Base64 編碼的通用節點清單,也可能是網頁、JSON 錯誤資訊或已失效提示。能否直接匯入,取決於客戶端是否能處理最終回傳的內容。
Clash 與 Clash Meta(目前常用名稱為 mihomo)核心的設定入口以 YAML 為基礎。完整設定通常包含連接埠、執行模式、節點、代理群組、規則和 DNS 等欄位。部分圖形客戶端會在匯入前辨識通用訂閱,並呼叫內建的轉換功能;核心直接讀取設定檔時,通常要求輸入內容已是可解析的 YAML。
三種常見結果的核心差異
| 類型 | 開頭或結構特徵 | 常見處理方式 |
|---|---|---|
| Clash YAML | proxies:、proxy-groups:、rules: |
作為遠端設定匯入,或儲存為 YAML 檔案 |
| Base64 節點清單 | 連續的字母、數字、+、/、=,正文很少換行 |
先解碼確認協定,再轉換為 Clash YAML |
| 通用 URI 清單 | ss://、vmess://、trojan://、hysteria2:// |
由支援相應協定的客戶端匯入,或轉換為目標格式 |
在 Clash 客戶端中匯入訂閱 URL
匯入前先確認系統時間正確,並確保連結能透過 HTTPS 正常存取。系統時間相差幾分鐘,可能導致 TLS 憑證驗證失敗;複製連結時多出空格、換行或中文標點,也會造成請求失敗。URL 應從 https:// 開始,複製後末尾不應附帶句號。
Clash Verge Rev 的遠端設定入口
以 Clash Verge Rev 2.3.1 的介面為例,可進入「訂閱」→「新增」,將類型設為「Remote」,在 URL 輸入框貼上網址後確認。匯入完成後,在設定卡片上執行啟用操作。不同版本可能會將新增入口顯示為加號按鈕,但遠端設定、URL 和更新間隔三個欄位的意義相同。
- 開啟「訂閱」頁面,選擇「新增」或加號按鈕。
- 選擇遠端設定類型,貼上完整的 HTTPS 網址。
- 名稱可填寫服務用途,例如「日常規則設定」,避免使用權杖作為名稱。
- 儲存後等待下載與 YAML 解析完成,再將該設定設為目前使用的設定。
- 進入「代理」頁面選擇代理群組策略,最後在「設定」→「系統設定」中開啟系統代理。
Clash for Windows 的舊版介面路徑
仍在維護舊環境時,Clash for Windows 0.20.39 的入口是「Profiles」→ 頂部 URL 輸入框 →「Download」。下載成功後,需要點選對應設定卡片,使其成為目前使用的設定。該客戶端已停止更新,這條路徑主要用於辨識既有安裝;新部署應優先選擇仍在維護且使用 mihomo 核心的客戶端。
匯入後不要只檢查「下載成功」
- 檢查設定卡片是否顯示更新時間,而不是只出現在歷史清單中。
- 檢查「代理」頁面是否出現預期的代理群組,例如「節點選擇」、「自動選擇」或「故障轉移」。
- 檢查目前模式。規則設定通常應使用 Rule 模式,而不是 Global 模式。
- 檢查本機監聽連接埠。常見的混合連接埠是
7890,但實際值應以設定中的mixed-port為準。 - 開啟系統代理後,確認系統 HTTP 與 HTTPS 代理指向
127.0.0.1和客戶端實際使用的連接埠。
從回應內容辨識訂閱格式
在瀏覽器中直接開啟訂閱 URL 時,可能會下載檔案,也可能顯示一長串字元。最可靠的判斷依據是 HTTP 狀態、回應標頭和回應正文,而不是檔案副檔名。伺服器即使使用 .txt 路徑,也可能回傳標準 YAML;反過來,名為 config.yaml 的網址也可能回傳登入頁面。
使用 curl 查看狀態與回應標頭
curl -L --compressed -D headers.txt \
-o subscription.txt \
"https://sub.example.net/profile?token=demo-token"
-L 會跟隨 301、302、307 或 308 重新導向,--compressed 允許 curl 解壓縮 gzip 或 Brotli 以外其支援的壓縮回應,-D 會將回應標頭另外寫入檔案。檢查最終狀態是否為 200,再查看 Content-Type。常見 YAML 回應可能使用 text/yaml、application/yaml 或一般的 text/plain,因此 MIME 類型只能作為輔助判斷。
完整 Clash YAML 的結構
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxies:
- name: Example-Trojan
type: trojan
server: edge.example.net
port: 443
password: sample-credential
sni: edge.example.net
proxy-groups:
- name: 節點選擇
type: select
proxies:
- Example-Trojan
- DIRECT
rules:
- DOMAIN-SUFFIX,example.org,節點選擇
- GEOIP,CN,DIRECT
- MATCH,節點選擇
只要縮排與欄位合法,這類內容即可儲存為 UTF-8 編碼的 config.yaml。YAML 使用空格表達層級,不能將 Tab 當作縮排。名稱含有冒號、井號或前後空格時,建議使用引號包覆。設定能夠解析,也不代表節點參數一定有效;協定類型、連接埠、TLS、SNI 和驗證資訊仍需與伺服器一致。
只含節點的 provider YAML
另一種常見的回傳內容只有頂層 proxies:,沒有 rules: 和 proxy-groups:。它通常是代理提供者檔案,適合由完整設定中的 proxy-providers 引用,不一定能單獨作為主要設定啟動。
proxy-providers:
remote-nodes:
type: http
url: "https://sub.example.net/provider.yaml?token=demo-token"
path: ./providers/remote-nodes.yaml
interval: 21600
health-check:
enable: true
interval: 600
url: https://www.gstatic.com/generate_204
proxy-groups:
- name: 自動選擇
type: url-test
use:
- remote-nodes
url: https://www.gstatic.com/generate_204
interval: 300
這裡的 interval: 21600 表示每 21600 秒,也就是每 6 小時更新一次 provider;健康檢查每 600 秒執行一次;代理群組測速間隔為 300 秒。這三個間隔各自獨立,不能將測速成功理解為訂閱已完成更新。
Base64 與通用節點訂閱怎麼處理
Base64 是編碼方式,不是代理協定。它常用於將多行 URI 合併成一段便於傳輸的文字。典型正文由大小寫字母、數字、加號、斜線和結尾等號組成;URL-safe Base64 也可能使用連字號和底線。單憑字元外觀無法完全確定格式,必須解碼後查看內容。
離線解碼並辨識 URI
在 macOS 或 Linux 中,可以先複製回應檔案,再執行以下命令。GNU coreutils 常用 base64 -d,macOS 內建工具也支援 -D;若目前平台的參數不同,可先執行 base64 --help 查看。
base64 -d subscription.txt > decoded.txt
head -n 8 decoded.txt
解碼結果通常是一行一個節點 URI,例如 ss://、trojan:// 或 vmess://。其中 VMess URI 的主體還可能再次包含 Base64 編碼的 JSON。不要反覆解碼整份檔案,應先確認第一層結果是否已出現可讀的協定前綴。
為什麼 Base64 訂閱不能總是直接交給 Clash 核心
Clash 設定載入器讀取的是 YAML 結構,而通用 Base64 清單只是多個節點 URI。圖形客戶端若提供「通用訂閱匯入」或內建轉換功能,可能會自動將 URI 轉換成 proxies 項目;直接執行 mihomo 二進位檔並透過 -f 指定設定時,則應先取得 Clash 或 mihomo 格式的 YAML。
- 服務提供方同時提供「Clash」、「Mihomo」或「Clash Meta」格式時,優先選擇對應入口。
- 需要轉換時,優先使用服務提供方的格式轉換功能或本機轉換工具。
- 轉換目標要符合核心能力。包含 VLESS、Reality、Hysteria 2 等欄位時,應選擇 mihomo 相容格式。
- 轉換後檢查節點數量、代理群組、規則和 DNS,不能只看檔案是否成功產生。
更新間隔、快取與訂閱失效處理
訂閱不需要每分鐘重新整理。遠端設定通常包含完整規則和節點清單,頻繁請求會增加伺服器負擔,也可能觸發速率限制。日常使用可設定為每 6 至 24 小時更新一次;節點變化頻繁時可縮短至 1 小時,但不建議將自動更新間隔設為幾十秒。
常用間隔換算
| 更新頻率 | 秒數 | 適用情境 |
|---|---|---|
| 每 1 小時 | 3600 |
節點變更較頻繁的臨時設定 |
| 每 6 小時 | 21600 |
一般遠端 provider |
| 每 12 小時 | 43200 |
規則與節點變化較少的設定 |
| 每 24 小時 | 86400 |
穩定的完整設定訂閱 |
手動更新後仍顯示舊節點
- 確認更新的是目前啟用的設定,而不是清單中的另一個同名設定。
- 查看客戶端日誌中的請求時間、HTTP 狀態和解析錯誤。
- 排除訂閱 URL 的瀏覽器快取影響,使用 curl 加上
Cache-Control: no-cache請求標頭進行比對。 - 檢查伺服器是否透過 CDN 快取舊內容,回應標頭中的
Age可用於輔助判斷。 - 如果使用
proxy-providers,也要檢查 provider 檔案的更新時間,而不是只看主要設定的更新時間。 - 更新成功後重新選擇代理群組,已刪除的節點可能仍被舊工作階段暫時使用。
HTTP 狀態對應的排查方向
401或403:權杖無效、權限不足、來源受限或未符合請求標頭要求。404:路徑已變更,或複製網址時遺失了部分參數。429:請求過於頻繁,應延長更新間隔並等待限制解除。500、502、503:伺服器或上游暫時異常,保留現有設定並稍後重試。200但解析失敗:回應可能是登入頁面、錯誤 JSON、Base64 文字或不相容的 YAML。
YAML 解析失敗與匯入後無法連線
訂閱匯入報錯應分成「下載階段」、「解析階段」和「執行階段」處理。下載階段檢查 HTTP 與 TLS;解析階段檢查 YAML 行號和欄位類型;執行階段則檢查節點握手、DNS、路由規則和系統代理。將三類問題混在一起,容易反覆更換訂閱網址,卻無法定位實際故障。
常見 YAML 錯誤
- 縮排錯誤:清單項目前的空格層級不一致,或混入 Tab。
- 重複鍵:同一層出現兩個
rules:或兩個dns:,後者可能覆蓋前者,也可能直接觸發嚴格解析錯誤。 - 冒號未加引號:節點名稱含有「地區:線路」時,未加引號可能被辨識為鍵值結構。
- 欄位類型錯誤:
port應為數字,卻被寫成無法轉換的文字;布林值應使用true或false。 - 核心不相容:設定包含 mihomo 擴充欄位,但客戶端仍使用較舊的 Clash 核心。
匯入正常但瀏覽器無法開啟網頁
- 確認目前代理群組已選擇可用節點,而不是處於空群組或已失效節點。
- 確認系統代理的監聽位址與連接埠一致。設定為
mixed-port: 7890時,系統代理通常指向127.0.0.1:7890。 - 在 Rule 模式下查看請求命中了哪條規則。末尾的
MATCH策略會影響未被前置規則匹配的流量。 - 檢查 DNS 設定。啟用
fake-ip時,應確保相關應用程式流量確實經過核心,避免解析路徑與連線路徑分離。 - 只有在需要接管不遵循系統代理的應用程式時才開啟 TUN。開啟後若完全無法連線,應檢查 TUN 堆疊、路由安裝權限和 DNS 劫持設定。
訂閱匯入的穩妥設定流程
初次設定時,優先選擇伺服器直接提供的 Clash 或 mihomo YAML。匯入後保留一份最近可用的本機設定,遠端更新失敗時可以快速回復。客戶端支援設定合併時,可將個人規則、DNS 和腳本放在本機覆寫層,避免每次訂閱更新都覆蓋手動修改。
- 訂閱 URL 僅用於客戶端設定,不要放入公開同步儲存庫。
- 將完整設定與 provider 檔案分開管理,明確設定各自的更新間隔。
- 節點名稱保持唯一,避免代理群組選到同名但參數不同的節點。
- 修改規則後重新載入設定,並在連線日誌中核對命中的策略。
- 更換核心版本後先驗證設定語法,再開啟系統代理或 TUN。
判斷訂閱格式的關鍵不在於連結看起來像什麼,而在於它最終回傳什麼。YAML 可以直接進入設定流程;Base64 需要先解碼辨識;通用 URI 清單則需要由相容客戶端或可信的轉換流程產生目標 YAML。依照下載、解析、啟用、接管流量四個階段檢查,絕大多數匯入問題都能準確定位。