先分清訂閱下載失敗與設定載入失敗
「訂閱匯入失敗」可能發生在不同環節:用戶端沒有收到回應、伺服器傳回錯誤網頁、設定文字無法解析,或設定中的協定不受目前核心支援。只有最後一種情況需要優先檢查核心相容性。反覆切換節點,通常無法解決前三類問題。
FlClash 使用 mihomo 核心。用戶端負責訂閱管理、介面與設定處理,核心則負責設定驗證與流量轉送。介面顯示「更新失敗」時,應同時查看這次更新的錯誤詳情,以及之後是否出現核心載入錯誤。不同版本的選單名稱可能有所不同,以下以功能名稱說明,不將特定版本的介面路徑視為所有平台的固定路徑。
| 錯誤線索 | 優先檢查 | 下一步 |
|---|---|---|
timeout、no such host | 連結連線狀況與網域解析 | 測試下載請求,確認請求使用的網路出口 |
HTTP 401、403、404 | 授權、存取限制或網址變更 | 前往服務商帳戶頁面確認訂閱狀態與最新網址 |
yaml:、unmarshal | 回應內容與 YAML 資料型別 | 先確認內容不是 HTML,再檢查錯誤行及其上方內容 |
unsupported proxy type | 節點協定與核心支援能力 | 確認實際執行的核心版本與節點欄位 |
proxy … not found | 策略群組與節點參照 | 檢查名稱、篩選條件及覆寫後的最終設定 |
排查前先備妥三項資訊
- 記下 FlClash 版本、作業系統與實際核心版本。核心更新不一定與用戶端更新同步,因此不能只寫「最新版」。
- 保留失敗時間前後的記錄,例如觸發更新前後各 30 秒,以區分下載、解析與載入階段。
- 備份仍可使用的設定。建立測試設定進行匯入,不要立即覆蓋唯一可用的設定檔。
訂閱 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 值,再確認核心版本與發行說明。
- 確認協定名稱。例如節點設定為
type: hysteria2時,必須使用支援該協定的核心;不能把類型改成ss來讓它運作。 - 確認必填欄位與資料型別。檢查
server、port、密碼或 UUID 等欄位,具體要求視協定而定。 - 確認傳輸與 TLS 參數。連線網址、SNI、WebSocket 路徑及相關選項必須與伺服器一致。設定能解析,不代表交握參數正確。
- 確認欄位是否受到辨識。某些未知欄位可能會被忽略,而不會直接報錯。僅憑「匯入成功」,無法證明所有選項都已生效。
- 使用相容的訂閱格式。若服務商提供 mihomo 格式,請優先選用;需要升級時,先備份設定,再更換用戶端或核心。
匯入成功後若出現 dial timeout、認證失敗或 TLS 交握失敗,表示問題已進入節點連線階段。此時應檢查節點連線狀況、憑證與伺服器設定,而不是繼續調整 YAML 縮排。解析成功、核心啟動、節點連線與實際服務存取,是四項不同的驗收結果。
修復後的驗收順序與回報資訊
每次只驗證一個環節
- 手動更新一次訂閱,確認回應內容非空,且不再出現 HTTP 或下載錯誤。
- 載入測試設定,確認記錄中沒有 YAML、協定型別或名稱參照錯誤。
- 確認核心持續執行,沒有連接埠占用、權限不足或提供者資源載入失敗。
- 選擇一個已確認存在的節點測試連線,再透過實際應用程式確認規則選擇的出站。
- 恢復需要的覆寫與篩選設定,逐項觀察,最後再恢復定時更新。
向服務商或專案回報時,請提供作業系統、用戶端版本、核心版本、失敗時間、HTTP 狀態碼,以及已移除敏感資訊的首要錯誤訊息。若是 YAML 問題,附上錯誤行附近的最小片段;若是下載問題,說明直連與目前代理路徑各自的結果。不要提交包含憑證的完整訂閱檔案。
如果訂閱網址已出現在公開螢幕截圖、支援工單或轉換服務中,請前往服務商帳戶重設訂閱權杖,再更新各裝置。清除本機記錄無法撤銷已暴露的存取權限。
排查順序維持「連結可連線 → 回應格式 → YAML 與參照 → 核心相容性」。如此可避免伺服器回傳登入頁時仍反覆調整連接埠,也能避免把節點連線逾時誤判為訂閱格式錯誤。常用欄位的用途可參閱設定欄位參考;首次啟用系統代理與 TUN 的步驟請見入門指南。