先區分下載失敗、轉換失敗與設定載入失敗
「訂閱失敗」不是單一故障。用戶端從訂閱網址取得設定並套用,至少會經過網路請求、伺服器回應、內容辨識、YAML 解析、欄位驗證與核心載入等階段。不同階段顯示的提示可能相近,但處理方式完全不同。反覆點擊更新通常只會重複相同錯誤。
第一類是下載失敗。用戶端未取得可用回應,常見情況包括請求逾時、連線遭重設、網域名稱解析失敗、HTTP 401、403、404、429 或 5xx。此時尚未進入 YAML 解析,修改本機設定的縮排不會有任何作用。
第二類是回應內容不符合預期。請求本身回傳成功狀態,但正文可能是登入頁面、存取驗證頁面、方案到期說明、JSON 錯誤物件,或只包含節點 URI 的文字。瀏覽器能開啟網址,只能證明瀏覽器取得了一份回應,不能證明該回應就是目前用戶端可載入的 Clash 設定。
第三類是語法或欄位解析失敗。伺服器確實回傳了 YAML,但縮排、冒號、引號、清單層級或字元編碼可能有問題;也可能是設定使用了目前核心不認識的欄位。此時日誌通常會出現類似 YAML、unmarshal、decode、field、proxy 或 rule 等關鍵字。
第四類是載入後無法使用。訂閱已進入設定清單,也看得到節點名稱,但啟用設定時失敗,或啟用後無法連線。這通常與缺少策略群組、規則引用錯誤、代理協定參數不完整、DNS 設定衝突或核心版本差異有關,不應繼續沿著「網址打不開」的方向處理。
檢查訂閱連結狀態與請求條件
訂閱網址通常包含用於識別帳戶或授權範圍的查詢參數。複製時漏掉問號後的參數、截斷連接符或混入換行,都可能讓伺服器回傳錯誤結果。檢查時應從服務提供者的訂閱管理頁面重新複製完整網址,不要手動拼接,也不要在聊天記錄中只選取部分內容後繼續使用。
確認網址沒有被截斷或轉義
- 檢查網址是否以
http://或https://開頭,網域與路徑是否完整。 - 確認查詢參數仍然存在,尤其是問號、等號、連接符以及參數值末尾的字元。
- 從 QR Code 辨識或跨裝置複製時,檢查網址中間是否插入空格、中文標點或換行。
- 如果網址包在 YAML 字串中,含有特殊字元時應以引號括起,避免被當成註解或語法標記。
根據 HTTP 狀態判斷方向
- 401 / 403
- 授權參數失效、請求條件不符合或伺服器拒絕存取。應重新取得訂閱網址,並檢查帳戶狀態與服務端限制。
- 404 / 410
- 路徑不存在或資源已撤銷。舊網址可能已由服務端更換,持續重新整理本機快取也無法恢復。
- 429
- 短時間內更新次數過多。請停止連續重新整理,等待限制時段結束後再測試一次。
- 5xx
- 服務端暫時無法完成請求。應保留錯誤時間與狀態碼,稍後重試或聯絡訂閱提供者。
如果錯誤是逾時或網域名稱解析失敗,還要檢查目前的基礎網路。測試時先暫時停用系統代理與 TUN,再存取訂閱網域,即可判斷訂閱更新是否錯誤地依賴尚未啟動的代理。部分用戶端允許為設定更新指定 DIRECT 或代理策略;當訂閱網域在目前網路中無法直連時,需要明確設定更新流量的走向,避免形成「必須載入設定才能存取訂閱,但必須存取訂閱才能載入設定」的循環。
判斷回應正文是否真的是 Clash 設定
HTTP 200 只表示伺服器完成了一次請求,不代表正文格式正確。最典型的情況是訂閱網址被重新導向至登入頁或存取驗證頁,用戶端收到的其實是 HTML。解析器接著可能在第一行的 <!doctype html>、<html> 或其他標籤附近報錯。
完整的 Clash 設定通常是 YAML 文字,常見頂層欄位包括 proxies、proxy-groups、rules、dns、proxy-providers 或 rule-providers。欄位組合會依設定用途而異,不要求每個檔案都包含全部欄位,但正文不應是網頁、錯誤提示或帳戶資訊頁面。
proxies:
- name: "Example Node"
type: ss
server: example.invalid
port: 443
cipher: aes-128-gcm
password: "example-password"
proxy-groups:
- name: "節點選擇"
type: select
proxies:
- "Example Node"
- DIRECT
rules:
- MATCH,節點選擇
另一種常見回應是經過 Base64 編碼的節點 URI 集合,解碼後可能由 ss://、trojan://、vmess:// 等項目組成。這類內容不是完整的 Clash YAML。部分圖形用戶端會在匯入時呼叫轉換流程,另一些用戶端只接受完整設定,因此同一個網址在不同軟體中可能得到不同結果。應在服務端訂閱頁面選擇明確標示為 Clash、Mihomo 或相容格式的輸出,而不是把任意通用訂閱直接當作 YAML 檔案載入。
還要留意重新導向。訂閱網址可能先回傳 301 或 302,再跳轉至實際下載網址。若用戶端禁止跨網域重新導向、目標網域的憑證異常,或跳轉後遺失授權參數,瀏覽器與用戶端的結果可能不同。若日誌中同時出現 redirect、certificate、TLS 或 hostname,應優先檢查跳轉目標與系統時間,而不是修改代理節點欄位。
回應字元編碼通常應為 UTF-8。檔案開頭出現異常不可見字元,或正文被錯誤地以其他編碼讀取,都可能導致第一行欄位無法辨識。可以使用可信賴的本機文字編輯器查看編碼並另存為 UTF-8,再以本機設定方式測試。若本機檔案可載入但遠端訂閱無法載入,問題通常位於服務端回應標頭、正文編碼或下載鏈路。
逐項檢查 YAML 縮排、引號與清單結構
YAML 依靠縮排表達層級,空格數量與欄位位置會直接改變資料結構。Clash 設定通常使用兩個空格作為一級縮排。YAML 規範允許其他一致的空格寬度,但實際排查時統一使用兩個空格最容易閱讀,也能降低複製片段時的層級錯誤。縮排不應使用 Tab。
最常見的語法錯誤
- 清單符號層級錯誤:
- name必須位於對應的清單欄位之下。若與proxies:對齊,解析器會將其視為新的根層級結構並報錯。 - 冒號後缺少空格:欄位通常寫成
port: 443,而不是port:443。後者可能會被辨識為一般字串。 - 名稱含特殊字元卻沒有引號:節點名稱或策略群組名稱含有冒號、井號、方括號、花括號或開頭星號時,建議使用雙引號括起。
- 註解截斷值:未加引號的井號會開始註解。密碼或名稱包含井號時,井號後的內容可能會被忽略。
- 重複鍵或錯誤類型:在同一層級重複宣告
rules,或將需要清單的欄位寫成單一字串,可能在解析或欄位驗證階段失敗。
以下片段的問題是 proxies 中的項目少了一層縮排,而且策略群組引用的名稱與實際節點名稱不一致:
proxies:
- name: "香港節點"
type: ss
proxy-groups:
- name: "節點選擇"
type: select
proxies:
- "香港節點 01"
修正縮排只是第一步。策略群組中的節點名稱、規則中的策略名稱、provider 引用名稱,都必須與定義處逐字一致,包括空格、大小寫與全形字元。YAML 能成功解析,不代表這些引用一定有效;引用錯誤通常要到核心載入設定時才會出現。
如果日誌提供了行號與欄號,應先查看報錯行,再向上檢查最近的父層欄位。解析器指出的位置有時是「無法繼續解析」的位置,真正錯誤可能在前一行,例如引號未閉合、陣列括號缺失,或上一層縮排提前結束。不要只刪除報錯行,否則可能將設定變成語法正確但功能不完整的檔案。
核對 Clash 與 Mihomo 的欄位相容性
設定語法正確後,仍可能因核心能力不同而載入失敗。傳統 Clash、Clash Meta 的後續實作 Mihomo,以及不同圖形用戶端內建的核心版本,不保證支援完全相同的協定參數與擴充欄位。若訂閱提供者依較新的 Mihomo 格式產生設定,而用戶端仍使用較舊核心,就可能出現未知欄位、不支援代理類型或參數無法反序列化等問題。
排查時先在用戶端的「關於」、「核心」或日誌開頭查看實際執行的核心名稱與版本,不要只根據圖形用戶端名稱判斷。部分用戶端可以切換核心,但設定更新後仍可能由舊核心執行;也有用戶端本體已更新,核心檔案卻沒有同步更新。
容易產生版本差異的區域
- 代理協定欄位:新協定類型、傳輸層參數、指紋參數與 UDP 相關選項可能需要較新的 Mihomo 版本。
- TUN 設定:不同版本對網路堆疊、自動路由、介面探測與 DNS 劫持欄位的取值要求可能不同。欄位存在不代表目前平台具備相應權限。
- DNS 增強模式:
fake-ip、redir-host、nameserver policy 與 fallback 相關結構必須維持正確的層級與類型,舊設定範例未必適用於目前核心。 - 規則集與 provider:
rule-providers、proxy-providers的遠端網址、更新間隔、檔案路徑與 behavior 必須符合核心支援的格式。 - 嗅探與地理資料:sniffer、GEOSITE、GEOIP 與 geodata 相關行為會隨核心實作及資料檔案狀態而變化。
日誌出現 field not found、unsupported proxy type、invalid value 或類似訊息時,應針對對應欄位查閱目前核心文件。暫時刪除未知欄位可用於確認故障來源,但不了解功能影響時不應長期採用。例如刪除 TUN 的路由欄位可能讓設定成功載入,卻使系統流量無法進入核心;刪除 DNS 部分也可能改變網域解析路徑。
若訂閱服務同時提供 Clash 與 Mihomo 格式,使用 Mihomo 核心的用戶端通常應選擇明確對應 Mihomo 的設定。反之,舊版 Clash 核心應使用其能辨識的基礎欄位。不要靠反覆修改檔案副檔名來解決相容性問題,副檔名不會轉換設定結構。
清除失敗快取並確認設定確實完成更新
許多圖形用戶端會先將遠端訂閱下載成本機檔案,再從本機快取載入。更新失敗時,用戶端可能繼續使用上一次成功的版本;也可能寫入一份只含錯誤頁面內容的暫存檔。因此,「節點清單仍然存在」不能證明剛才更新成功,「更新時間已變更」也不能單獨證明新設定已被核心接受。
先記錄目前可用設定的名稱與更新時間,並匯出必要的本機覆寫內容。接著在用戶端日誌中確認更新動作包含「請求完成、檔案寫入、設定驗證、核心重新載入」等階段。若只看到下載完成,沒有看到 reload 或設定切換成功,表示流程可能停在驗證階段。
安全的快取處理順序
- 停止自動更新,避免排查期間持續覆寫檔案或觸發頻率限制。
- 保留最近一次可正常運作的本機設定副本,以便恢復基礎網路。
- 刪除用戶端中對應的失敗訂閱記錄,再使用重新複製的完整網址新增。
- 完全退出用戶端並重新啟動,確認背景核心程序也已結束。
- 執行一次手動更新,立即查看日誌中的 HTTP 狀態、檔案路徑與第一個錯誤。
- 更新成功後再啟用自動更新,並設定合理的間隔。
如果用戶端支援覆寫、合併或預處理,也要暫時停用這些功能。原始訂閱可以解析,但合併後失敗,表示故障位於本機覆寫檔案。常見問題包括覆寫後產生重複策略群組、規則指向已刪除的群組、將清單替換成物件,以及向舊核心寫入新欄位。
設定儲存路徑也可能造成誤判。系統權限不足、路徑含有無法處理的字元、磁碟空間不足或安全軟體阻止寫入時,用戶端雖然下載成功,卻無法替換舊檔案。這類日誌通常包含 write、permission、rename、file in use 等資訊。應修復檔案寫入條件,而不是繼續修改遠端訂閱。
依固定順序完成訂閱匯入自我檢查
高效排查的關鍵是一次只驗證一層,並保留每一步的結果。以下順序適用於「訂閱連結失效」、「設定解析失敗」、「更新後無法啟用」等相近問題,也能減少網路、格式與用戶端故障彼此干擾。
- 驗證基礎網路:暫停系統代理或 TUN,確認一般網路與 DNS 可用,再測試訂閱網域是否能建立連線。
- 重新取得網址:從訂閱管理頁面複製完整連結,排除截斷、過期與手動修改。
- 記錄請求結果:查看 HTTP 狀態、重新導向、TLS 提示與回應類型,不要以瀏覽器「能開啟」作為唯一判斷依據。
- 辨識正文格式:確認回傳內容是完整 Clash YAML、provider 檔案還是 URI 集合,並選擇相符的匯入方式。
- 檢查 YAML:依報錯行檢查縮排、引號、冒號、清單與引用名稱,先建立可載入的最小設定。
- 核對核心版本:確認用戶端實際使用的是 Clash 還是 Mihomo,並檢查報錯欄位是否受目前版本支援。
- 停用本機覆寫:先以原始訂閱測試,接著逐項恢復規則合併、腳本、DNS 與 TUN 修改。
- 處理快取:保留可用副本後重新新增訂閱,確認下載、驗證、寫入與核心重新載入全部完成。
- 驗證執行結果:查看策略群組是否完整、規則是否命中、DNS 是否回傳預期結果,再測試實際連線。
向訂閱提供者回報時,建議提供發生時間、用戶端名稱、實際核心與版本、HTTP 狀態、錯誤日誌前後數行,以及已遮蔽授權資訊的回應開頭。不要只傳送「無法匯入」的截圖。明確的證據能快速判斷問題位於訂閱產生、伺服器存取控制、格式轉換或用戶端相容層。
如果同一份本機 YAML 能在目前核心載入,而遠端網址匯入失敗,應重點檢查下載請求、重新導向、回應編碼與快取寫入。如果多個用戶端都能下載正文,卻在同一欄位報錯,則更可能是服務端產生的設定存在語法或相容性問題。如果只有一台裝置失敗,則應回頭檢查該裝置的系統時間、網路、憑證、檔案權限與用戶端核心版本。
修復完成後,保留一份最近可用的設定,並記錄訂閱格式與適用核心。之後再次出現更新異常時,即可快速區分「遠端訂閱發生變更」與「本機執行環境發生變更」,避免無法連網時失去所有排查條件。