物件
列表裡能點的,和列表裡只存地址的,不是一種東西。
開關開啟時只會用目前高亮的記錄。Subscribe 是容器:裡面是 URL,子記錄要重新整理之後才出現。規則配置是第三種物件,與前兩者並列,互不替換。
01
三種物件互不替換
主介面列表裡能看見的,通常是記錄和容器。規則檔案在另一個入口裡。換高亮行不會換規則;換規則也不會換高亮行;重新整理容器不會改 FINAL。把這三者當成「同一次匯入的三份複製」,後面所有對照都會亂。
記錄
一條出口
地址、埠、協定、認證、傳輸層。可被高亮。沒有「重新整理」——遠端改了參數,本地這條不會自己變,只能編輯或刪掉重建。
容器
一個 URL
儲存只寫下地址,此時子記錄集合可以是空的。重新整理才去拉。失敗則保留上一次成功的集合。URL 失效時,用戶端不能把它修好。
02
記錄:欄位要和遠端是同一套
新增入口按類型分。類型是這條記錄的身分,不是標籤。選 Trojan、密碼卻是 Shadowsocks 的,能存下來,隧道握手會失敗。UUID、密碼、加密方法、alterId 這類認證欄位必須與對端一致;「看起來差不多」不夠。
傳輸層屬於記錄本身,不是可選項。遠端用 WebSocket,本地卻留在 TCP;遠端要求 TLS,本地關掉;路徑、Host、gRPC 服務名、REALITY 公鑰與短 ID 填成另一套——都能儲存,都不能握手。排障時把「協定類型」和「傳輸層」當成兩個獨立檢查項,不要只核對地址和埠。
SNI / 對端主機名、是否跳過證書驗證、指紋,決定 TLS 能不能完成。證書與系統時間有關:時間未自動同步時,所有依賴 TLS 的記錄會一起失敗,換一行也沒用。見 Data。
一條記錄只描述一個出口。它不包含規則,也不包含「連上之後自動換成另一條」。列表探測看到的毫秒數,只說明這一跳此刻探不探得通,見Data 頁。
- 地址
- 對端主機名或 IP。這裡填 URI 整段,通常不會被當成 ss:// 解析,只會變成一個非法主機名。
- 埠
- 對端監聽的埠。填成網頁埠、填成管理面板埠,握手對象就不是代理行程。
- 認證
- 密碼、UUID、使用者名稱,按該類型要求的那一套。多填一個、少填一個、從別的類型拷過來,都屬於認證失敗。
- 傳輸
- TCP、WebSocket、gRPC 等,以及路徑與 Host。與類型並列,不是「進階可忽略」。
03
URI 是打包好的一行,不是位址列
ss://、vmess://、trojan://、vless:// 把類型、認證、傳輸層打成一行。能整段貼進新增入口時,比手抄 UUID 少出錯。把整段貼進「伺服器地址」那一個格子,通常不會被當成 URI 解析。
掃碼得到的可能是一條記錄,也可能是一個容器 URL,也可能是一份配置的下載地址。儲存之後看它能不能被高亮:能高亮、欄位裡是主機和埠的,是記錄;只能展開、點進去是 URL、子記錄要重新整理才出現的,是容器;進了配置列表而不是伺服器列表的,是 Config。
同一張碼被掃兩次,列表裡可能出現兩條相同的記錄。連線時仍然只用高亮的那一條,重複行不會疊加頻寬,只增加選錯的機會。
04
容器:儲存和重新整理是兩步
儲存把 URL 寫進本機。這一步不下載子記錄。儲存剛結束時列表看起來是空的,對容器來說是正常狀態,不是「訂閱壞了」。
重新整理按 URL 拉取。成功則用返回內容生成或替換子記錄,這些子記錄隨後可以像普通記錄一樣被高亮。失敗時不會為了失敗把已經在的子記錄抹掉——你看到的仍是上一次成功的集合,可能已經過期,但還在。
開啟應用時重新整理、背景重新整理,都是在重複「重新整理」。背景能否執行,還看系統是否允許該應用背景重新整理,以及裝置是否在省電。這是 系統 邊界,不是容器開關沒開啟。
重新整理請求走當時的網路路徑。開關正連著一條已失效的記錄時,重新整理本身也可能失敗。把策略改成 Direct,或先關掉開關,是在隔離路徑,不是在修復 URL。URL 返回 404、401、空檔案,用戶端只能報告失敗,不能替遠端把連結續上。
用瀏覽器開啟訂閱 URL,常常得到一段不能當網頁看的內容。那是給用戶端解析的。瀏覽器能下到位元組,說明鏈路通、連結本身還活著;瀏覽器也打不開,問題在網路或連結,不在 Shadowrocket 的解析器。
伺服器容器的重新整理更新的是列表裡的子記錄。規則 / 配置訂閱的重新整理更新的是名單檔案。兩個 URL 長得像,物件不是一個。重新整理了容器,FINAL 不會變;重新整理了規則,高亮行也不會變。
05
很多行,只用一行
列表允許很多記錄、很多容器。連線時仍然只使用目前高亮的那一條記錄。兩個容器不會自動負載平衡,也不會自動改選「探測數字最小的那一行」。探測數字再小,沒被高亮,開關開啟後也不會用它。
刪除容器時,由它生成的子記錄通常一併消失。若目前高亮屬於這個容器,刪完需要另選一行再開開關。手動新增的記錄不會因為某個容器被刪而消失;反之,容器裡刷出來的行,不要當成可以脫離 URL 永久存在的副本——下一次重新整理可能改寫或移除它們。
把容器裡的某一行再手動複製成獨立記錄,以後重新整理就不會動這份副本。遠端改了埠,副本不會跟著改,需要自己編輯。這是「凍結一行」和「繼續跟隨 URL」之間的取捨。
06