本文適合已取得服務商提供的 Trojan 參數或訂閱,並想在 Shadowrocket(小火箭)中核對設定的使用者。先釐清連線位址、TLS 身分與驗證密碼,再依序檢查 Add Server 欄位。若遇到逾時、憑證錯誤或驗證失敗,可按連線階段逐步縮小問題範圍,不必反覆切換所有選項。
Trojan 參數的三個環節:連線、TLS 與驗證
常見的 Trojan 連線會先透過 TCP 連上伺服器指定的連接埠,接著建立 TLS 工作階段,再於加密通道中提交 Trojan 驗證資訊並傳送代理要求。因此,位址可連通不代表 TLS 交握成功;TLS 成功也不代表密碼正確。設定時應分別檢查這三個階段。
TLS 用來保護傳輸並驗證對端身分;Trojan 密碼則用於應用程式層的驗證,兩者不能互相取代。伺服器憑證有效,不代表輸入的密碼正確;密碼正確,也無法修正憑證名稱不符的問題。本文說明常見的 Trojan over TLS 設定;其他傳輸選項應依照既有訂閱或服務商提供的說明設定。
判斷方式:先找出失敗階段
若出現憑證名稱錯誤,先檢查 SNI 與憑證,不要急著更換密碼;若連線持續逾時,先確認位址、連接埠與目前使用的網路,暫時不要調整 TLS 安全選項。
Add Server 欄位:如何設定位址、連接埠與密碼
從 Home 右上角的「+」進入 Add Server,將 Type 設為 Trojan,再逐項輸入資料。若現有訂閱能直接建立項目,建議保留原項目作為比對;手動檢查時可另建項目,避免訂閱更新覆蓋暫時修改的設定。欄位位置可能因介面調整而改變,請以英文欄位名稱及其用途為準。
| 欄位 | 填寫內容 | 常見錯誤 |
|---|---|---|
| Type | 選擇 Trojan,並與既有設定的協定一致。 | 只看項目名稱,沒有確認實際使用的協定。 |
| Address | 填入服務商提供的伺服器網域名稱或 IP 位址。 | 貼上完整的訂閱 URL,或填入包含 https://、路徑與查詢參數的內容。 |
| Port | 填入伺服器實際監聽的連接埠,例如 443 或 8443,請以原始參數為準。 | 看到 TLS 就一律改成 443,或將連接埠重複填入 Address。 |
| Password | 填入該 Trojan 項目的完整驗證密碼。 | 誤用服務商網站的登入密碼,或漏掉符號、連同前後空白一起貼上。 |
| SNI | 填入服務商指定的 TLS 伺服器名稱,通常是網域名稱。 | 填入 URL、連接埠或任意網站名稱。 |
| Allow Insecure | 正常使用時保持關閉,以保留憑證驗證。 | 把它當成解決逾時或密碼錯誤的通用開關。 |
例如,若原始參數明確指定位址為 edge.example.com、連接埠為 8443,就應分別填入這兩個欄位。此處的網域僅用於說明欄位格式,並非可用的服務位址。不要因為瀏覽器常用 HTTPS 連接埠 443,就自行更改服務端指定的連接埠。
- 密碼有大小寫之分,請完整複製服務商為該項目提供的內容,不要自行刪減或修改。
- 手動填寫 Password 時,請使用原始密碼。若取得的是編碼後的分享內容,請優先使用 App 的匯入功能,不要把編碼字串直接當成密碼。
- 訂閱 URL 中的 token 用於取得訂閱內容,不一定是 Trojan 密碼;不能只憑外觀就認定兩者相同。
SNI 與 TLS:為什麼連線位址可以不同
SNI 是 TLS ClientHello 中的伺服器名稱擴充欄位,讓同一個位址上的伺服器能選取相應的憑證與網站設定。Address 決定用戶端要連到哪裡;SNI 則參與 TLS 連線中的名稱選擇。常見設定中兩者使用相同網域,但若 Address 填入 IP,或伺服器採用特定入口,兩者也可能不同。
例如,若既有設定指定 Address 為某個 IP、SNI 為 tls.example.com,就應保留這項差異。不要自動把 SNI 改成 IP,也不要從其他項目複製一個「看起來相似」的網域。憑證驗證也會檢查信任鏈、有效期限與名稱是否相符;裝置時間若明顯不準,也可能讓有效憑證被判定為尚未生效或已過期。
- SNI 不要填入協定前綴:應填寫
tls.example.com這類名稱,而不是https://tls.example.com/path。 - SNI 不要填入連接埠:連接埠應填在 Port;不要寫成
tls.example.com:443。 - 不要任意更換名稱:隨意改成知名網站的網域,不會讓伺服器自動取得相應憑證,也無法保證連線成功。
- 沒有獨立的 SNI 設定時,先檢查原始設定:不要只因為 Address 已填入網域,就認定所有伺服器都接受相同的預設行為。
若原始參數另有 ALPN 或傳輸相關設定,也應保持一致。不要直接套用疑難排解文章中出現的任意組合。尤其不可將標準 Trojan 的參數設定方式套用到其他協定:協定類型會決定驗證與傳輸方式,不能只修改 Type 就視為完成轉換。
從輸入到驗證:依序完成五項檢查
輸入前請備妥原始參數,並記下目前使用的是 Wi-Fi 或行動網路。驗證時使用相同的目標、網路與項目,才能判斷修改是否有效。若同時更改密碼、SNI 與路由模式,即使連線恢復,也難以找出真正原因。
-
前往新增頁面
Home → 右上角「+」→ Add Server → Type,選擇 Trojan。若使用既有訂閱,請先對照訂閱產生的項目,確認沒有選錯協定。
-
輸入連線資訊
分別填入 Address、Port、Password。貼上後檢查前後是否有空格,確認 Address 不含 URL 路徑,且 Port 與原始參數一致。
-
檢查 TLS
依照原始設定填入 SNI,檢查 TLS 相關選項,並保持 Allow Insecure 關閉。儲存前再次確認網域名稱後方沒有附帶連接埠。
-
排除路由影響
返回 Home,選取剛儲存的項目。測試期間可暫時將 Global Routing 設為 Proxy,確認測試要求是透過該項目傳送;完成後恢復原本的 Config 或 Scene 設定。
-
確認實際連線
開啟連線開關,依系統提示完成必要確認,再執行 Connectivity Test 並瀏覽平常使用的 HTTPS 網頁。記下錯誤訊息與實際狀況,不要只看連線開關是否已開啟。
Global Routing 設為 Direct 時,要求可能會直接連線;即使網頁能開啟,也無法證明 Trojan 參數有效。Config 會依目前的設定規則選擇策略;使用 Scene 時,則應檢查該場景的實際設定。暫時使用 Proxy 是為了減少路由變數,不代表日常使用時必須維持此模式;分流規則說明請參閱規則手冊。
- Connectivity Test 成功,只代表在該次測試條件下的結果,不能證明所有網站或所有傳輸類型都能使用。
- 開啟連線開關表示系統已啟用相應的連線設定,不代表遠端驗證及每次要求都已成功。
- 切換網路重新測試時,請先保持參數不變;若只有某個網路無法使用,應優先檢查該網路的連線狀況。
常見狀況:逾時、憑證錯誤與連線後無法使用
排查時應依實際錯誤分類,不要只憑「連不上」三個字判斷。以下提供檢查方向,並非固定診斷結論:相同的表面狀況可能源自不同環節,須搭配原始參數與重複測試確認。
一直顯示逾時,應該先改密碼嗎?
先檢查 Home 中所選項目的 Address 與 Port,再換用其他可連線的網路重測。網域無法解析、連接埠無法連線或伺服器沒有回應,都可能造成逾時。確認連線能抵達伺服器後,再檢查密碼;逾時本身不能證明密碼錯誤。
出現憑證錯誤時,SNI 該怎麼設定?
開啟項目編輯頁,對照原始設定檢查 SNI 拼字,再前往 iPhone 或 iPad 的「設定 → 一般 → 日期與時間」確認日期、時間與時區。若仍出現憑證錯誤,請將錯誤內容交由自己的服務商檢查,不要開啟 Allow Insecure 來掩蓋問題。
有延遲數值,為什麼網頁還是打不開?
延遲數值會依測試方式而異,不一定涵蓋完整的 TLS、Trojan 驗證與目標網站連線流程。先確認 Global Routing 不是 Direct,再執行 Connectivity Test;若連線建立後立即中斷,還需檢查密碼與伺服器狀態。
手動修改後,訂閱更新又失效了?
訂閱更新可能會重新產生項目並覆蓋本機修改。請逐項比對更新後的 Address、Port、SNI 與已確認的參數,並請自己的服務商修正訂閱內容。若要暫時測試,請另建手動項目,避免反覆修改同一個訂閱項目。
保存檢查結果並保護訂閱資訊
回報問題時,記下發生時間、網路類型、測試方式及已遮蔽的錯誤資訊,比傳送完整設定更有助於釐清問題。Password 與訂閱 URL 都可能包含存取憑證;尤其查詢參數中的 token,不應出現在公開截圖、群組對話或分享的記錄中。不要將真實訂閱位址貼到不明頁面驗證。
- 記錄各欄位是否與原始設定一致,但不要公開完整密碼、訂閱 token 或可直接匯入的分享內容。
- 私下保留一份成功設定的紀錄,註明內容來自手動輸入或既有訂閱,以免混淆不同項目。
- 測試結束後,恢復日常使用的 Global Routing 設定;若排查時調整過 Settings → On Demand,也應依原本的使用需求恢復。
- 若參數曾經外洩,請透過自己的服務商提供的管理管道更換相關憑證,再更新本機項目。
Shadowrocket 是閉源商業 App,購買用戶端與取得伺服器存取憑證是兩件不同的事。買斷用戶端 ≠ 購買連線服務方案。本文假設使用者已有自己的服務商與訂閱,僅說明參數核對與使用方式。