Shadowrocket 複数サブスクリプション管理:グループ分け・並べ替え・無効な購読の削除・重複ノードの整理

複数のサブスクリプションをShadowrocketで提供元ごとに整理し、遅延順に並べ替え、無効な項目を一括削除して重複ノードを防ぐ方法。

この記事の概要

この記事は、複数の自分のサブスクリプションをShadowrocketに取り込んでいるユーザー向けです。まずSettings → Subscribeで購読元を管理し、その後Homeに戻ってサーバー項目をテスト・整理します。整理するときは提供元ごとに分け、重複項目はプロトコル、ホスト、ポート、認証パラメータを順に確認します。

まずサブスクリプションの提供元、サーバー項目、現在の接続を区別する

複数サブスクリプションの管理が混乱しやすいのは、通常この3つの階層を同じものとして扱うためです。提供元は、ユーザーが契約済みのサービスから取得したURLです。サーバー項目は、サブスクリプション更新後にHomeリストへ書き込まれる個別の記録です。現在の接続は、Homeで選択され、システムのVPN構成に使用されている項目です。ある階層を削除しても、ほかの階層が自動的に変わるとは限りません。

たとえば、1つのサブスクリプションから十数件のサーバー記録が生成され、そのうち1件だけが選択中になることがあります。サーバー記録を個別に削除しても、提供元を削除したことにはなりません。提供元が残っていれば、次回更新時に同じ記録が再び現れる可能性があります。逆に、提供元を削除した後も、その提供元に関連するローカル項目が残っていないか確認してください。

サブスクリプション提供元を保存サブスクリプション内容を取得サーバー項目を生成遅延テストを実行現在のサーバーを選択
3層
サブスクリプション提供元、サーバー項目、現在の接続
4項目
重複判定キー:プロトコル、ホスト、ポート、認証パラメータ
4つの状態
Global Routing:Proxy / Direct / Config / Scene
1つの入口
サブスクリプション提供元はSettings → Subscribeに集約される

提供元ごとにグループを作り、まずサブスクリプション名を明確にする

Settings → Subscribeを開いたら、保存済みのサブスクリプションを1件ずつ確認します。名前には提供元と用途が分かる情報を入れ、「サブスクリプション1」「予備」のように追跡しにくい名前だけを残すのは避けてください。複数の提供元に同名サーバーがある場合、提供元名が重複項目の所属を判断する最初の手がかりになります。

新しい提供元を登録するときは、ユーザー自身が取得済みのサブスクリプションURLだけを使用します。形式説明用のダミー値はhttps://example.com/sub?token=xxxxのように記述できます。URLのクエリパラメータには通常、識別や認証の情報が含まれるため、コピー時は文字列全体を保持し、?token=xxxxを手動で削除しないでください。

メインのサブスクリプション

入口
Settings → Subscribe
名前
提供元A · 日常用
URL
https://example.com/sub?token=xxxx
更新チェック
確認時刻と項目数の変化

名前は提供元を識別するためのものです。サーバーの表示名でサブスクリプション名を代用しないでください。

予備のサブスクリプション

入口
Settings → Subscribe
名前
提供元B · 予備
更新方法
必要に応じて手動更新
異常記録
タイムアウト、空の結果、または認証失敗

まず予備の提供元が正常に更新できることを確認してから、古い提供元が生成した項目を整理してください。

  1. Settingsを開き、Subscribeに進み、現在登録されている各提供元とその名前を記録します。
  2. 提供元を1つずつ更新し、毎回1件だけ処理します。Homeで対応するグループまたは項目数が変化するか確認してください。
  3. 提供元名が分かりにくい場合は、削除や重複整理の前に名前を変更します。異なる提供元を混同するのを防げます。
  4. 更新が完了したらHomeに戻り、選択中のサーバーが残す予定の提供元に属しているか確認します。

結論:まず提供元を整理し、その後サーバーを整理する

Settings → Subscribeを確認せずにHomeから同名項目を直接削除すると、次回更新時に記録が再び書き込まれる可能性があります。先に提供元へ名前を付け、更新結果を確認しておくと、繰り返し整理する手間を減らせます。

遅延順に並べ替える前に、同じ条件でConnectivity Testを完了する

遅延順の比較は、テスト条件がそろっている場合にのみ参考になります。同じネットワーク接続方法を維持し、Homeで比較対象のサーバーに遅延テストまたはConnectivity Testを実行してから、今回の結果に基づいて並べ替えてください。昨日Wi-Fiで得た数値と、今日モバイル通信で得た数値をそのまま混在させないでください。

テスト結果は3種類に分けられます。具体的なミリ秒数が表示される場合は、今回のテストで対象が応答したことを示します。timeoutと表示される場合は、制限時間内に有効な応答がありませんでした。結果が表示されない、またはテスト中のままの場合は、現在のネットワーク、サブスクリプション設定、アプリの権限を確認してください。1回のtimeoutだけでサーバーが恒久的に無効だと判断せず、時間を置いて2回再テストしてください。

到達可能な記録の例

プロトコル
Trojan
ホスト
edge-a.example.com
ポート
443
テスト結果
186 ms

数値は記録形式の例です。実際の端末でそのとき表示されたテスト結果を基準にしてください。

要再確認の記録例

プロトコル
Hysteria2
ホスト
edge-b.example.com
ポート
443
テスト結果
timeout × 3

3回連続でタイムアウトした場合でも、まずUDPの到達性とサーバー側パラメータに変更がないか確認してください。

テスト中はGlobal Routingも確認します。Proxyでは通信がすべて現在のプロキシサーバーを経由し、Directでは直接接続し、Configでは現在の設定ファイルのルールに従って処理され、Sceneではシーン設定に基づいて動作します。Directのままだと、Webページが開けても選択したサーバーが有効とは限りません。Configを使用する場合は、DOMAIN-SUFFIXGEOIPIP-CIDRFINALの照合順を確認してください。

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

無効なサブスクリプションは、提供元単位で一括整理する

無効な項目を一括処理する場合、最も明確な単位はサーバーの表示名ではなくサブスクリプション提供元です。まずSettings → Subscribeで、対象の提供元が本当に更新停止、空の内容の返却、または不要になった状態か確認してから削除します。削除前に、そこに含まれる手動サーバーのうち残すものを記録し、提供元由来の項目と手動追加項目を混同しないようにしてください。

具体的なボタン名は、App Storeに表示されるアプリの現在の画面に応じて変わる場合がありますが、判断の順序は変わりません。サブスクリプション記録を開き、URLと名前を確認し、削除対象の提供元を確定し、削除確認ダイアログを読み、その後Homeに戻って関連項目を確認します。確認ダイアログでローカルサーバーも同時に処理するか尋ねられた場合は、必要性を判断して選択し、連続して素早く確定しないでください。

  1. Homeで現在選択中のサーバーのプロトコル、ホスト、ポートを記録し、必要なら残す予定のサーバーへ先に切り替えます。
  2. Settings → Subscribeに進み、対象の提供元を開いて1回更新します。一時的なネットワーク変動が原因ではないことを確認してください。
  3. サブスクリプション名と完全なURLを確認し、削除対象が記録された無効な提供元と一致していることを確かめます。
  4. 提供元を削除し、確認ダイアログの説明に従って、その提供元が生成したローカル項目も同時に処理するか決めます。
  5. Homeに戻り、Connectivity Testを再実行して、元の提供元の残存記録がリストに残っていないか確認します。

結論:一括削除はサブスクリプション記録から始める

提供元単位で削除するほうが、表示名を基準に1件ずつ削除するより確認しやすく、次回更新で同じサーバー群がHomeに再追加されるのも防げます。

重複ノードは名前ではなく接続パラメータで比較する

重複ノードで最もよくあるのは、2つのサブスクリプションが同じ表示名を生成するケースです。しかし表示名だけでは一意に判断できません。1つの名前が異なるホストを指すこともあれば、同じホストの異なるポートを指すこともあります。本当の重複項目かどうかは、少なくともプロトコル、サーバーホスト、ポート、認証パラメータを比較してください。TLSを有効にするプロトコルではSNIやALPNなども比較し、トランスポート設定を使う場合はpath、hostなど対応する値も確認します。

Shadowsocksではホスト、ポート、暗号化方式、パスワードを重点的に比較します。VMessとVLESSではUUID、トランスポート方式、TLS設定も確認が必要です。TrojanではパスワードとSNIを比較します。Hysteria2ではホスト、ポート、認証情報、関連するTLSフィールドを確認します。WireGuardでは公開鍵、Endpoint、Allowed IPs、ローカルアドレスを比較してください。パラメータが異なる記録は、名前が同じでも重複項目として直接削除しないでください。

重複と判断できる

プロトコル
Trojan
ホスト
edge.example.com
ポート
443
SNI
edge.example.com
認証
完全一致

主要な接続パラメータが一致する場合に限り、提供元の更新信頼性を考慮して1件を残します。

名前だけでは統合できない

表示名
Tokyo 01
記録A
edge-a.example.com:443
記録B
edge-b.example.com:8443
プロトコル
どちらもVLESS
結論
ホストとポートが異なる

表示名が同じなのはラベルが重複しているだけで、基盤となる接続先が同じとは限りません。

重複判定キーの例:
プロトコル | ホスト | ポート | 認証パラメータ | トランスポート方式 | TLS/SNI

Trojan | edge.example.com | 443 | password-A | TCP | edge.example.com
VLESS  | edge.example.com | 443 | uuid-B     | WS  | cdn.example.com

2つの提供元に本当に同じサーバーが含まれている場合は、更新が成功し、提供元を識別しやすく、パラメータが完全な記録を優先して残します。もう一方を削除した直後に元のサブスクリプションを更新して確認してください。重複項目が再び現れるなら、その提供元がまだ管理しているということです。その場合は提供元を残して重複表示を受け入れるか、サービス提供側のサブスクリプション管理で内容を調整してください。パスワード、ポート、UUIDを適当に変更して見かけ上の差異を作らないでください。

サブスクリプション更新後にOn Demandとルールの状態を確認する

サブスクリプションの整理が終わったら、一連の動作を確認します。まずHomeで残すサーバーを選択し、Connectivity Testを実行してから、Global Routingの状態を確認します。普段Configを使う場合は、現在の設定を開き、ルールが上から順に照合され、最後にFINALが一致しなかったリクエストを処理することも確認してください。

On Demandを有効にしている場合、入口はSettings → On Demandです。この設定はネットワーク条件に応じて接続や切断を実行できるため、複数サブスクリプションのテスト中に接続状態が自動で変わることがあります。切り分け中は、Wi-Fiとモバイル通信でそれぞれどの動作を設定しているかを記録し、自動切り替えをサーバー障害と誤認しないようにしてください。

サブスクリプション更新後、削除したサーバーが再び表示される?

Settings → Subscribeで、そのサーバーが属する提供元を探します。Homeの項目だけを削除してもサブスクリプションの内容は変わりません。一括で削除する場合は対応する提供元を処理し、もう一度ローカルリストを確認してください。

2つのノード名が完全に同じ場合、どちらを削除すべき?

それぞれの記録を開き、プロトコル、ホスト、ポート、認証パラメータ、トランスポート方式、TLS/SNIを比較します。パラメータが完全に一致する場合は、更新が安定していて提供元名が明確なほうを残します。パラメータが異なる場合は、名前だけで統合しないでください。

遅延が最も低いサーバーで目的のページを開けないのはなぜ?

まずGlobal RoutingがDirectになっていないか確認し、Connectivity Testを実行します。Configを使用している場合は、ルールの順序とFINALの動作も確認してください。遅延テストに成功しても、すべてのアプリのリクエストが想定どおり振り分けられるとは限りません。

サブスクリプション更新でtimeoutが続く場合の確認方法は?

まず端末のネットワークとシステム時刻が正常か確認し、次にサブスクリプションURLが完全か確認します。現在の接続が利用できる場合は、Settings → SubscribeでUpdate via Proxyの設定を確認してから、もう一度更新し、項目が返されるか確認してください。

リストを整理した後、接続状態が勝手に変わるのはなぜ?

Settings → On Demandを開き、Wi-Fiとモバイル通信の条件で設定された動作を確認します。切り分け中は、Homeの現在のサーバー、Global Routingの状態、システムVPNの状態も同時に記録してください。

ShadowrocketをApp Storeでダウンロード