Shadowrocketのサブスクリプション更新に失敗・ノードが空になる場合の確認手順

サブスクリプションの解析に失敗する、またはノード一覧が空の場合に、URL形式・提供元の状態・更新タイミングを確認する手順と、再登録前のチェック項目を紹介します。

この記事の要点

利用中のプロバイダーからサブスクリプションを取得しているものの、Shadowrocketで更新がタイムアウトする、解析に失敗する、ノード一覧が空になる方が対象です。まずリクエストの失敗と応答内容の異常を切り分け、URL・アカウント状態・リクエスト経路を確認します。元のサブスクリプションが有効だと確認できてから再登録を検討し、まだ使える既存ノードを先に削除しないようにしましょう。

1. 更新失敗とノードが空の状態を切り分ける

サブスクリプションの更新は、URLへのアクセス、応答内容の取得、内容からのノード解析という3段階で行われます。いずれかで失敗すると、Homeに目的のノードが表示されないことがありますが、対処方法は異なります。既存ノードが残っていて更新時にエラーが出る場合は、まずリクエストが成功しているかを確認します。初回登録後にノードが1つも表示されない場合は、応答内容がノード用のサブスクリプションかどうかも確認してください。

「更新成功」と「ノードに接続できる」は別の状態です。前者はサブスクリプションへのリクエストと解析が完了したことを示します。後者はノードのアドレス、ポート、認証情報、利用中のネットワークにも左右されます。ここでは一覧を取得できない問題を先に解決し、一覧が戻った後で接続テストを行います。

3段階
リクエスト先 → 応答内容の取得 → ノードの解析
401 / 403
認証情報、利用権限、提供元側のアクセス制限を優先して確認
200
HTTPリクエストが成功しても、内容を解析できるとは限りません

判断の目安:既存ノードが使えるなら残しておく

既存ノードで接続できる場合は、対象のサブスクリプションだけを更新し、エラー内容を記録してください。先にHomeを空にする必要はありません。使える接続を残しておけば、問題が更新処理にあるのかノード自体にあるのかを切り分けやすくなります。

2. URLの完全性とサブスクリプションの種類を確認する

サブスクリプションURLはノード一覧を取得するためのアドレスで、アカウントのログインページやプロバイダーのトップページではありません。コピーする際は、利用中のプロバイダーが用意したサブスクリプションのコピー機能を使い、プロトコル、ドメイン、パス、疑問符以降のクエリパラメーターを確認します。チャットアプリ上の改行、末尾の句点、引用符、省略表示などによって、見た目が似たURLでも別のアドレスになることがあります。

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

上記は形式の例であり、実際に使えるサブスクリプションではありません。実際のURLはパスやパラメーター名が異なる場合があるため、例に合わせて書き換えないでください。特に ? 以降を削除したり、&、=、パーセントエンコードされた文字を手動で置き換えたりしないでください。認証情報はパスに含まれている場合もあり、必ずしも token という名前ではありません。

  1. URLをコピーし直す

    利用中のプロバイダーのアカウントページから、Shadowrocket向けのサブスクリプションURLをコピーし直します。形式を選べる場合は、プロバイダーのShadowrocket向け案内に従ってください。アカウント管理ページのURLをコピーしないようにしましょう。

  2. サブスクリプションの種類を確認する

    Homeの右上にある「+」から追加画面を開き、TypeでSubscribeを選択します。単一ノードの共有情報と、複数ノードを取得するサブスクリプションURLは用途が異なります。WebページのURLを、特定プロトコルのサーバーアドレスとして入力しないでください。

  3. URL欄を確認する

    URL欄に完全なリンクを入力し、前後に空白、改行、余分な句読点がないか確認します。見分けやすい名前を付けてもかまいませんが、認証情報を丸ごと名前に記載しないでください。

  4. 保存して更新する

    保存後にHomeへ戻り、サブスクリプションを更新します。プルダウンで更新する場合は対象サブスクリプションの結果を確認し、そのグループ内にノードが表示されるかを見てください。原因を調べている間はこのサブスクリプションだけを変更し、ほかのソースを同時に調整しないようにします。

3. 応答結果からプロバイダー側の状態を確認する

エラーメッセージにHTTPステータスコードが含まれている場合は、原因を絞り込む手がかりになります。以下は各ステータスコードの一般的な意味であり、すべてのバージョンで同じエラーメッセージ全文が表示されるとは限りません。画面に一般的な失敗表示しかない場合は、実際の文言を記録し、該当リクエストの結果を利用中のプロバイダーに確認してください。

エラー:401 Unauthorized

原因:サーバーが現在のリクエストの認証情報を受け付けていません。サブスクリプションの認証情報が無効になっている可能性があります。

対処:利用中のプロバイダーのアカウントページで認証情報がリセットされていないか確認し、最新のサブスクリプションURLをコピーしてから再度更新します。

エラー:403 Forbidden

原因:サーバーがアクセスを拒否しています。アカウント権限、アクセス元の制限、セキュリティ対策などが考えられます。このコードだけでプランの期限切れとは判断できません。

対処:アカウントの状態を確認し、エラーコードと発生時刻をプロバイダーに伝えて、サブスクリプションのエンドポイントにアクセス制限があるか確認します。

エラー:404 Not Found

原因:リクエストしたパスが見つかりません。古いサブスクリプションURLが無効になった、コピーが不完全、またはプロバイダーがパスを変更した場合によく発生します。

対処:最新のサブスクリプションURLを取得し直し、ドメインとパスを確認します。新しい接続先を推測して入力しないでください。

エラー:429 Too Many Requests

原因:サブスクリプションのエンドポイントで、短時間に送信できるリクエスト数が制限されています。

対処:連続更新をやめ、プロバイダーの案内または応答に含まれるRetry-Afterなどに従って待ちます。制限解除後に手動更新を1回だけ行ってください。

エラー:503 Service Unavailable

原因:サーバーまたはその前段のゲートウェイが、一時的にリクエストを処理できません。

対処:利用中のプロバイダーのメンテナンス情報を確認し、既存ノードを残したまま復旧を待ってから再試行します。このエラーだけを理由に設定全体を作り直す必要はありません。

アカウントが有効か、通信量を使い切っていないか、現在のプランに利用可能なノードが含まれているかも確認します。プロバイダーによって、エラーコード、説明文、空の一覧など応答方法は異なります。ブラウザーでURLを開いてログイン画面、セキュリティ確認画面、アカウント案内が表示される場合、ステータスコードが200でもノードとして解析できる内容ではありません。また、ブラウザーで内容を確認できても、アプリのリクエストに同じ応答が返るとは限りません。

4. タイムアウト時はリクエスト経路を確認してから更新タイミングを見直す

タイムアウトは、制限時間内にリクエストが完了しなかったことを示すだけで、URLの期限切れを直接意味するものではありません。まず現在のWi-Fiまたはモバイル通信でほかのWebサイトにアクセスできるか確認します。公共Wi-Fiでネットワークへのログインが必要な場合は、先に認証を済ませてください。同じサブスクリプションを別のネットワークで一度更新すると、ローカルネットワークの制限かサブスクリプションサーバーの問題かを切り分けやすくなります。

サブスクリプションのリクエスト経路は、ノードの接続テストと完全には同じではありません。Settings → Subscribe のUpdate via Proxyは、サブスクリプション更新をプロキシ経由で送信するかどうかを切り替えます。この設定が役立つ可能性があるのは、利用可能なノードがすでにあり、接続が確立し、リクエストがサブスクリプションのエンドポイントまで届く場合です。初回登録で一覧が完全に空のときは、まだ存在しないノードを使って更新することはできません。

確認できた現象 優先して確認する項目 次に行うこと
Wi-Fiではタイムアウトするが、モバイル通信では更新できる Wi-Fiのネットワークログイン、DNS、アクセス制限 まず利用可能なネットワークで更新し、その後に元のネットワークの問題を調べる
プロキシ経由の更新を有効にすると、かえってタイムアウトする 現在のノードが使えるか、更新リクエストが正しく転送されているか 元の設定を記録し、Update via Proxyを一時的にオフにして直結で更新を試す
直結では失敗するが、既存のプロキシ接続は使える 現在のネットワークでサブスクリプションのエンドポイントが制限されているか Settings → SubscribeでUpdate via Proxyを有効にし、1回だけ更新を試す
連続更新の後に429が発生する エンドポイントのリクエスト頻度制限とバックグラウンド更新 手動での再試行をやめ、制限が解除されてから更新する

接続スイッチをオフにしてもすぐオンに戻る場合は、Settings → On Demandに自動接続の条件が設定されていないか確認します。この機能は接続するタイミングを制御するもので、誤ったURLを正しいサブスクリプションに修正するものではありません。調査時は元の設定を記録し、条件をそろえてテストする必要がある場合に限って一時的にオフにし、完了後に戻します。また、Global Routingを何度も切り替えて解決を試みないでください。Proxy、Direct、Config、Sceneは通信の処理方法であり、サブスクリプション形式を変換する設定ではありません。

5. ノードが空の場合はグループと応答内容を確認する

更新後にHomeへ戻り、更新したサブスクリプショングループを表示しているか確認します。折りたたまれたグループを展開し、検索条件もクリアしてください。グループが閉じていたり検索語が残っていたりすると、「ノードが表示されない」だけで、実際にサブスクリプションからノードが返されていないとは限りません。ほかのサブスクリプションは正常で1つだけ空の場合は、そのグループの取得元を優先して調べ、すべてのサブスクリプションを同時にリセットしないようにしましょう。

判断の目安:ステータス200でも一覧が空なら、まずサーバー側の内容を確認

ネットワークリクエストが成功し、検索条件をクリアしてグループを展開しても空の場合は、Global Routingを繰り返し変更したりアプリを再インストールしたりするのではなく、現在のアカウントに対してサブスクリプションが何を返しているかプロバイダーに確認してください。

6. 再登録の前に記録しておく情報

再登録は、端末に保存された古いURLや誤った項目の修正には役立ちますが、プロバイダー側のAPI障害は解決できません。古いサブスクリプションを削除する前に、完全なURLを再取得できることを確認し、手動で追加したノード、既存グループ名、現在選択中のノードを記録します。サブスクリプションに使えるノードが残っている場合は、接続を一緒に失わないよう、元の項目を優先して残してください。

  1. エラー内容を記録:実際のメッセージ、発生時刻、利用ネットワーク、更新リクエストがプロキシ経由だったかを記録します。「使えない」だけでは情報が不足します。
  2. 現在のURLを確認:利用中のプロバイダーのアカウントページからコピーし直します。古いチャット履歴に保存したURLは使わないでください。
  3. アカウントからの出力を確認:アカウントが有効で、エンドポイントが復旧しており、このURLから少なくとも1つの利用可能なノードが返されることを確認します。
  4. 新しい項目を個別に検証:再追加が必要な場合は、Home →「+」→ Type → Subscribeで見分けやすい名前を付け、更新テストを1回だけ行います。
  5. 検証後に整理:新しい項目でノードを展開でき、接続テストも想定どおりであることを確認してから、無効と確認できた古いサブスクリプションを削除します。名前が同じという理由だけで一括削除しないでください。

復旧しない場合は、上記の記録を利用中のプロバイダーに伝え、問題が「リクエストのタイムアウト」「HTTPエラー」「リクエスト成功後も一覧が空」のどれかを説明してください。初期調査には、URL全体が写ったスクリーンショットよりもこうした情報が役立ちます。認証情報の変更が必要な場合は、プロバイダーが提供する安全なサポート窓口を利用してください。

7. よくある質問

Webページは開けるのに、サブスクリプションを更新できないのはなぜですか?

通常のWebページとサブスクリプションのエンドポイントでは、ドメイン、認証方式、アクセス制御が異なる場合があります。完全なURLを確認したうえで、Settings → Subscribe → Update via Proxyの状態を確認し、直結時と利用可能なプロキシ接続時の結果をそれぞれ記録してください。

更新に失敗したら、すぐにすべてのノードを削除すべきですか?

いいえ。既存ノードを残し、問題のあるサブスクリプションだけを更新してください。既存ノードで接続できるなら、そのまま残します。新しいサブスクリプションを正常に登録でき、元の項目が確実に無効だと確認してから整理してください。

サブスクリプションURLをリセットした場合、古いURLはまだ使えますか?

すぐに無効になるかどうかはプロバイダーによります。現在のURLをコピーし直して、古い項目のURLと置き換えてください。アカウントに再ログインしても、Shadowrocketに保存済みの認証情報が自動で更新されるわけではありません。

更新は成功したのにインターネットに接続できない場合、次に何を確認すればよいですか?

まずHomeで実際に使うノードを選び、Connectivity Testを実行します。次にGlobal Routingを確認します。ルールに基づいて通信を振り分ける場合は、Configと現在の設定内のRuleを確認してください。Directは通常のリクエストをプロキシ経由で転送しません。サブスクリプションの更新成功だけでは、ノードへの接続やルールの適用は保証されません。

Shadowrocketの入手方法と初期設定

iPhone / iPad版はApp Storeで2.99ドルの買い切りです。開発元はShadow Launch Technology Limitedです。システム要件はApp Storeの掲載内容をご確認ください。Mac(Appleシリコン/Intel)、Windows、Android、Linux版は無料です。お使いのデバイスに合わせてダウンロードページから入手し、すでにお持ちのサブスクリプションを使って設定してください。

Shadowrocket をダウンロード