Clash 訂閱更新失敗怎麼辦?排查逾時、憑證與格式錯誤|自動更新設定

整理 Clash 訂閱更新時常見的逾時、憑證驗證失敗與解析錯誤,說明原因及排除方式,並介紹如何設定自動更新間隔與更新代理。

先找出失敗環節:下載、解析還是載入

Clash 訂閱更新並非單一步驟。用戶端會先向訂閱 URL 發出請求並取得回應內容,再解析設定檔,最後儲存檔案並交由核心載入。下載成功不代表格式正確,設定檔儲存成功也不表示目前的核心能執行所有欄位。先確認錯誤發生在哪個環節,比反覆點選「更新」更有效。

訂閱管理主要由圖形化用戶端負責;Clash、Clash Meta 與 mihomo 的核心功能,不能直接等同於用戶端的下載行為。不同用戶端的更新代理、排程器與錯誤提示可能各異。下文說明參數意義與檢查順序,選單名稱請以目前使用的版本為準。

  1. 在用戶端的「訂閱」或「設定檔」頁面,記下失敗項目的名稱、最後更新時間與完整錯誤訊息。
  2. 保留目前仍可用的設定檔,不要先刪除訂閱或清空節點。重新匯入前,先確認原連結仍能取得內容。
  3. 開啟用戶端記錄,只手動更新一次,並依照相同時間點檢查下載錯誤與核心載入錯誤。
  4. 分清楚「更新失敗」與「更新後節點無法使用」:後者還需檢查節點狀態、策略組與規則,不應直接歸因於訂閱下載。
畫面提示通常發生階段優先檢查項目
timeout、context deadline exceeded連線或讀取網路路徑、更新代理、回應時間
x509、certificateTLS 交握系統時間、憑證鏈、網域名稱
401、403、429HTTP 回應連結權限、存取限制、請求頻率
yaml、unmarshal內容解析回應本文、訂閱格式、欄位型別
不支援的代理類型、策略不存在核心驗證或載入核心支援範圍、策略參照

逾時排查:先比較直連與更新代理

分辨 DNS 解析失敗與連線逾時

no such host 通常表示網域解析有問題;connection refused 代表連線遭拒;i/o timeout 則須搭配記錄判斷是發生在連線、交握還是讀取階段。別看到網路錯誤就更換 DNS,也別把瀏覽器能開啟服務商首頁當成訂閱介面正常的證明。

在 Windows 的 PowerShell 中執行以下兩個指令,先檢查本機 HTTPS 連線與本機連接埠是否有程式監聽。第一個指令只檢查本站的 443 連接埠,無法取代對實際訂閱網域的檢查;第二個指令中的 7890 僅為常見混合連接埠範例,請與用戶端顯示的數值核對。

Test-NetConnection clash-winpc.com -Port 443
Test-NetConnection 127.0.0.1 -Port 7890

若訂閱記錄明確指出某個網域連線失敗,可在本機將第一個指令中的主機名稱改為該訂閱網域進行測試。只使用主機名稱,請勿將含有存取權杖的完整 URL 貼到公開截圖或工單標題。連接埠可連線,不代表 TLS、驗證與本文下載都正常。

瀏覽器連得上,用戶端仍逾時

瀏覽器可能使用系統代理,但用戶端的訂閱下載器可能直接連線;反過來,下載器也可能設定為經由已失效的代理。TUN 模式也會影響實際路由,因此介面上的「更新時直連」選項,不一定代表封包最終未受接管。

  1. 開啟失敗訂閱的編輯選單,尋找「更新代理」、「透過代理更新」或類似選項,並記下原本的設定。
  2. 先測試一次直連,再測試一次透過已確認可用的出口更新。每次只變更一個項目,並保留相應時間的記錄。
  3. 若需手動輸入代理位址,請確認下載器支援 HTTP 代理還是 SOCKS 代理。混合連接埠範例可填入 http://127.0.0.1:7890,實際協定與連接埠請以用戶端設定為準。
  4. 代理監聽正常但請求仍逾時時,請檢查所選出口能否存取訂閱網域,以及是否有失效策略、驗證問題或網路限制。

如果請求總是在固定時間後失敗,例如每次約 30 秒,請檢查用戶端是否提供下載逾時設定,不要假設所有用戶端的預設逾時都是 30 秒。適度延長讀取時間只對回應較慢的情況有幫助,無法解決無效網域、連線遭拒或權限錯誤。

憑證錯誤:檢查系統時間、網域與信任鏈

HTTPS 憑證驗證用來確認伺服器身分。出現憑證錯誤時,請先修正系統時間或信任鏈,不要把停用憑證驗證當成一般解法。訂閱 URL 通常包含存取憑證,錯誤放寬驗證會增加憑證與設定內容外洩的風險。

節點設定中的 skip-cert-verify 控制相應代理連線的憑證驗證,不是圖形化用戶端訂閱下載器的通用開關。修改節點中的這個欄位,通常無法修復下載訂閱時的 x509 錯誤,也不應為了排查問題而批次啟用。

HTTP 狀態碼與格式錯誤:確認取得的是設定檔

先處理權限與流量限制,再檢查 YAML

伺服器有回應,不代表回應內容就是訂閱檔案。登入頁面、帳戶到期提醒或存取驗證頁,也可能被用戶端下載,接著就顯示 YAML 解析失敗。即使 HTTP 狀態碼是 200,本文仍可能是 HTML。

狀態碼或本文特徵可能原因處理方式
401 / 403憑證失效、權限不足或存取政策限制登入服務商帳戶確認訂閱狀態,並重新複製專用訂閱連結
404 / 410入口不存在或已移除從帳戶頁面取得目前使用的入口,不要自行猜測路徑
429觸發請求頻率限制停止連續重試;若有 Retry-After,請依指示等待
502 / 503 / 504伺服器或上游服務暫時異常稍後再試,並記下狀態碼與發生時間
<!DOCTYPE html>、登入表單取得的是網頁,而非設定檔確認 URL 類型、重新導向目標與伺服器存取驗證

檢查回應內容時,建議使用本機文字編輯器,只查看結構,不要公開完整檔案。訂閱可能含有節點密碼、權杖、內部網域及其他敏感資訊;第三方線上檢測或轉換服務也可能接觸這些內容。

完整設定檔、節點清單與 provider 檔案不可混用

完整的 Clash YAML 通常包含 proxies、proxy-groups、rules 等設定區段,但並非每份有效設定都必須同時包含這三個欄位。Base64 編碼的節點清單,或以 ss:// 等協定開頭的 URI 清單,不會因為副檔名改成 .yaml 就自動變成 Clash 設定檔。

供 proxy-providers 使用的節點檔案通常以 proxies: 組織節點;規則提供器則使用相應的規則載荷結構。這些檔案不應直接當成完整桌面設定檔匯入。建議選擇服務商標示支援 Clash 或 mihomo 的輸出格式,再確認用戶端是否支援相應的匯入方式。

自動更新間隔:分清用戶端訂閱與核心 provider

用戶端訂閱排程器

桌面用戶端通常會在「訂閱/設定檔」→「目標訂閱選單」→「編輯」中提供自動更新設定;部分版本則將入口放在全域設定。找到「自動更新」、「更新間隔」與「更新代理」後,先確認欄位旁標示的單位,再儲存設定。各專案沒有統一的預設值,不能把某個用戶端的介面參數當成 Clash 核心標準。

一般使用情境可先試著每 6 小時更新一次:介面單位為分鐘時填入 360,單位為秒時填入 21600。這是建議值,並非通用的出廠預設值。若服務商明確規定最短間隔,請遵守該限制;節點變動不頻繁時,每 12 或 24 小時更新一次也可以。不要設定成每分鐘請求,以掩蓋故障。

  1. 先確認訂閱可手動更新成功,再啟用自動更新。
  2. 儲存間隔後,返回訂閱清單確認設定有保留,並記下最後一次成功更新的時間。
  3. 等到下一個預定更新時間後檢查記錄。電腦進入睡眠或用戶端關閉期間,通常無法期待桌面排程器持續執行。
  4. 若啟用了「啟動時更新」,請另外測試啟動時的行為;這與按固定間隔更新是不同的觸發條件。

mihomo 的 HTTP provider 更新參數

若設定檔使用 proxy-providers,遠端節點提供器也可由核心獨立更新。HTTP provider 的 interval 單位為秒;支援的 proxy 欄位則用來指定下載該資源時使用的出口名稱。以下僅為既有 HTTP provider 內部的欄位片段,不能單獨匯入為完整設定檔:

# 放在現有 HTTP proxy-provider 定義內
interval: 21600
proxy: DIRECT

DIRECT 代表選擇直連出口,但不保證目前的網路一定能存取該資源。若改用代理或策略組名稱,該名稱必須存在於設定檔中,並應避免透過尚未下載的同一個 provider 取得出口。不同核心版本的支援範圍,請以實際設定檔驗證結果為準。

恢復後的驗證順序與問題回報

錯誤提示消失後,還要確認新內容確實載入目前使用的設定檔。只看到檔案修改時間變更還不夠;下載可能成功,但覆寫、合併或核心驗證仍可能失敗。建議依照以下順序檢查,避免在同一次排查中同時變更代理、DNS、TUN 與設定檔格式。

  1. 確認下載成功:訂閱清單顯示新的成功更新時間,記錄中也沒有相應的 HTTP 或 TLS 錯誤。
  2. 確認載入成功:目前設定檔沒有解析錯誤,策略組也正常顯示;若訂閱內容原本沒有變更,節點數量不變是正常的。
  3. 確認連線可用:選擇一個已知可用的出口,存取目標網站,並在連線記錄中確認命中的規則與實際出口。
  4. 確認自動更新:讓用戶端保持執行,等待一個已設定的更新週期,再檢查下一次成功更新時間。

向服務商或用戶端專案回報時,請提供作業系統版本、用戶端版本、實際核心版本、發生時間、錯誤訊息,以及直連與代理更新的比較結果。請遮蔽訂閱 URL 的路徑、查詢參數與節點憑證;不要將完整設定檔上傳到公開問題討論區。若需了解匯入與連線步驟,請參閱本站使用指南;參數說明可對照協定參考。

下載Clash依作業系統選擇安裝檔