Clash 訂閱管理:更新失敗、鑑權與健康檢查排查指南
訂閱突然更新失敗、節點全部變灰?這篇文章從訂閱的底層原理講起,把常見的失敗原因、健康檢查設定和節點篩選寫法一次講透。
訂閱到底是什麼,出了問題該看哪裡
平時說的「匯入訂閱」,在設定檔層面對應的其實是 proxy-providers 欄位:用戶端定期存取一個 URL,把回傳的節點列表拉下來、解析成節點,塞進對應的策略組。搞懂這一層原理,遇到「訂閱更新失敗」時才知道該往哪個方向排查。
proxy-providers: my-sub: type: http url: "https://example.com/sub?token=xxx" interval: 3600 # 每 3600 秒自動更新一次 health-check: enable: true url: https://www.gstatic.com/generate_204 interval: 300
大多數圖形化用戶端會把這一大段設定藏在「匯入訂閱」的輸入框背後,你填的那個連結就是 url 欄位,介面上的「更新間隔」對應 interval,本質上沒有區別。
訂閱更新失敗的幾種常見原因
-
被識別成「非正常用戶端」拒絕存取部分訂閱服務會檢查請求的
User-Agent,封鎖非常見用戶端的請求。可以在header欄位裡手動指定一個常見的 UA 字串偽裝過去。 -
訂閱連結需要鑑權如果訂閱位址需要攜帶
Authorization標頭才能存取(常見於自建面板的訂閱介面),同樣透過header欄位附加上去,而不是把 token 拼在 URL 裡(部分服務兩種方式都支援,但優先用 header 更規範)。 -
拉取訂閱本身需要走代理如果訂閱伺服器本身在境外,而你的網路存取境外網站需要先有一個可用節點,就會出現「沒有可用節點導致訂閱拉不下來,訂閱拉不下來又導致沒有節點」的死循環。這時可以用
proxy欄位指定一個固定的引導節點專門用來更新訂閱。 -
訂閱檔案體積超出限制
size-limit欄位預設不限制,但如果用戶端或面板自己設定了更保守的限制,超大的訂閱檔案會被直接拒絕,可以適當調大或去掉這個限制。
proxy-providers: my-sub: type: http url: "https://example.com/sub" proxy: 直連引導節點 # 專門用於更新訂閱的固定出口 header: User-Agent: - clash-verge/v2.0.0 Authorization: - Bearer your-token-here
如果用戶端圖形介面沒有直接暴露 header 這個選項,通常需要透過「訂閱覆寫/自訂參數」之類的進階設定來傳入,具體入口因用戶端而異,找不到的話可以查閱對應用戶端的官方文件。
用 health-check 揪出失效節點
訂閱節點用久了,伺服器下線、限速、被牆都是常事,如果不做健康檢查,策略組裡會混著一堆連不上的「殭屍節點」,自動測速/自動選擇時體驗很差。health-check 就是解決這個問題的:
在對應的 proxy-providers 項目下加一段 health-check,指定一個穩定的檢測位址(推薦 https://www.gstatic.com/generate_204 或 https://cp.cloudflare.com),用戶端會按設定的間隔定期給每個節點發一次檢測請求。
enable:是否啟用健康檢查,建議始終開啟。interval:檢測間隔,單位秒,不需要設得太短,300~600 秒就足夠。lazy:預設true,表示節點沒被實際使用時不檢測,省資源;如果想讓面板一直顯示準確的延遲資料,可以關掉,但會增加一點背景流量。
策略組類型為 url-test(自動測速)或 fallback(自動故障轉移)時,健康檢查的結果會直接影響自動選擇邏輯——失效節點會被自動跳過,不需要人工介入。
訂閱節點太多太雜?用 filter 精簡
有些訂閱一次給幾百個節點,全部塞進一個策略組既難選又難看。filter / exclude-filter 可以按關鍵詞或正規表示式篩選/排除節點,把同地區、同用途的節點單獨拆成幾個策略組。
proxy-providers: hk-only: type: http url: "https://example.com/sub" filter: "(?i)港|hk|hongkong" no-relay: type: http url: "https://example.com/sub" exclude-filter: "(?i)中轉|relay"
同一個訂閱位址可以設定成多個 proxy-providers 項目,分別用不同的 filter 拆出「僅香港」「僅日本」「排除中轉」等子集合,再各自建一個策略組,比在一個幾百節點的大列表裡翻找方便得多。
常見問題
手動點「更新訂閱」和等待自動更新有區別嗎?
沒有本質區別,手動更新只是立即觸發一次本該按 interval 定期執行的拉取動作,效果完全一樣。如果剛改了訂閱商那邊的方案或節點,可以手動更新一次立刻生效,不用等下一個自動更新週期。
訂閱位址在瀏覽器裡能打開,但用戶端拉取失敗,為什麼?
瀏覽器和用戶端發起請求時攜帶的 User-Agent、請求標頭不一樣,部分訂閱服務只允許特定用戶端的 UA 存取。可以按前文方法在 header 裡手動指定一個用戶端常用的 UA 嘗試。
換了新的訂閱連結,舊節點還殘留在策略組裡怎麼辦?
通常是本地快取的訂閱檔案沒有被替換。檢查 path 欄位指定的快取檔案路徑,手動刪除舊的快取檔案後重新觸發一次訂閱更新,或者直接把 proxy-providers 裡的這個項目名稱換成新的,避免新舊內容混用同一個快取檔案。
學完了?把 Clash 裝上試試
全平台安裝包一站取得,跟著推薦標籤選就不會錯,幾分鐘就能用上。