本文適合已持有自己的服務商設定與訂閱,並需要在 Shadowrocket 中辨識及匯入連結的使用者。先分清單一連線參數與訂閱網址,再核對編碼、驗證及傳輸欄位,最後區分匯入失敗、訂閱更新失敗與連線失敗。文中的網域、密碼、UUID 和 token 均為示範用虛構資料,無法用於實際連線。
一、先釐清:分享連結提供連線參數,訂閱連結則是更新入口
Shadowrocket(小火箭)可以將分享連結中的參數解析為連線項目。以 ss://、vmess://、vless:// 或 trojan:// 開頭的文字,通常描述伺服器的協定、位址、連接埠及驗證資訊;部分格式還包含 TLS、傳輸方式與備註。這不是要在瀏覽器中開啟的一般網頁網址。
訂閱連結通常是 HTTPS 網址。用戶端會向該網址取得內容,再將回應中支援的連線項目加入相應訂閱。它的用途是提供可重複取得清單的入口,而非將所有連線資訊寫在網址列中。只看 https:// 前綴,無法確認這是訂閱連結:它也可能指向登入頁面、錯誤頁面或一般說明頁。
| 檢查項目 | 單一分享連結 | 訂閱連結 |
|---|---|---|
| 主要內容 | 單一連線項目的參數 | 取得連線清單的遠端網址 |
| 匯入方式 | 主要在本機解析文字 | 需要連線至網址並解析回應 |
| 後續變化 | 原始分享文字不會自行變更 | 更新時可取得遠端清單的變動 |
| 敏感資訊 | 密碼、UUID、伺服器資訊 | 網址中的 token 及回傳的設定 |
單一分享連結也不等於完整的 .conf 設定檔。匯入一台伺服器,通常不會一併取代 Config 中的 [Rule]、[Host] 等內容。伺服器決定連線目的地,規則則決定各項請求採用何種策略,兩者應分開核對。
二、ss://:辨識 Shadowsocks 的驗證資訊編碼
ss:// 是常見的 Shadowsocks 分享連結前綴。常見的 SIP002 格式會將加密方法與密碼組成 method:password,再以 Base64URL 編碼並放在 @ 前;伺服器位址與連接埠仍可直接讀取。下方範例的驗證資訊解碼後為 aes-128-gcm:password,密碼僅供示範。
ss://[email protected]:8388#Demo-SS
ss://:表示應以 Shadowsocks 分享格式解析。YWVzLTEyOC1nY206cGFzc3dvcmQ:編碼後的加密方法與密碼,範例省略結尾的 Base64 填充字元。example.com:8388:伺服器位址與連接埠;匯入時不可擅自將連接埠改成其他常用數字。#Demo-SS:備註片段,不是連線密碼,也不會變更伺服器所在區域。
另一種較舊的分享格式會將包含伺服器位址在內的較長內容整段以 Base64 編碼,因此不能只靠「是否含有 @」判斷格式。含外掛參數的連結也可能帶有查詢字串;若來源設定需要外掛或額外傳輸參數,不可為了縮短文字而自行刪除。
三、vmess://:先還原 JSON,再核對欄位含義
常見的 vmess:// 分享格式會先將 JSON 文字以 Base64 編碼,再接在前綴後方。解碼結果應是結構完整的 JSON,而非網頁 HTML。以下是用來說明欄位的解碼內容,不是可直接貼上匯入的完整連結。
{
"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 | 伺服器位址與連接埠 | 請勿與 HTTP Host 或 SNI 混淆 |
id / aid | UUID 與 alterId | 驗證參數應與現有伺服器設定一致 |
net / path | WebSocket 傳輸與請求路徑 | /demo 的大小寫及斜線都是設定內容的一部分 |
host / sni | HTTP Host 與 TLS Server Name | 兩者可能相同,但用途不同 |
ps / v | 備註與分享格式識別欄位 | v 不是 Shadowrocket 的版本號 |
不同來源產生的 VMess 分享內容可能有欄位差異,不能只憑某個欄位是否存在,就推斷服務一定可用。匯入後請開啟該項目的編輯頁面,核對驗證、傳輸方式及 TLS 參數是否正確辨識。成功顯示名稱只代表用戶端讀取到部分資訊,不表示伺服器接受這些參數。
四、vless:// 與 trojan://:URI 欄位可讀,不代表傳輸內容未加密
這兩種連結常採用容易辨識的 URI 結構:驗證資訊位於 @ 前,伺服器資訊則在後方,查詢參數用來描述傳輸或安全設定。連結欄位是否容易閱讀,與實際連線是否使用 TLS,是兩回事。以下兩個範例皆使用虛構驗證資訊及保留作示範用途的網域。
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fdemo&sni=example.com#Demo-VLESS
trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Demo-Trojan
- VLESS 範例使用 UUID 驗證;
encryption=none描述的是協定層欄位,不代表關閉查詢參數指定的 TLS。 - Trojan 範例中,
demo-password是密碼;sni=example.com用來指定 TLS Server Name。 type=ws和type=tcp代表不同傳輸方式,不能只替換前綴就互相轉換。path=%2Fdemo解碼後為/demo。百分比編碼用來表示 URI 中的特殊字元,並非用來安全加密密碼。
如果密碼包含 @、#、? 等分隔符號,產生連結的一方應正確進行百分比編碼。手動組合時若漏掉編碼,用戶端可能會將部分密碼誤判為伺服器、查詢參數或備註。也不要將已編碼的 %2F 再編碼成 %252F,否則路徑可能不再是原本的值。
判斷方式:匯入後核對欄位,不要只靠前綴猜測相容性
先檢查伺服器、連接埠與驗證資訊,再檢查傳輸及 TLS。尤其是連結含有額外安全參數或特定傳輸選項時,應以用戶端實際解析結果和伺服器端要求為準;不要刪除不明欄位或關閉憑證驗證來嘗試「修復」連結。
五、匯入與更新訂閱:保留來源,勿將本機修改當成遠端設定
以下是明顯虛構的訂閱網址,僅用來說明網址格式:路徑用於定位訂閱介面,查詢參數中的 token 通常用來識別存取權限。真實訂閱的路徑、參數名稱與回應格式,取決於使用者現有的服務商。
https://example.com/sub?token=xxxx
訂閱回應可能是由支援的分享連結組成的文字清單,也可能是這些文字經 Base64 編碼後的內容。網址即使回應狀態正常,若回傳的是登入頁面,也無法作為有效的連線清單匯入。QR Code 只是承載文字的另一種方式:掃描後取得的是單一分享連結還是訂閱網址,取決於其中實際編碼的內容。
- 複製完整的現有訂閱網址,避免連同聊天文字中的句號、引號或換行一起複製。保留原始 token,不要自行補上或刪改。
- 在 Home 點選右上角的
+,進入新增項目頁面,選擇Type → Subscribe,在URL填入網址,並以Remarks標示來源後儲存。 - 首次取得完成後,回到 Home 檢查對應的訂閱及其項目。開啟其中一個項目的編輯頁面,確認類型、位址、連接埠及驗證欄位都有內容。
- 需要重新整理時,使用 Home 中對應訂閱的更新功能。更新後先檢查項目清單是否有變化,再測試實際連線;「更新成功」不代表清單中的每台伺服器都可使用。
管理方式:分開管理遠端訂閱與本機測試副本
保留遠端訂閱
- 儲存原始 URL 與來源備註。
- 透過更新功能取得清單項目的新增、刪除及參數變更。
- 更新前先記下需要保留的自訂修改。
另外維護測試項目
- 需要測試修改時,另建備註清楚的項目。
- 一次只修改一項參數,方便比較結果。
- 測試結束後,確認 Home 目前選取的項目。
訂閱更新可能覆蓋或重建來源項目,請勿依賴訂閱中的暫時修改長期保留。
六、匯入後:透過 Global Routing 區分連線與規則問題
Home 用來管理連線項目及目前選取項目,Config 用於設定檔,Settings 則是用戶端設定。匯入單一連結後,若網頁仍無法存取,不要立刻認定連結格式有誤:請求也可能沒有使用剛匯入的項目,或被目前規則分配到其他策略。先記下 Home 目前的選取項目,再查看 Global Routing。
Config
建議依照目前設定中的規則決定策略。日常使用已有規則設定時,應一併核對命中的規則及其引用的策略,而不只查看 Home 中的選取項目。
適用情況:已準備好規則設定,並需要依規則處理請求。
Proxy
將由用戶端處理的請求以代理方式處理,可用來暫時對照目前連線狀況。這不代表裝置上的所有通訊都一定會經過代理;測試後請恢復原本設定。
適用情況:短時間排查規則分流是否影響測試結果。
Direct
採用直連方式,不適合用來驗證剛匯入的代理伺服器。此時網頁能開啟,也無法證明分享連結中的驗證參數正確。
適用情況:對照目前網路的直連狀況。
Global Routing 也包含用於切換情境的 Scene,相關行為須配合現有情境設定檢查。它不是新的協定,也不能取代伺服器驗證。若已設定自動連線條件,也請檢查 Settings → On Demand,避免將自動重新連線誤認為匯入操作未儲存。
- 先確認「解析」:在項目編輯頁面中,能否讀到正確的伺服器、連接埠及協定。
- 再確認「連線」:在網路可用的情況下,使用目前選取的項目測試目標請求。
- 最後確認「路由」:恢復 Config 後,查看請求實際命中的規則及策略。
七、常見問題:依失敗階段排查,別反覆改寫連結
複製了 ss://,為什麼匯入失敗?
先確認文字是否以 ss:// 開頭,以及通訊軟體是否插入換行、空格或省略號,再核對編碼內容是否完整。不要只複製畫面上遭截斷的預覽文字。若匯入後已出現項目但連線失敗,應檢查驗證資訊與網路,而不是反覆嘗試不同次數的 Base64 解碼。
訂閱網址在瀏覽器中可以開啟,為什麼清單仍是空的?
能開啟只代表取得了某種回應。請確認這是現有服務商提供的訂閱入口,而非帳戶管理頁面;並檢查 token 是否完整、是否需要重新取得授權。若回應內容是登入頁面或錯誤訊息,應先處理網址及權限問題,不可將網頁內容改成分享連結前綴後強行匯入。
訂閱更新顯示逾時,需要重新新增所有項目嗎?
先保留現有設定,確認目前網路能否存取訂閱網址。若該網址確實需要透過現有可用連線才能存取,可在 Settings → Subscribe 檢查 Update via Proxy,再回到 Home 重試更新。驗證錯誤或 token 失效並非網路逾時,切換存取路徑也無法取代重新取得有效授權。
把 vmess:// 改成 vless:// 就能轉換協定嗎?
不能。VMess 常見分享內容是經編碼的 JSON,VLESS 常見分享結構則直接包含 UUID、伺服器及查詢參數;兩者的驗證方式與協定行為也不同。請向現有服務商取得對應協定的完整設定,再於 Home 新增並核對參數,不能只替換開頭幾個字元。
傳連結截圖請別人協助排查,只遮住密碼就夠了嗎?
不夠。UUID、訂閱 token、QR Code 及編碼後的驗證字串都可能提供存取權限。回報問題時請改用文字描述協定、連接埠、傳輸方式及錯誤階段,並移除完整連結。若真實憑證已外洩,應透過原服務的管理管道更換或撤銷相應憑證,再更新用戶端儲存的內容。
排查時請依明確順序進行:原始文字是否完整、格式是否正確解析、遠端請求是否成功、驗證資訊是否相符,以及規則是否採用預期策略。每次只變更一個條件,並記錄變更前後的現象;比起同時重建訂閱、切換協定及修改規則,這樣更容易找出原因。