先釐清:下載失敗,還是設定檔解析失敗

訂閱更新失敗,不一定是連結過期。先確認錯誤發生在哪個步驟:用戶端是否收到回應、回應內容是否為 Clash 設定檔,以及目前使用的核心能否辨識設定檔中的欄位。依序檢查,比反覆重新安裝更容易找出原因。

先保留目前可用的設定檔,再新增一份測試用設定檔。疑難排解時不要刪除所有節點,也不要同時修改 DNS、TUN 和代理模式。一次只調整一項,並記下更新時間與完整錯誤訊息。

畫面提示優先檢查下一步
401、403、404授權、連結狀態、服務端限制登入服務提供者的管理後台,重新複製訂閱連結
timeout、no such host網路連線、網域解析切換 Wi-Fi 與行動數據進行比對
yaml、unmarshal、line回應內容與 YAML 結構確認回應不是網頁,再查看錯誤行
unsupported、unknown proxy type通訊協定與核心相容性確認節點類型與用戶端核心
更新成功,但節點無法使用節點、策略組、分流與 DNS改查連線問題,不要只檢查訂閱網址

第一類:連結過期、權杖失效或複製不完整

從服務提供者的管理後台重新複製,不要從聊天紀錄拼湊

開啟訂閱服務的帳戶頁面,確認方案狀態、到期日與剩餘流量,再找到訂閱入口。有些服務重設訂閱後會立即停用舊網址;能登入帳戶,不代表舊權杖仍然有效。

  1. 在管理後台選擇適用於 Clash 或目前 mihomo 用戶端的訂閱格式,並使用複製按鈕取得完整網址。
  2. 開啟用戶端的設定檔編輯頁面,確認網址以 https:// 開頭,結尾沒有多餘的空格、換行或中文句號。
  3. 保留原始查詢參數。不要刪除問號後方的內容,也不要自行截掉 & 後面的參數。
  4. 儲存為新設定檔後,手動更新一次,確認狀態是否由失敗轉為成功,以及更新時間是否有變化。

如果複製的內容中出現字面文字 &,可能是複製到了經網頁跳脫的原始碼。請回到服務提供者的複製入口重新取得連結,不要逐一猜測參數。使用 QR Code 匯入後,也要確認確實建立了設定檔,不能只憑掃描成功就判定訂閱有效。

如何判讀 HTTP 狀態碼

401 通常表示驗證未通過;403 可能是權限受限,也可能遭防護系統封鎖;404 可能表示網址已變更、路徑錯誤,或服務端隱藏了無效資源。單看狀態碼無法確定方案已到期。若出現 429,請先停止連續重新整理,並依服務端提示等待;若是 5xx,則應確認服務提供者的服務狀態。

第二類:回傳的內容不是 Clash 設定檔

訂閱 URL 能在瀏覽器中開啟,只能證明請求收到回應。回應內容可能是登入頁、驗證碼頁、錯誤訊息,也可能是其他用戶端使用的節點清單。即使狀態碼為 200,也不代表 Clash 一定能解析。

在瀏覽器中查看實際回傳內容

  1. 在自己的裝置上開啟剛複製的訂閱網址。請勿透過公開網頁代理代為存取。
  2. 若有下載檔案,請用本機文字編輯器查看;若直接顯示文字,請檢查開頭及主要欄位。
  3. 若出現登入畫面、驗證碼、<html> 或 <!DOCTYPE html>,表示取得的是網頁,而不是設定檔。
  4. 若內容是多個 ss://、vmess:// 等連結,或一整段編碼文字,請回到管理後台選擇 Clash 格式,不要只把副檔名改成 .yaml。

完整的 Clash 設定檔通常會包含 proxies 或 proxy-providers,並搭配 proxy-groups、rules 等欄位。但不能只看有沒有 proxies 就判定設定檔有效:使用遠端代理集合的設定檔,可能不會直接內嵌節點。

也要區分「完整設定檔訂閱」和「代理集合檔案」。代理集合常以 proxies: 開頭,供主設定檔中的 proxy-providers 引用;其中不一定包含日常使用所需的策略組與規則。若匯入位置選錯,可能會出現匯入後缺少策略組,或執行結果不如預期的情況。

第三類:網路、DNS 或 TLS 導致更新請求受阻

若出現連線逾時、網域解析失敗或憑證錯誤,請先處理請求連線,不要立即修改 YAML。這時用戶端可能還沒有取得設定檔,調整分流規則通常無法解決這次下載問題。

使用兩種網路進行單一變因比對

  1. 記下完整錯誤訊息,保持使用同一個 URL,先透過 Wi-Fi 更新一次。
  2. 切換到行動數據後再更新一次。若只有其中一種網路失敗,請優先檢查該網路的 DNS、認證入口或存取限制。
  3. 若已有可用的設定檔,請比較停止與啟動服務後的更新結果。不同版本的用戶端可能會以不同方式代理訂閱請求,或使用不同的連線出口。
  4. 檢查系統的「設定」→「系統」→「日期與時間」,並啟用自動設定時間;實際選單名稱會因手機品牌而異。系統日期明顯錯誤會影響憑證效期的判斷。

no such host 指向網域解析問題;connection refused 表示連線遭拒;i/o timeout 表示請求逾時;若出現 x509 相關訊息,則應檢查憑證與系統時間。這些資訊比籠統的「更新失敗」更有助於找出問題。

若更新必須透過代理,而唯一可用的設定檔已失效,就可能陷入「必須先連上網路才能更新,卻又得先更新才能連上網路」的循環。可先改用另一個可信任的網路取得設定檔,或依服務提供者的說明暫時匯入本機檔案。請勿為了繞過憑證錯誤而長期關閉驗證,也不要任意將 HTTPS 網址改成 HTTP。

若設定檔已下載,但記錄顯示某個 proxy-provider 或 rule-provider 取得失敗,代表後續資源請求發生錯誤。請記下對應的資源類型與網域,分別檢查是否可連線;主訂閱更新成功,不代表所有遠端資源都已更新。

第四類:YAML 語法與核心相容性錯誤

有行號時,先檢查該行及上一層縮排

YAML 以空格表示層級。使用 Tab、中文冒號、漏加引號或清單縮排錯誤,都可能導致解析失敗。錯誤行有時只是解析器發現問題的位置,真正的錯誤可能在前一行,因此要一併檢查前後文。

  • 同一層的欄位應使用相同縮排;以下範例統一使用兩個空格,不混用 Tab。
  • 欄位分隔符請使用半形冒號,並依 YAML 語法在冒號後留空格。
  • 節點名稱含有 : 或 # 等特殊組合時,請用成對引號括住字串。
  • 策略組引用的節點名稱與群組名稱必須完全一致,包括大小寫和空格。
  • 不要在同一層重複定義 rules 等鍵;不同解析器處理重複鍵的方式可能不同。

以下僅供比對清單與字串的寫法,並非可直接取代訂閱內容的完整代理設定檔:

proxy-groups:
  - name: "手動選擇"
    type: select
    proxies:
      - DIRECT

rules:
  - "DOMAIN-SUFFIX,example.com,DIRECT"
  - "MATCH,手動選擇"

若在本機編輯後才開始出錯,請先還原編輯前的副本。若遠端訂閱本身有問題,應優先請服務提供者修正;只修改本機快取,下次更新時可能又會被覆蓋。

YAML 語法正確,不代表目前的核心支援

原版 Clash 與 Clash Meta(現稱 mihomo)的設定能力並不完全相同。例如,包含 type: hysteria2 的節點,需要使用支援該通訊協定的核心。較舊的原版 Clash 核心不會只因檔案是 YAML,就能辨識這些節點。

請在用戶端的「關於」或核心資訊頁面記下用戶端名稱、應用程式版本與核心版本,再與訂閱服務提供者標示的需求比對。介面看起來相似,不代表使用相同核心;只更新訂閱也無法讓舊核心新增通訊協定支援。若需要更換用戶端,可先查看用戶端選型指南,再為新用戶端選擇相應格式。

在 Android 用戶端中完整檢查一次

以下以經典版 Clash for Android 介面為例:進入「設定檔」→右上角「+」→「URL」,輸入名稱與訂閱網址後儲存。若已有設定檔,可從該項目的選單進入編輯或更新。不同分支的按鈕名稱可能不同,請以實際畫面為準,勿將節點匯入入口當成完整設定檔的匯入入口。

  1. 先更新:等待請求完成,記下成功時間或完整錯誤訊息。重複點選更新無法修復格式問題,還可能觸發流量限制。
  2. 再選取:確認目前啟用的是剛更新的測試設定檔,而不是清單中的舊設定檔。
  3. 再啟動:返回首頁啟動服務,首次啟動時請確認 Android 的 VPN 授權,並留意是否出現設定檔載入錯誤。
  4. 檢查策略組:開啟代理頁面,確認策略組中有預期的節點,並選擇一個節點進行連線測試。
  5. 實際測試連線:開啟一個目標網頁。延遲測試成功只代表測試目標當時可連線,不代表所有網站和規則都正常。

若更新成功、服務也能啟動,但網頁仍無法開啟,通常代表訂閱解析這一關已經通過。接下來請檢查代理模式、節點狀態、DNS 與應用程式存取控制。此時切換 TUN 或修改 mixed-port 並非修復訂閱語法的必要步驟,應依實際連線問題分別排查。

仍未解決?請提供以下去識別化資訊

聯絡服務提供者或用戶端維護者時,清楚描述重現條件,比只說「訂閱壞了」更有幫助。可整理以下五項資訊:

  • 用戶端名稱、應用程式版本、核心名稱與版本,以及 Android 系統版本。
  • 發生錯誤的確切時間、使用 Wi-Fi 還是行動數據,以及當時服務是否已啟動。
  • 完整錯誤訊息與行號;記錄中的權杖、密碼及個人網域請視需要遮蔽。
  • 瀏覽器收到的是設定檔文字、下載檔案,還是登入頁或錯誤頁。
  • 同一個連結改用其他網路後的結果,以及上次成功更新的時間。

依照「連結狀態 → 回傳格式 → 網路請求 → 語法與核心」的順序檢查,通常就能將問題定位到特定環節。保留可用副本、每次只修改一項,並根據原始錯誤訊息與更新結果驗證,可減少反覆嘗試。