Shadowrocketのサブスクリプションを追加できない・ノードが表示されないときの確認方法

サブスクリプションが空になる、または解析に失敗する場合は、URLの形式、サービス提供元の状態、Subscribeの更新タイミングを確認しましょう。問い合わせが必要なケースも解説します。

この記事の要点

この記事は、ご自身が契約しているサービス提供元のサブスクリプションをお持ちの方向けです。まず、リクエストの失敗、応答内容の解析失敗、有効な項目が空の状態を区別します。次にURLとアカウントの状態を確認し、最後にSubscribeの更新経路を見直します。確認中は元のサブスクリプションと利用可能な項目を残し、一度に変更する条件は一つだけにして、結果を記録してください。

1. 「追加に失敗」と「追加後に空」を区別する

ShadowrocketはApp Storeで配信される買い切り型のクローズドソースアプリです。製品ページでデベロッパのShadow Launch Technology LimitedとアプリID 932747118を確認できます。アプリの購入に通信サービスのプランは含まれません。この記事ではノードやサブスクリプションの提供・販売・推奨は行いません。

サブスクリプションの更新には、URLへのリクエスト、応答内容の読み込み、対応する項目のリストへの登録という3つの段階があります。リストが空でも、必ずしも通信に失敗したとは限りません。サーバーが正常に応答していても、ログイン画面やエラー説明、有効な項目を含まない内容が返されることがあります。

3つの段階
URLにリクエスト → 応答を読み込む → 項目を解析
443
HTTPSでポートを明示しない場合のデフォルトポート
2種類のテスト
サブスクリプションの更新テストと項目のConnectivity Testは別々に実施

2. SubscribeのURLを確認し、WebページのURLと混同しない

まず、ご自身のサービス提供元のアカウントページからサブスクリプションURLを全体コピーしてください。アカウントのトップページ、注文ページ、ログインページ、サブスクリプション用インターフェースはそれぞれ用途が異なります。ドメインが同じというだけでURLが正しいと判断したり、不明なパラメータを手作業で追加したりしないでください。

https://example.com/sub?token=xxxx

上記は接続には使用できない形式の例です。https://はプロトコル部分、/subはパスの例、token=xxxxは認証パラメータの例です。実際のインターフェースのパスとパラメータ名はサービス提供元によって異なり、この例と同じとは限りません。

  1. 元の記録を残す

    まず、元のサブスクリプション名、現在の項目数、表示されたエラーを記録します。元のリストに利用可能な項目がある場合は、グループ全体を先に削除しないでください。

  2. URLをコピーし直す

    ご自身のサービス提供元のページにあるコピー機能を使ってURLを取得してください。先頭や末尾に空白、改行、引用符、チャットアプリが付加した句読点がないか確認します。

  3. Subscribeを選択

    Home → 右上の「+」→ Type → Subscribeの順に進みます。URL欄にサブスクリプションURL全体を貼り付けてください。サーバー個別設定のAddressやPassword欄にURL全体を入力しないでください。

  4. 保存して更新

    保存したらHomeに戻り、下にスワイプして更新します。リクエストが完了するまで待ち、表示されたメッセージと項目数を記録してから次の手順に進みます。

クエリパラメータ内の&、=、パーセントエンコードは認証に使われている場合があります。後半のパラメータを勝手に削除したり、URLエンコードを重ねたりしないでください。コピーした文字列に&がそのまま含まれている場合は、部分ごとに推測して直すのではなく、元のページから正しいURLをコピーし直してください。

3. サービス提供元の応答を確認する:ステータスコードと有効な項目は別

エラーの詳細やサービス提供元の診断記録にHTTPステータスコードが含まれている場合、原因の範囲を絞る手掛かりになります。以下は標準的なHTTPステータスの説明であり、Shadowrocketが常に同じエラーを表示するという意味ではありません。ステータスコードが表示されていない場合は、特定のエラーだと決めつけないでください。

HTTP 401 Unauthorized

原因と対処:インターフェースの認証に失敗しています。tokenがない、または無効になっている可能性があります。有効なサブスクリプションURLをコピーし直し、認証状態をサービス提供元に確認してください。

HTTP 403 Forbidden

原因と対処:サーバーが現在のリクエストを拒否しています。アカウントの権限やアクセス制限が関係している可能性があります。発生時刻とネットワークの種類を記録し、拒否理由をサービス提供元に確認してください。クライアントのパスワード欄を何度も変更する必要はありません。

HTTP 429 Too Many Requests

原因と対処:インターフェースのリクエスト頻度制限に達しています。連続更新をやめ、サービス提供元の案内または応答内のRetry-Afterに従って待ってから、一度だけ更新してください。

200 OKはHTTPリクエストが正常に応答したことを示すだけで、内容を解析できるとは限りません。ログイン画面、メンテナンス告知、認証ページもこのステータスコードを返す場合があります。ブラウザにはログイン状態が保持されていても、クライアントのサブスクリプションリクエストには同じセッション情報がないことがあります。

結論:まずインターフェースの応答内容を確認

HTTP応答があるのにインポートできない場合は、まず応答内容と形式をサービス提供元に確認してください。Global Routingを切り替えても、ログインページがサブスクリプション項目に変わることはありません。

4. 更新タイミングとUpdate via Proxyを確認する

サブスクリプション用インターフェースと、サブスクリプションに含まれるサーバーは別のテスト対象です。通常のWebページが開けても、一部のネットワークアクセスが正常だと分かるだけです。項目のConnectivity Testが成功しても、サブスクリプションのドメインに現在アクセスできるとは限りません。それぞれの結果を分けて記録してください。

Settings → SubscribeでUpdate via Proxyを確認します。この設定はサブスクリプション更新のアクセス経路を変更するもので、URLの形式やアカウント権限を修正するスイッチではありません。有効にする前に、利用可能なプロキシ接続があることを確認してください。そうでない場合、「項目を取得するには更新が必要だが、更新にはその項目が必要」という循環が起こる可能性があります。

  1. 現在のリストを残したまま、安定したネットワークで一度更新し、タイムアウトするか記録してください。
  2. 利用可能な項目がある場合は、先にその項目を選択して接続し、実際にアクセスできることを確認してください。
  3. Settings → Subscribeを開いてUpdate via Proxyを有効にし、Homeに戻って下にスワイプし、一度更新します。
  4. 2回の結果を比較します。更新経路を変更した後に結果も変わった場合に限り、その経路の接続性をさらに確認する根拠があります。
  5. 401、403、または内容の解析エラーが明確に表示された場合は、認証と応答内容の確認に戻ってください。手当たり次第にネットワークを切り替えないでください。

初回インポートで利用可能な項目がまったくない場合、Update via Proxyを有効にすることを前提にしないでください。まず、ご自身に利用権限のある別の安定したネットワークで比較してみます。それでもインターフェースにアクセスできない場合は、アクセス条件をサービス提供元に確認してください。

5. 項目が表示されたら「空のサブスクリプション」としての確認をやめる

リストにサーバー項目が表示されている場合、少なくとも一部の内容は正常に解析されています。同じURLを繰り返しインポートするのではなく、該当する項目をテストしてください。サービス提供元がパスワード、ポート、サーバーアドレスを変更した後も、古い項目が端末に残っている場合があります。今回の更新が実際に成功したかも確認してください。

サブスクリプション用インターフェースがHTTPSのデフォルトポート443を使用していても、サブスクリプション内のサーバーも443を使うとは限りません。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardにはそれぞれ異なる接続パラメータがあります。サブスクリプションURLのポートをすべての項目に転記したり、テストを通すためだけにTypeを変更したりしないでください。

6. サービス提供元への問い合わせ前に、再現に必要な情報を整理する

クライアント側ではURL、更新経路、表示されるメッセージを確認できますが、アカウント権限の復旧、インターフェース証明書の修復、リモート項目の生成はできません。問い合わせでは、どの段階で問題が発生したかを伝え、「使えない」とだけ書くのは避けてください。

結論:一度に変更する条件は一つだけ

元の記録を残し、URL、ネットワーク、更新経路をそれぞれテストしてください。サブスクリプションの再作成、ネットワークの切り替え、接続設定の変更を同時に行うと、復旧しても何が原因だったのか特定しにくくなります。

7. サブスクリプションのインポート・更新に関するよくある質問

ブラウザではURLを開けるのに、なぜインポートに失敗しますか?

開いたものがサブスクリプションの内容なのか、ログインページなのかを確認してください。ブラウザにはアカウントのセッション情報が保持されている場合があります。サービス提供元のページからURLをコピーし直し、Home → 「+」→ Type → Subscribeから追加してください。それでも失敗する場合は、クライアントから直接読み込めるインターフェースか、サービス提供元に確認します。

更新に失敗したら、すぐに元のサブスクリプションを削除すべきですか?

先に削除しないでください。元のグループと利用可能な項目を残し、エラーを記録してからURLと更新経路を確認します。登録を削除してもリモート側の認証は修復されず、比較に必要な情報を失う可能性があります。

サブスクリプションURLをリセットした後、古いURLは引き続き使えますか?

すぐに無効になるかどうかはサービス提供元によります。リセット後は新しいURL全体を該当するSubscribeの登録に設定し、手動で一度更新してください。古いリストが端末に残っていても、古いURLへのアクセス権があるとは限りません。

Update via Proxyを有効にしてもタイムアウトする場合はどうすればよいですか?

まず現在のプロキシ接続自体が利用可能か確認し、次にその経路からサブスクリプション用インターフェースにアクセスできるか確認します。使える接続がない場合は、検証可能な更新経路を先に確保してください。どちらの経路も失敗する場合は、発生時刻、ネットワーク環境、エラーメッセージをサービス提供元に伝えます。

Shadowrocketを購入したのに、Homeが空なのはなぜですか?

購入できるのはクライアントアプリであり、通信サービスのプランは含まれません。ご自身が契約しているサービス提供元のサブスクリプションがある場合は、Subscribeの手順でインポートしてください。アプリはAppleプラットフォームのみで配信され、主にiPhoneとiPadに対応しています。システム要件はApp Storeのページをご確認ください。

Shadowrocketの正規版の入手方法