物件

列表裡能點的,和列表裡只存地址的,不是一種東西。

開關開啟時只會用目前高亮的記錄。Subscribe 是容器:裡面是 URL,子記錄要重新整理之後才出現。規則配置是第三種物件,與前兩者並列,互不替換。

  1. 01三種物件
  2. 02記錄
  3. 03URI 與掃碼
  4. 04容器:儲存與重新整理
  5. 05很多行,只用一行
  6. 06URL 按金鑰保管

01

三種物件互不替換

Shadowrocket 新增類型列表:Subscribe 是容器,其它類型是記錄
新增時 Type 裡 Subscribe 是容器,其餘類型是記錄。截自 App Store,以你裝置上的版本為準。

主介面列表裡能看見的,通常是記錄和容器。規則檔案在另一個入口裡。換高亮行不會換規則;換規則也不會換高亮行;重新整理容器不會改 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

URL 按金鑰保管

許多容器把令牌放在路徑裡。出現在截圖、群檔案、公開網盤、瀏覽器歷史裡,等於交出子記錄的訪問權。用戶端不會替你作廢一條已經洩漏的 URL,也不會通知遠端去換連結。

匯出的備份、發給另一臺裝置的檔案,同樣含認證參數。按金鑰保管,不要當普通文件轉發。iCloud 同步走的是你的 Apple ID,不是開發者的伺服器;開發者側沒有你的列表。見 Config

應用不能延長某條 URL 的有效期,不能代付伺服器費用,不能把握手失敗的記錄變成可用。這些在 系統 裡歸為做不到的事,不是設定項沒找到。