單一節點分享連結會儲存連線參數;訂閱網址則指向可重新取得的節點集合。本文適合已持有服務商提供的訂閱資訊、需要確認匯入格式的使用者:先辨別連結類型,再檢查編碼、位址、連接埠與 TLS 欄位,最後釐清匯入成功、連線成功與規則生效的差別。所有網域、密碼、UUID 與 token 均為示範用虛構值,無法用於實際連線。
[URI] 先分辨參數連結與訂閱入口
Shadowrocket(小火箭)中的單一節點項目與訂閱群組是不同類型的資料。以 ss://、vmess://、vless:// 或 trojan:// 開頭的分享連結,通常包含單一節點的連線參數;以 https:// 開頭的訂閱網址,則需要由 App 向伺服器發出請求,讀取回傳內容後產生節點清單。不能只看連結長度判斷類型。
分享連結是一份參數快照。匯入後,遠端更改位址或密碼,不會自動更新這個獨立項目。訂閱網址則保留了取得清單的入口,執行更新時可以重新取得目前清單;但訂閱並非持續推送,清單是否變更取決於回傳內容與更新是否成功。
- 單一節點:檢查 scheme、憑證、伺服器位址、連接埠、傳輸參數與備註,並以節點方式匯入。
- 訂閱:檢查完整 URL,包含路徑與查詢參數;在訂閱入口儲存後,再確認回傳的節點清單。
- 設定檔:用於管理設定與規則,不應將一行分享連結直接當成完整的
.conf檔案。
[Encoding] Base64、百分比編碼與分隔符號
Base64 是編碼,不是加密。取得分享連結的人通常能還原其中的密碼或 UUID;訂閱 URL 中的 token 也應視為憑證妥善保管。不要將完整連結、QR Code 或解碼結果交給陌生網站處理。排查時只記錄欄位是否存在,並遮蔽敏感內容。
| 符號或編碼 | 常見用途 | 檢查方式 |
|---|---|---|
:// | 分隔 scheme 與後續內容 | 保留半形符號,不要插入空格或換行。 |
@ | 分隔憑證與主機部分 | 密碼中的字面字元 @ 通常須寫成 %40。 |
? 與 & | 引入並分隔查詢參數 | 複製原始連結,避免將網頁原始碼中的 & 誤當成參數分隔符號。 |
# | 引入 fragment,常用於備註 | 備註中的空格可編碼為 %20,不會用於伺服器驗證。 |
Base64 | 包住憑證、JSON 或訂閱本文 | 分辨標準與 URL-safe 字元集,不要盲目解碼整條 URI。 |
標準 Base64 可能包含 +、/ 和結尾的 =;URL-safe 格式可能使用 - 與 _,部分實作也會省略末尾填充字元。百分比編碼處理的是另一層語法,例如 %2F 代表斜線。兩種編碼不能互換,也不能將所有 + 都替換成空格。
[Check]先依照對應格式找出編碼區段,再解碼一次。將
%2F二次編碼成%252F,或把整條連結中的分隔符號都編碼,都會改變解析結果。
[Shadowsocks] ss:// 的憑證與伺服器欄位
常見的 SIP002 格式會將加密方法與密碼編碼在 userinfo 中,伺服器位址和連接埠則維持可讀。以下範例中的 Base64 內容為 aes-128-gcm:test,其中 test 只是示範密碼。連接埠 8388 僅為範例,並非 Shadowsocks 的固定連接埠。
ss://[email protected]:8388#Demo%20SS
- scheme:
ss指定 Shadowsocks,匯入後不應改成其他協定。 - userinfo:解碼後可得加密方法
aes-128-gcm與密碼test,兩者以冒號分隔。 - 主機與連接埠:
example.com:8388表示連線目標;實際使用時必須與使用者已有的參數一致。 - 備註:
Demo%20SS解碼後為Demo SS,僅供辨識項目。
舊式分享格式也可能將包含主機與連接埠的整段內容一併做 Base64 編碼,因此並非每條 ss:// 連結都會出現可讀的 @example.com。含有 plugin 參數的連結,也需要確認外掛及其選項;辨識出 Shadowsocks,不代表附加傳輸參數一定完整。若使用 IPv6 字面位址,主機部分通常會以方括號括住,避免與連接埠分隔冒號混淆。
[VMess] vmess:// 常見的 Base64 JSON 格式
常見的 vmess:// 分享格式,是在 scheme 後放置經 Base64 編碼的 JSON。以下展示的是解碼後的範例,並非可直接貼上匯入的完整 URI。欄位值刻意採用虛構網域與示範用 UUID,重點在於辨識各欄位的用途。
{
"v": "2",
"ps": "Demo VMess",
"add": "example.com",
"port": "443",
"id": "00000000-0000-4000-8000-000000000001",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "example.com",
"path": "/demo",
"tls": "tls",
"sni": "example.com"
}
add與port:伺服器連線位址與連接埠。id:UUID;用於驗證,不能以節點備註取代。aid:Alter ID 欄位;本例為0,應依既有服務參數確認,不要任意調大數值。net、host、path:本例使用 WebSocket,分別描述傳輸類型、相關 Host 與路徑。tls與sni:TLS 啟用狀態與握手伺服器名稱,並非節點顯示名稱。
JSON 中的 v 是分享格式欄位,不是 Shadowrocket 的 App 版本;ps 是備註,不是密碼。不同匯出實作可能採用不同欄位組合,不能將這份範例視為所有 VMess 連結的唯一格式。若匯入後協定正確但路徑遺失,應回到節點編輯頁檢查傳輸參數,而不只是確認 UUID。
[VLESS / Trojan] 可讀 URI 中的驗證資訊與 TLS
VLESS 與 Trojan 常見的分享格式都採用可讀的 URI 結構,但 @ 前方憑證的意義不同:VLESS 通常使用 UUID,Trojan 通常使用密碼。VLESS 本身不提供等同 TLS 的傳輸加密;本例以 security=tls 描述 TLS,不能只根據協定名稱推斷連線安全設定。
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fdemo&sni=example.com#Demo%20VLESS
trojan://demo%[email protected]:443?security=tls&type=tcp&sni=example.com#Demo%20Trojan
分兩層檢查:驗證欄位與傳輸欄位
驗證資訊與連線目標
- VLESS 的 UUID:本例為完整的示範用 UUID。
- Trojan 密碼:
demo%40pass解碼後為demo@pass。 - 兩個範例都連線至
example.com:443,連接埠並非固定值。
TLS 與傳輸方式
sni對應 TLS 握手使用的伺服器名稱。type=ws範例還需確認 Host 與/demo路徑。type=tcp不應照搬 WebSocket 路徑設定。
連線位址、TLS SNI 與 WebSocket Host 的用途可能各不相同;是否相同須依既有參數判斷,不能只看到網域就全部替換。
VLESS 範例中的 encryption=none 不代表本例停用了 TLS;它與 security=tls 屬於不同層次。Trojan 範例中的密碼含有特殊字元,因此對 @ 做了百分比編碼。不要為了讓連結「看起來正常」而刪除編碼,也不要透過停用憑證驗證來掩蓋 SNI 或憑證名稱不符的問題。
查詢參數的命名與延伸支援可能因分享格式的實作而異。若既有連結包含額外欄位,請保留原值,匯入後再逐項確認 Shadowrocket 節點編輯頁中的對應設定;只看到項目名稱,不能證明所有參數都已成功套用。
[Subscribe] 單一節點匯入與訂閱更新分開處理
以下訂閱網址僅用來示範 URL 結構,並非可用的服務入口。此處的 token=xxxx 是明顯的虛構值,實際網址中的 token 不應公開。一般網頁 URL 也可能以 HTTPS 開頭,只有回傳內容符合訂閱解析需求,才能用來產生節點清單。
https://example.com/sub?token=xxxx
- 已有單一節點連結:完整複製一條 URI,透過 App 提供的連結匯入入口處理;匯入後前往 Home 開啟該節點的編輯頁,確認類型、位址、連接埠與傳輸參數。
- 已有訂閱網址:前往 Home → Add Server,選擇 Subscribe,輸入已有的訂閱 URL 並儲存,再檢查訂閱群組及其中的節點清單。
- 既有服務參數已變更:更新訂閱群組;若是獨立匯入的項目,請重新匯入新的連結,或依新參數手動修改。
- 更新前有本機修改:先儲存需要保留的參數。訂閱更新可能會重新產生由伺服器管理的節點,不要把本機改名或欄位修改視為永久覆寫。
訂閱回傳內容可能是一組分享連結,也可能是整組文字經 Base64 編碼後的內容。訂閱回應編碼與單一節點內部編碼是兩個獨立處理層:外層解碼後,裡面的 vmess:// 仍可能帶有自己的 Base64 JSON。不要把訂閱本文當成單一密碼欄位,也不要將已解碼的一組連結再次串接成一條 URI。
結論:遠端參數變更時,先確認項目來源
若項目屬於 Subscribe 群組,先更新並確認回傳清單;若為獨立節點,則使用新的分享連結。反覆切換連線開關,不會重新取得獨立 URI 的最新參數。
[Routing] 匯入成功後,再確認連線與規則
匯入連結的作用是儲存連線參數,不會決定所有請求的路由方式。Home 用於查看節點與連線狀態,Config 用於管理設定,Settings 用於調整 App 設定。排查時先檢查 Home 中選取的節點,再確認 Global Routing;項目出現在清單中,不代表請求一定經由該節點傳送。
Global Routing → Config
建議若要依照既有規則使用連線,請選擇 Config 並檢查目前生效的設定。規則通常依序比對,最終路徑取決於命中的策略。
適用情境:已有設定,需確認日常規則分流
Global Routing → Proxy
用於暫時檢查代理路徑,避免將 Config 中符合直連規則的結果誤認為節點無法使用。測試完成後,請恢復原本的使用模式。
適用情境:排除規則影響,確認所選節點的連線狀態
Global Routing → Direct
此模式採用直連路徑,不能用來證明剛匯入的代理節點是否可用。直連時能開啟網頁,與該節點驗證成功是兩回事。
適用情境:對照本機網路的直接連線狀況
Global Routing 中的 Scene 應依已設定的場景進行確認,不能直接視為 Proxy 或 Config。以下是用來理解順序的 [Rule] 片段,並非完整設定,也不應直接覆寫現有檔案。網域與 IP 網段皆為示範內容。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX依網域後綴比對;符合此規則時,採用該行指定的策略。IP-CIDR依 IP 網段比對,no-resolve用於避免為這條 IP 規則主動進行網域解析。GEOIP依 IP 所屬地區比對,並非分享連結的協定欄位。FINAL處理前面都未符合規則的連線;單一節點 URI 不會自動替你產生這一行。
Settings → On Demand 用於管理依條件觸發連線的行為,無法取代節點驗證,也不能修復錯誤的 URI。若目前只要確認匯入結果,請先確認連線是否已建立、選取的節點是否正確,再檢查自動觸發條件,避免同時變更多個變因。
[Troubleshooting] 分享連結解析與更新常見問題
複製了連結,為什麼沒有匯入節點?
先確認開頭是否為完整的 scheme,再檢查複製內容是否包含說明文字、引號、空格或通訊軟體插入的換行。只複製一條完整 URI;若來源提供的是 HTTPS 訂閱網址,應透過 Subscribe 處理,不要當成單一節點密碼貼上。
節點已經出現,為什麼還是連不上?
前往 Home 確認所選節點的位址、連接埠與驗證資訊,再檢查 TLS SNI、WebSocket Host 和路徑。接著確認 Global Routing;Direct 模式下的連線結果無法驗證代理節點。若參數與既有服務資料一致,請繼續檢查伺服器狀態,不要隨意更改協定類型。
訂閱更新後變成空白,原本的連結還能用嗎?
先保留原始訂閱網址,確認 token 與查詢參數完整,再確認回傳內容是節點資料,而不是登入頁面、錯誤頁面或空白回應。舊節點是否仍可連線,取決於伺服器是否繼續接受舊參數,不能只因清單為空就下結論。
分享訂閱中的單一節點,對方也會自動更新嗎?
通常不會。分享單一節點取得的是目前參數快照,不包含原訂閱的更新關係。只有儲存並更新對應的訂閱入口,才有機會取得遠端清單的變更;分享前也應確認有權公開其中的驗證資訊。
修改連結中 # 後面的名稱,會影響連線嗎?
在本文展示的 URI 格式中,fragment 用於備註;修改名稱不會更換伺服器位址、密碼或 UUID。若修改後無法匯入,請檢查是否誤刪前面的參數,或將備註中的特殊字元寫成未編碼的分隔符號。
最後依序檢查「連結類型 → 編碼完整性 → 驗證欄位 → 傳輸與 TLS → 目前路由模式」。每次只修改一項,並記錄原值。這有助於區分解析失敗、伺服器拒絕、TLS 驗證失敗與規則未經代理等問題,避免反覆重新匯入而掩蓋真正原因。