Clash 更新訂閱失敗時,介面上常見的提示包括要求逾時、狀態碼異常、下載內容為空、設定解析失敗、代理節點數量為零,以及切換設定後立即回復。這些情況看起來都像「訂閱無法使用」,實際上卻對應不同的故障層級。訂閱更新至少會經過網址請求、伺服器回應、內容轉換、YAML 解析、設定儲存與核心載入六個環節。反覆點擊更新,通常只會不斷觸發同一個錯誤。
排查時應先確認失敗發生在哪個層級,再決定要更換網址、重新產生訂閱、修正設定,還是清除客戶端快取。尚未儲存舊設定前,不要刪除所有資料;訂閱網址可能包含存取憑證,也不應直接複製到公開日誌、截圖或論壇內容中。
先辨識訂閱更新失敗的環節
第一步不是修改 YAML,而是讀取客戶端日誌中的第一個錯誤。後續錯誤經常只是連鎖結果,例如下載失敗後出現「找不到設定檔」,或 YAML 解析失敗後出現「核心啟動失敗」。應記錄錯誤發生時間、訂閱名稱、HTTP 狀態、錯誤行號與目前使用的核心類型,再依照以下特徵分類。
請求階段
表現為逾時、無法解析網域名稱、連線遭拒、TLS 連線失敗或 HTTP 狀態異常。此時設定內容尚未進入解析器。
回應階段
請求成功,但回傳登入頁面、錯誤提示、空白內容,或與客戶端不相容的訂閱格式。
解析階段
日誌提供 YAML 行號、欄位類型錯誤、名稱重複或不支援的設定項目,表示檔案已下載,但無法建立設定。
載入階段
檔案可以解析,但客戶端仍載入舊版本,或寫入設定目錄失敗。這類問題通常與快取、目錄權限或設定索引有關。
如果手動選擇舊設定後仍能正常連線,通常表示核心與本機網路仍可運作,問題更可能集中在訂閱請求或新設定內容。若所有設定同時失效,還需要檢查系統時間、網路入口、DNS、系統代理回環與防火牆狀態,避免把環境故障誤判為訂閱過期。
檢查訂閱網址、有效期限與請求條件
訂閱網址通常不是一般公開網頁連結。網址中的路徑或查詢參數可能負責使用者識別、方案狀態與存取授權。伺服器停用舊憑證、使用者重新產生網址、方案到期或訂閱入口遷移後,舊網址即使仍能開啟,也可能只回傳錯誤說明。
確認網址沒有遭到截斷
從聊天軟體、電子郵件或 QR Code 複製長網址時,常見問題是只複製了可見部分,遺漏結尾參數;也可能混入換行、全形符號或前後空格。應在客戶端的訂閱編輯頁面重新貼上完整網址,並確認通訊協定標頭、網域、路徑與查詢字串連續存在。不要手動刪除看似多餘的參數,它們可能參與伺服器驗證或客戶端類型識別。
依 HTTP 狀態判斷方向
- 401 或 403:通常表示存取憑證失效、權限不足,或請求遭伺服器拒絕。優先在訂閱服務的管理頁面重新取得網址。
- 404:可能是舊入口已遷移、路徑複製不完整,或伺服器已移除該資源。
- 429:表示短時間內請求次數過多。停止連續重新整理,等待限制解除後再測試。
- 5xx:表示伺服器或上游轉換服務暫時異常。刪除本機設定通常無法解決問題,應保留舊設定並稍後重試。
- 301 或 302:重新導向本身不一定是故障,但若跳轉到登入頁、公告頁或不同通訊協定的網址,客戶端可能無法取得最終訂閱內容。
瀏覽器能開啟網址,不代表客戶端一定能更新。瀏覽器可能儲存登入狀態、自動執行跳轉,或顯示伺服器產生的說明頁;Clash 客戶端通常只會發出網路請求並讀取回應正文。反過來,瀏覽器顯示一段難以閱讀的編碼文字,也不代表內容損壞;部分訂閱本來就是經過 Base64 編碼的節點連結集合。
檢查系統時間與網路入口
裝置日期、時間或時區偏差較大時,HTTPS 憑證驗證可能失敗。先啟用系統自動校時,再重新請求訂閱。若目前網路封鎖訂閱網域,可暫時切換到其他可信任的網路進行一次更新。使用系統代理更新訂閱時,也要確認客戶端是否形成回環:客戶端請求訂閱,流量又被導向尚未啟動或已失效的本機代理埠,最後表現為連線遭拒或逾時。
辨識請求成功但內容異常的方法
HTTP 200 只表示伺服器回傳了內容,不能證明內容是有效設定。許多解析失敗來自伺服器回傳的 HTML 頁面、JSON 錯誤物件、空回應或錯誤的訂閱格式。此時日誌可能出現「找不到 proxies 欄位」、「無法解析映射」、「非法字元」或第一行附近的語法錯誤。
區分常見訂閱內容
Clash 設定通常採用 YAML,常見頂層欄位包括 proxies、proxy-groups、rules、proxy-providers 和 rule-providers。mihomo 相容並擴充了部分欄位,但具體可用項目仍取決於核心版本。另一類通用訂閱是由多條協定連結組成的文字,可能經過 Base64 編碼;這類內容需要客戶端或訂閱轉換服務先轉換為 Clash 設定,不能直接假定它就是完整 YAML。
如果回應正文以 HTML 文件標記開頭,或內容明顯是登入提示、方案到期說明、驗證碼頁面,問題就在伺服器回應,不應繼續修改本機 YAML。若回傳 JSON,應先查看其中是否包含錯誤代碼與說明。回應只有少量字元或完全空白時,應重新取得訂閱網址並檢查服務狀態。
核對客戶端與核心相容性
同一份設定在不同客戶端中的結果可能不同。傳統 Clash 核心、Clash Meta(目前通常以 mihomo 名稱維護)以及不同版本的圖形客戶端,對協定、DNS 欄位、規則集行為與設定擴充的支援範圍並不完全相同。伺服器產生了只有較新 mihomo 支援的欄位,而客戶端仍使用舊核心時,可能出現未知欄位、不支援代理類型或啟動檢查失敗。
先在客戶端的關於頁面確認圖形介面版本與實際核心版本,再查看訂閱提供者要求的格式。客戶端允許切換核心時,應在儲存舊設定後依照其文件完成切換;不支援目標欄位時,應選擇相容的訂閱格式,而不是任意刪除未知欄位。某些欄位之間存在相依關係,刪除其中一處可能使策略組或規則引用失效。
定位 YAML 設定解析失敗
YAML 對縮排與資料類型敏感。日誌提供行號時,應同時檢查該行及前幾行,因為真正的錯誤可能是上一段缺少引號、縮排層級中斷或清單標記位置錯誤。編輯設定前先複製原始檔案,使用純文字編輯器,並維持 UTF-8 編碼。
縮排、定位字元與冒號
層級縮排應使用空格,不要混入定位字元。同一層級的清單項目需要保持相同縮排。包含特殊字元的節點名稱、策略組名稱或字串值可以用引號包裹,尤其是值中包含冒號後接空格、井字號或其他可能被 YAML 解讀的符號時。
proxies:
- name: "Tokyo: Primary"
type: socks5
server: 192.0.2.10
port: 1080
proxy-groups:
- name: "PROXY"
type: select
proxies:
- "Tokyo: Primary"
- DIRECT
rules:
- MATCH,PROXY
上例僅用於展示結構:proxies、proxy-groups 和 rules 位於頂層;每個清單項目使用連字號;策略組引用的節點名稱必須與節點定義完全一致。實際代理協定還需要相應的驗證、傳輸與加密參數,不能只複製範例欄位作為可用節點。
檢查欄位類型
連接埠通常應為數字,布林值應使用核心可識別的布林類型,清單欄位不能寫成一般字串。常見錯誤包括把 proxies 寫成單行文字、把規則清單寫成物件、在應為數字的位置加入單位,以及因缺少引號使數字或特殊值遭到錯誤解讀。解析器提示「expected sequence」時,通常表示它需要清單;提示「expected mapping」時,通常表示對應位置應為鍵值結構。
檢查名稱引用與兜底規則
設定透過名稱連結節點、策略組與規則。策略組引用已刪除或改名的節點,規則引用不存在的策略組,都會導致檢查失敗或執行結果異常。名稱比對通常要求文字完全一致,包括大小寫、空格與符號。規則應從具體匹配逐步進入兜底,MATCH 一般放在規則清單末尾;過早出現的兜底規則會使後續規則無法命中。
避免把局部訂閱當成完整設定
proxy-providers 回傳的內容可能只是代理集合,由主設定中的 provider 項目負責載入。它不一定包含連接埠、DNS、策略組與完整規則,因此不能總是作為獨立主設定直接匯入。同樣地,遠端規則集只提供網域、IP 或規則行為資料,也不是可啟動的 Clash 設定。應確認複製的是主訂閱入口,而不是某個 provider 或規則集網址。
處理客戶端快取、舊設定與寫入失敗
訂閱回應正確、設定也能通過獨立檢查,但客戶端仍顯示舊節點時,應轉向檢查快取與儲存層。圖形客戶端通常會維護訂閱索引、下載後的設定副本、目前啟用的設定以及核心執行檔。介面中的訂閱名稱與磁碟上的檔案名稱也可能不同。
- 停止自動更新:暫時關閉高頻率定時重新整理,避免診斷時檔案持續被覆寫。
- 匯出目前設定:儲存可用節點、策略組選擇與本機覆寫內容,記錄目前設定名稱。
- 建立新的訂閱項目:不要立即覆蓋舊項目,使用重新取得的網址建立新項目並執行更新。
- 核對更新時間:確認客戶端顯示的更新時間、節點數量與日誌時間都與本次操作一致。
- 執行設定檢查:切換前使用客戶端提供的檢查功能,確認新設定能由目前的核心載入。
- 切換並重新啟動核心:只需重新啟動代理核心或客戶端,不必先重新啟動整個系統。觀察新設定是否真正成為啟用中的設定。
- 確認穩定後刪除舊項目:保留回復版本,直到規則、DNS 與代理連線都完成驗證。
如果更新後檔案時間沒有變化,請檢查設定目錄是否可寫入、磁碟空間是否充足,以及安全軟體是否阻止客戶端寫入。將客戶端安裝在系統受保護目錄時,普通權限可能無法更新旁邊的設定檔;規範的客戶端通常會把使用者資料放在使用者設定目錄,應從客戶端日誌確認實際路徑。
不建議在未備份的情況下直接刪除整個使用者資料目錄。該目錄可能同時包含訂閱網址、覆寫規則、策略組選擇、DNS 設定與介面偏好。更穩妥的方法是先匯出設定,再依照客戶端文件定位單一訂閱快取或索引。若客戶端提供「重設設定」功能,也應先了解影響範圍再使用。
訂閱可以匯入,但節點或規則集為空
成功匯入不代表所有遠端資源都已載入。主設定可以繼續引用 proxy-providers 和 rule-providers,核心啟動後還會分別請求這些資源。主訂閱回傳正常,但 provider 網址過期時,介面可能出現策略組為空、規則集下載失敗或部分節點遺失。
檢查代理集合更新
查看日誌中的 provider 名稱、請求網址狀態與更新時間。策略組使用 use 引用 provider 時,provider 名稱必須與定義一致。遠端內容需要符合核心要求的 provider 格式;一般網頁、完整主設定或不相容的節點清單都可能載入失敗。若策略組同時使用靜態 proxies 與 provider,靜態項目仍可能顯示,從而掩蓋遠端集合載入失敗。
檢查遠端規則集
規則集的 behavior、內容格式與規則類型需要相互匹配。例如 domain、ipcidr 與 classical 行為對應不同的資料結構。主設定引用的規則集名稱、規則中的策略名稱與遠端檔案格式只要有一項不一致,都可能使規則集無法使用。更新後應檢查日誌是否顯示規則數量,並確認最後存在 MATCH 等兜底行為。
考慮直連與代理下載路徑
遠端資源可以設定為直接取得,也可能經由目前的代理下載。若 provider 只能透過代理存取,而核心在載入 provider 前還沒有可用節點,就可能形成啟動相依。相反地,若伺服器只允許特定網路直接連線,強制經由代理請求也會失敗。應依照客戶端與核心支援的設定方式明確下載路徑,並保留至少一個可用的啟動方案。
恢復後的驗證清單
訂閱更新按鈕顯示成功後,還應驗證設定是否真正投入運作。只檢查節點清單並不足夠,因為 DNS、規則與系統代理仍可能沿用舊狀態。建議依固定順序完成以下測試。
- 確認訂閱更新時間、設定檔修改時間與日誌時間一致。
- 確認節點數量符合預期,策略組內沒有大量空白引用。
- 對一個節點執行延遲測試;延遲結果只表示測試網址可連線,不代表所有網站都能存取。
- 檢查目前代理模式,確認規則模式、全域模式或直連模式符合測試目標。
- 開啟連線日誌,確認目標請求命中了預期規則與策略組。
- 檢查 DNS 日誌,排除網域解析失敗、錯誤映射或系統 DNS 繞過。
- 啟用系統代理時,確認本機監聽連接埠與系統設定一致;使用 TUN 時,確認服務、權限與路由已建立。
- 重新啟動一次客戶端,確認訂閱索引與啟用中的設定能夠持久保存,而不是只在目前工作階段生效。
TUN 模式會接管更廣泛的系統流量,但無法修復無效訂閱或錯誤 YAML。設定尚未通過檢查時,不應把啟用 TUN 當作恢復手段。反之,設定已正常而只有部分應用程式不經代理時,再檢查 TUN 權限、系統路由、排除項目與應用程式本身的代理設定會更有效。
依症狀選擇恢復動作
| 症狀 | 優先檢查 | 恢復動作 |
|---|---|---|
| 401、403 或方案提示 | 訂閱憑證與服務狀態 | 在伺服器端重新取得網址,替換舊訂閱項目 |
| 請求逾時或網域解析失敗 | 本機網路、DNS、系統時間與代理回環 | 校正時間、切換網路、檢查更新流量路徑 |
| HTTP 200 但第一行解析失敗 | 回應是否為 HTML、JSON 或空內容 | 修復伺服器端入口或選擇正確的訂閱格式 |
| 日誌提供 YAML 行號 | 上一行的縮排、引號、清單與欄位類型 | 備份後逐項修正,並重複執行設定檢查 |
| 匯入成功但節點數量為零 | provider 網址、格式與策略組引用 | 單獨更新 provider,核對名稱與內容類型 |
| 更新後仍顯示舊節點 | 啟用中的設定、快取索引與目錄權限 | 建立新的訂閱項目,檢查寫入時間並重新啟動核心 |
完整恢復順序可簡化為:先讀取第一個錯誤,再確認請求狀態;請求成功後辨識回應內容;內容正確後檢查 YAML 與核心相容性;設定通過後處理快取與寫入;最後驗證 provider、規則、DNS、系統代理或 TUN。依層級處理可以保留有效設定,也能避免在訂閱服務異常時誤刪本機可用版本。