先分清訂閱下載失敗與設定載入失敗

「訂閱匯入失敗」可能發生在不同環節:用戶端沒有收到回應、伺服器傳回錯誤網頁、設定文字無法解析,或設定中的協定不受目前核心支援。只有最後一種情況需要優先檢查核心相容性。反覆切換節點,通常無法解決前三類問題。

FlClash 使用 mihomo 核心。用戶端負責訂閱管理、介面與設定處理,核心則負責設定驗證與流量轉送。介面顯示「更新失敗」時,應同時查看這次更新的錯誤詳情,以及之後是否出現核心載入錯誤。不同版本的選單名稱可能有所不同,以下以功能名稱說明,不將特定版本的介面路徑視為所有平台的固定路徑。

錯誤線索優先檢查下一步
timeout、no such host連結連線狀況與網域解析測試下載請求,確認請求使用的網路出口
HTTP 401、403、404授權、存取限制或網址變更前往服務商帳戶頁面確認訂閱狀態與最新網址
yaml:、unmarshal回應內容與 YAML 資料型別先確認內容不是 HTML,再檢查錯誤行及其上方內容
unsupported proxy type節點協定與核心支援能力確認實際執行的核心版本與節點欄位
proxy … not found策略群組與節點參照檢查名稱、篩選條件及覆寫後的最終設定

排查前先備妥三項資訊

  1. 記下 FlClash 版本、作業系統與實際核心版本。核心更新不一定與用戶端更新同步,因此不能只寫「最新版」。
  2. 保留失敗時間前後的記錄,例如觸發更新前後各 30 秒,以區分下載、解析與載入階段。
  3. 備份仍可使用的設定。建立測試設定進行匯入,不要立即覆蓋唯一可用的設定檔。

訂閱 URL 通常包含存取權杖。提交螢幕截圖、記錄或設定前,請刪除 URL 查詢參數中的憑證,並清除節點密碼、UUID、認證標頭與個人路徑。只遮住網域無法保護訂閱權限。

第一層:檢查連結連線狀況與 HTTP 狀態

先確認網址,再檢查網路

從服務商帳戶頁面重新複製適用於 Clash 或 mihomo 的訂閱網址。確認網址以 https:// 開頭,結尾沒有多出空格、換行、引號或中文標點。帳戶登入頁、方案詳情頁和 QR Code 圖片網址都不是設定訂閱網址。QR Code 應先解碼取得實際連結,而不是將圖片檔匯入用戶端。

瀏覽器能開啟連結,只能證明瀏覽器當時的請求成功。瀏覽器可能帶有登入 Cookie,也可能使用與用戶端不同的代理出口。訂閱更新的背景工作通常不會沿用瀏覽器的登入狀態。因此,應分別測試用戶端更新與獨立下載,不要將兩者視為相同的網路路徑。

透過一次受限下載檢查回應

在 macOS 或 Linux 的 Bash 終端機中,可使用以下指令。網址會透過隱藏輸入讀取,避免直接寫入指令歷史記錄。指令不會將訂閱內容輸出到終端機,而是儲存至目前目錄;該目錄應為個人可存取的暫存工作目錄。

read -r -s -p '輸入訂閱網址:' SUB_URL
printf '\n'
curl --location --max-redirs 3 \
  --proto '=https' --proto-redir '=https' \
  --connect-timeout 10 --max-time 30 \
  --output subscription-response.txt \
  --write-out 'HTTP %{http_code}\n類型 %{content_type}\n位元組 %{size_download}\n' \
  "$SUB_URL"
unset SUB_URL

這裡的連線逾時設為 10 秒,總時限為 30 秒,最多跟隨 3 次重新導向,並限制使用 HTTPS。這些是本次診斷參數,不是 FlClash 的預設設定。Windows PowerShell 可呼叫 curl.exe 使用相同參數;不要直接照抄 Bash 的 read 與續行寫法。

  • HTTP 200:表示收到正常狀態回應,但仍須檢查正文;登入頁和錯誤提示頁也可能回傳 200。
  • HTTP 301/302:確認重新導向後的網址是否仍屬於預期服務。不要公開貼上包含權杖的完整重新導向網址。
  • HTTP 401/403:確認權杖是否已重設、方案是否有效,以及帳戶是否受到存取限制。403 也可能由防護服務回傳。
  • HTTP 404/410:優先確認連結是否過期或 API 是否已遷移,不要靠隨意修改路徑嘗試恢復。
  • HTTP 429:停止連續重新整理,依伺服器提示稍候。自動重試可能延長流量限制時間。
  • HTTP 5xx:記下時間與狀態碼,稍後再試並回報服務商;修改本機 YAML 無法修復伺服器端異常。

若結果顯示 HTTP 000,代表沒有取得可回報的 HTTP 狀態,並非伺服器真的回傳「000」。請參照 curl 錯誤訊息檢查 DNS、連線逾時或 TLS 憑證。遇到憑證錯誤時,應先確認裝置時間、憑證有效期限及網路攔截狀況,不要長期關閉憑證驗證來規避問題。

避免訂閱更新形成依賴循環

如果訂閱網域必須透過代理才能存取,而目前沒有可用設定,首次更新可能無法完成。反過來說,如果訂閱服務拒絕代理出口,直接連線或許更合適。請檢查用戶端是否提供訂閱更新的代理設定或下載策略,每次只變更一種連線路徑並記錄結果。TUN 模式不是修復解析錯誤的開關,不要同時切換 TUN、DNS 與訂閱網址。

第二層:確認取得的是設定檔,而非網頁或其他訂閱格式

使用本機文字編輯器開啟 subscription-response.txt,並僅在自己的裝置上查看。Content-Type 可作為線索,但伺服器可能一律使用 text/plain 或下載類型,因此不能只憑回應標頭判定內容有效。

正文特徵可能含義處理方式
<!DOCTYPE html>、<html>登入頁、防護驗證頁或錯誤網頁重新取得直接訂閱網址,並聯絡服務商處理驗證
{"error": 等 JSON 內容API 錯誤或非設定檔介面查看錯誤欄位,確認授權與帳戶狀態
ss://、vmess:// 等逐行 URI節點連結集合確認用戶端是否支援此匯入格式,並優先選擇 Clash/mihomo 格式
連續的 Base64 文字可能是編碼後的節點清單確認訂閱格式,不要直接當成 YAML 載入
proxies:、proxy-groups:可能是 Clash 設定繼續檢查縮排、欄位型別與參照關係

完整設定檔與節點提供者檔案也不相同。只包含 proxies: 的檔案可能是供 proxy-providers 使用,不一定包含用戶端所需的策略群組和規則;只包含 payload: 的檔案通常是規則集,而不是節點訂閱。實際匯入行為取決於用戶端是否會補上範本,不能把「能讀取為 YAML」等同於「能作為完整設定執行」。

部分服務會依據請求中的 User-Agent 傳回不同格式。如果同一網址在瀏覽器和用戶端收到的內容不同,請向服務商確認正確入口與目標格式,不要盲目偽造請求標頭。需要轉換格式時,優先使用服務商提供的轉換服務或自己可控的轉換工具;將完整訂閱交給公用轉換網站,等同一併交出訂閱中的憑證。

第三層:檢查 YAML 語法、欄位型別與名稱參照

行號指出發現錯誤的位置,不一定是問題起點

yaml: line 12 表示解析器在第 12 行附近發現異常。真正的問題可能出在上一行,例如引號未關閉,或上層縮排被改動。先檢查錯誤行前後各 5 行,不要直接刪除整段節點清單。

  • 縮排使用空格,不使用 Tab。同一層級的縮排須保持一致,例如每層使用 2 個空格。
  • 映射欄位使用半形冒號,冒號後通常要加空格,例如 mode: rule。
  • 清單項目使用半形 -,並確認它位於對應欄位之下。
  • 包含 : 、 # 或特殊符號的名稱、密碼和 URL,請使用適當的引號包住。引號內仍須遵守相應的跳脫規則。
  • 連接埠欄位應為整數,proxies 應為清單;即使語法正確,型別錯誤仍會在解碼設定時造成失敗。

使用最小設定隔離語法問題

以下是用於隔離問題的最小直連設定,不含代理節點。混合連接埠設為 17890,僅供本例使用;使用前請確認沒有其他程序占用。此設定不具備代理節點的對外連線能力。

mixed-port: 17890
allow-lan: false
mode: rule
log-level: info

proxies: []

proxy-groups:
  - name: "診斷出口"
    type: select
    proxies:
      - DIRECT

rules:
  - MATCH,診斷出口

如果最小設定能通過驗證,而原訂閱無法通過,排查重點就在原始檔案與設定合併流程。若仍出現連接埠占用或權限錯誤,表示問題已轉為執行環境異常,不應繼續當作 YAML 語法錯誤處理。此設定採用直連方式,也無法證明代理節點可用。

如果本機已有 mihomo 可執行檔,可在終端機使用 mihomo -t -f ./subscription-response.txt 檢查設定。此指令使用目前終端機找到的核心,不一定是 FlClash 內建版本。部分提供者設定的檢查也可能涉及外部資源,因此測試應在本機受控環境中進行;通過檢查不代表所有節點都能連線。

檢查策略群組、規則與覆寫後的最終內容

若錯誤指出找不到代理名稱,請逐字比對節點名稱與策略群組參照,包含空格和大小寫。規則結尾的出站名稱必須指向已存在的節點、策略群組或內建出站。透過 use 參照的名稱應對應 proxy-providers 中的鍵,不能直接以提供者名稱取代一般節點參照。

訂閱原文通過驗證,但用戶端載入失敗時,應檢查用戶端的覆寫、合併設定與節點篩選條件。篩選運算式可能移除所有候選節點,重新命名也可能留下舊參照。請先在測試設定中停用自訂處理,再逐項恢復;直接修改訂閱快取通常會在下次更新時被覆蓋。

第四層:確認節點協定與實際執行的核心

Clash 設定格式不代表所有 Clash 系用戶端都支援相同協定。傳統 Clash、mihomo 及不同年代的核心版本,支援的協定與欄位可能各不相同。遇到 unsupported proxy type 時,先記下錯誤中的 type 值,再確認核心版本與發行說明。

  1. 確認協定名稱。例如節點設定為 type: hysteria2 時,必須使用支援該協定的核心;不能把類型改成 ss 來讓它運作。
  2. 確認必填欄位與資料型別。檢查 server、port、密碼或 UUID 等欄位,具體要求視協定而定。
  3. 確認傳輸與 TLS 參數。連線網址、SNI、WebSocket 路徑及相關選項必須與伺服器一致。設定能解析,不代表交握參數正確。
  4. 確認欄位是否受到辨識。某些未知欄位可能會被忽略,而不會直接報錯。僅憑「匯入成功」,無法證明所有選項都已生效。
  5. 使用相容的訂閱格式。若服務商提供 mihomo 格式,請優先選用;需要升級時,先備份設定,再更換用戶端或核心。

匯入成功後若出現 dial timeout、認證失敗或 TLS 交握失敗,表示問題已進入節點連線階段。此時應檢查節點連線狀況、憑證與伺服器設定,而不是繼續調整 YAML 縮排。解析成功、核心啟動、節點連線與實際服務存取,是四項不同的驗收結果。

修復後的驗收順序與回報資訊

每次只驗證一個環節

  1. 手動更新一次訂閱,確認回應內容非空,且不再出現 HTTP 或下載錯誤。
  2. 載入測試設定,確認記錄中沒有 YAML、協定型別或名稱參照錯誤。
  3. 確認核心持續執行,沒有連接埠占用、權限不足或提供者資源載入失敗。
  4. 選擇一個已確認存在的節點測試連線,再透過實際應用程式確認規則選擇的出站。
  5. 恢復需要的覆寫與篩選設定,逐項觀察,最後再恢復定時更新。

向服務商或專案回報時,請提供作業系統、用戶端版本、核心版本、失敗時間、HTTP 狀態碼,以及已移除敏感資訊的首要錯誤訊息。若是 YAML 問題,附上錯誤行附近的最小片段;若是下載問題,說明直連與目前代理路徑各自的結果。不要提交包含憑證的完整訂閱檔案。

如果訂閱網址已出現在公開螢幕截圖、支援工單或轉換服務中,請前往服務商帳戶重設訂閱權杖,再更新各裝置。清除本機記錄無法撤銷已暴露的存取權限。

排查順序維持「連結可連線 → 回應格式 → YAML 與參照 → 核心相容性」。如此可避免伺服器回傳登入頁時仍反覆調整連接埠,也能避免把節點連線逾時誤判為訂閱格式錯誤。常用欄位的用途可參閱設定欄位參考;首次啟用系統代理與 TUN 的步驟請見入門指南。