Clash 訂閱失效與解析失敗排查清單:連結過期、格式不符、網路阻斷逐項自查

將「匯入訂閱報錯」拆成連結可達性、回傳內容格式、YAML 語法、核心欄位相容性四類原因,提供用瀏覽器與命令列逐步定位的自查步驟與對應處理方法。

匯入訂閱報錯,先分清失敗發生在哪一步

Clash Verge 匯入訂閱的報錯,依發生階段可分為四類:下載失敗、解析失敗、YAML 校驗失敗、核心載入失敗。四類原因的排查方向完全不同,先定位階段再動手排查,能省下大量時間。

報錯階段 典型提示 大概率原因
下載階段 「下載失敗」「取得訂閱內容失敗」 連結過期、網路阻斷、鑑權失敗
解析階段 「解析失敗」「不是有效的 YAML」 回傳 HTML 頁面、Base64 解碼異常
校驗階段 「YAML 解析錯誤:line 12」 縮排錯誤、引號未閉合、中文標點
載入階段 「欄位不相容」「設定載入失敗」 mihomo 與舊版 Clash 欄位差異

定位方法:開啟 Clash Verge 的「訂閱」頁,按一次「更新」,觀察報錯出現的時機。進度條沒跑完就失敗,屬於下載問題;下載完成後立刻報錯,屬於解析或校驗問題;設定能載入但核心啟動失敗,屬於欄位相容問題。下面四節依序展開。

連結可達性:過期、鑑權與網路阻斷

第一步,把訂閱連結完整複製到瀏覽器網址列直接存取。這是最快的一次判斷:

  • 回傳以 proxies: 開頭的文字:連結正常,問題在客戶端
  • 回傳 404 或「連結不存在」:訂閱已失效,去機場後台重新產生
  • 回傳登入頁或方案到期提示:帳號狀態異常,先續費或重設訂閱
  • 一直轉圈或逾時:本機網路到訂閱伺服器線路不通

瀏覽器能開啟、客戶端卻下載失敗時,用命令列確認。Windows 開啟 PowerShell,macOS 開啟終端機,執行:

curl -v -L "訂閱連結" -o sub.yaml -w "%{http_code}\n"

重點關注兩處輸出:HTTP 狀態碼與回應內文。

狀態碼 含義 處理
200 伺服器正常回傳 檢查客戶端訂閱設定
401 / 403 鑑權失敗或 UA 被封鎖 重新複製連結,自訂 User-Agent
404 訂閱已刪除或過期 機場後台重新產生
429 請求過於頻繁 等待幾分鐘再試
000 / 逾時 連線被重設 檢查 DNS、防火牆、代理通道

部分機場會校驗 User-Agent,客戶端預設 UA 可能被識別為異常流量。Clash Verge 的訂閱編輯面板可以自訂 User-Agent,填入常用瀏覽器 UA 字串即可繞過。

DNS 污染也會導致訂閱更新失敗。訂閱網域被解析到錯誤位址時,瀏覽器因為走系統代理可能正常,客戶端直連卻逾時。把訂閱網域加入「設定」→「參數設定」→「系統代理」的直連規則,或暫時切換可用節點再更新訂閱。

更新訂閱前,先確認目前至少有一個節點可用。訂閱更新請求預設走代理通道,所有節點失效時請求直連電信業者,失敗率會大幅上升。

回傳內容格式:HTML、Base64 與轉換器 JSON

連結可達,客戶端仍報「解析失敗」,多數是回傳內容不是標準 YAML 訂閱。用瀏覽器開啟連結,看回傳內容的開頭:

  • HTML 頁面:機場公告頁、Cloudflare 驗證頁或 404 頁面,表示連結指向了網頁
  • Base64 亂碼:部分機場用 Base64 編碼訂閱,屬於正常現象
  • JSON 結構:機場啟用了訂閱轉換器,回傳的是轉換結果
  • 空白檔案:伺服器回傳空內容,聯絡機場處理

Clash Verge 支援直接匯入 Base64 訂閱,客戶端會自動解碼。但部分機場的 Base64 內容混入換行符或 BOM 頭,會導致解碼失敗。把連結內容貼到任意 Base64 解碼工具,確認解碼結果以 proxies: 開頭即可排除這類問題。

如果機場提供的是訂閱轉換器連結,例如 Subconverter 格式,連結後通常帶轉換參數:

?target=clash&url=原始訂閱連結

不同轉換器的參數名稱不一致,建議直接使用機場後台提供的「Clash 訂閱」專用連結,不要手動拼接參數。

還有一類隱蔽問題:機場把訂閱內容放在 HTTP 回應標頭裡,或啟用了 gzip 壓縮但未宣告 Content-Encoding。這類異常客戶端無法自動處理,只能聯絡機場客服修復。

YAML 語法錯誤:縮排、引號與中文標點

訂閱內容下載成功、格式也識別為 YAML,但解析器讀不懂,問題出在 YAML 語法。機場產生的設定偶爾出錯,手動編輯過設定檔的使用者更容易遇到。常見錯誤:

  • 縮排混用空格與 Tab:YAML 只接受空格,Tab 直接報錯
  • 冒號後缺少空格:name: 節點名 合法,name:節點名 解析失敗
  • 引號未閉合:節點名含特殊字元時必須用引號包裹
  • 中文標點:全形冒號「:」、全形逗號「,」混入模板,解析器不識別
  • URL 中的 # 未跳脫:# 在 YAML 裡是註解起始符,值裡的 # 需要引號包裹

mihomo 的報錯會帶行號,例如:

yaml: line 12: mapping values are not allowed in this context

定位方法:開啟 Clash Verge 的「設定」→「參數設定」→「設定目錄」,profiles 資料夾裡是訂閱對應的 yaml 檔案。用文字編輯器跳到報錯行,檢查縮排、冒號與引號。

沒有圖形介面時,用命令列校驗:

python -c "import yaml; yaml.safe_load(open('sub.yaml', encoding='utf-8'))"

輸出 None 表示語法正確;報錯會指出具體行號與原因。手動修復只能暫時解決——機場訂閱下次更新時會整體覆蓋檔案。正確做法是聯絡機場回報,或用訂閱轉換器重新產生一份乾淨的設定。

手動修改訂閱檔案前,先複製一份備份。更新訂閱會覆蓋 profiles 目錄下的對應檔案,沒有備份就只能重新排查。

核心欄位相容性:mihomo 與舊版 Clash 的差異

訂閱能解析、能載入,但核心啟動報錯或部分節點不可用,屬於欄位相容性問題。Clash 核心從 Clash Premium 遷移到 mihomo,兩代核心的欄位並不完全互通。

舊訂閱中常見的過時寫法:

舊欄位 mihomo 中的狀態 替代方案
dns.enable 已廢棄 dns 段預設啟用,直接刪除
tun.enable 舊版寫法 用完整 tun 段設定
experimental.udp-fallback 已移除 改用 sniffer
proxy-groups 缺少 url 新版要求必填 補上測試位址

mihomo 新增的欄位,舊版核心同樣不認,例如 snifferprofile.store-selecteddns.fake-ip-filter

判斷方法:查看核心日誌。Clash Verge 的「設定」→「參數設定」→「日誌」裡能看到核心輸出,出現 unknown fieldunsupported 字樣即為欄位不相容。處理優先序:

  1. 向機場索取 mihomo 專用訂閱連結,多數機場同時提供 Clash 與 mihomo 兩條連結
  2. 用訂閱轉換器把舊格式轉為 mihomo 格式
  3. 在訂閱編輯面板裡手動刪除不相容欄位

刪除欄位時不要動 proxies 段的核心欄位。typeserverportuuidalterId 是節點連通性的基礎,刪錯會導致全部節點不可用。

完整自查順序與恢復建議

把上述四類原因串成一條路徑,依序執行,多數問題 5 分鐘內能定位:

  1. 瀏覽器開啟訂閱連結,確認回傳內容是 YAML 或 Base64
  2. 用 curl 確認 HTTP 狀態碼,403 或 404 時重新產生連結
  3. 儲存為本機 yaml,用 Python 或線上工具校驗語法
  4. 查看核心日誌,確認沒有 unknown field 警告
  5. 在 Clash Verge 刪除舊訂閱,重新匯入新連結
  6. 啟動核心,存取一個需要代理的網站驗證連通

全部通過仍無法使用時,把訂閱檔案與核心日誌一起發給機場客服,附上 mihomo 版本號,定位效率會高很多。

最後是恢復建議:每次成功匯入訂閱後,在「訂閱」頁複製一份設定檔備份。設定出問題需要回滾時,直接貼上備份內容,比從頭排查快得多。

下載 Clash Verge,匯入你的訂閱開始使用

Clash Verge 內建 mihomo 核心,支援機場訂閱與本機設定檔,Windows、macOS、Linux 三端可用。

下載 Clash Verge