Shadowrocketのサブスクリプション更新方法|手動更新・起動時の自動更新・更新できないときの対処法

サブスクリプションの手動更新方法と、アプリ起動時に自動更新する設定を解説。リンク切れ、通信エラー、形式の不一致など、更新できない原因も確認できます。

この記事の要点

この記事は、ご自身が利用するサービスのサブスクリプションURLをお持ちの方向けです。まずHomeで対象のサブスクリプションを手動更新し、次にSettings → Subscribeでアプリ起動時の自動更新設定を確認します。更新に失敗した場合は、リンク・ネットワーク・応答内容の順に原因を切り分けてください。更新後はサーバーへの接続も別途確認が必要です。「サブスクリプションの更新成功」は「接続可能」を意味しません。

サブスクリプション更新で変わる内容

Shadowrocketのサブスクリプション更新では、保存済みのサブスクリプションURLに再度アクセスし、返されたサーバー設定を読み込みます。アプリ自体のアップデートや、Config内のルールファイルの更新とは異なります。この記事では、すでにお持ちのサブスクリプションの管理方法のみを説明します。サブスクリプションや関連サービスの提供・販売・推奨は行っていません。

更新によってサーバーが追加・削除されたり、アドレス、ポート、接続パラメータが変更されたりすることがあります。サブスクリプション項目を手動で編集している場合、次回の更新でリモート側の設定が再読み込みされることがあるため、重要な変更は事前に記録してください。選択中の項目が削除された場合は、Homeで選択状態を確認し直します。項目数だけを見て判断しないでください。

Home
サブスクリプションのグループ、更新結果、選択中のサーバーを確認
Settings → Subscribe
自動更新とリクエスト経路の設定を確認
Config
設定ファイルとルールの管理はサーバーサブスクリプションとは別

まず更新対象を確認

サーバー一覧を更新する場合はHomeのサブスクリプションを操作します。DOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALのマッチング動作を変更する場合は、Configで使用中の設定を確認してください。ルールの順序を直すためにサーバーサブスクリプションを繰り返し更新する必要はありません。

Homeでサブスクリプションを手動更新

初回追加後、サービス提供元から設定変更の案内があったとき、または自動更新の結果が分からないときは、対象を確認して手動更新してください。複数のサブスクリプションがある場合は個別に操作し、それぞれの結果を記録します。別のグループの成功表示を、対象のサブスクリプションが復旧した証拠と取り違えないようにしてください。

  1. グループを確認

    Homeを開き、更新するサブスクリプショングループを探します。メモと登録項目を確認し、追加済みのサブスクリプションであることを確かめてください。手動で個別追加したサーバーとは操作が異なります。

  2. リンクを確認

    サブスクリプションの編集情報を開き、URLが完全か確認します。再追加する場合はHome → + → Type → Subscribeの順に進み、ご自身のサブスクリプションURLを入力して保存します。トラブル対応では、最初から元の登録を削除せず、残しておいてください。

  3. 更新を実行

    Homeでサブスクリプショングループのタイトル行を左にスワイプし、Updateを選択します。グループ内の個別サーバー行ではなく、サブスクリプションの行を操作してください。リクエストが完了するまで待ち、続けて何度も更新しないようにします。

  4. 結果を確認

    エラー表示の有無を確認し、グループ内のアドレス、ポート、項目が想定どおり変化したか確認します。リストに変化がなくても、更新失敗とは限りません。リモート側から同じ内容が返された場合、更新後も表示は変わりません。

  5. 接続を確認

    Homeで選択中のサーバーを確認し、Connectivity Testを実行します。実際に接続する場合は、接続スイッチとシステムのVPN許可も確認してください。サブスクリプションのリクエスト完了だけでは、データ通信の接続は確立されません。

アプリ起動時の自動更新を設定

Settings → Subscribeを開き、アプリ起動時にサブスクリプションを更新するUpdate on Openを必要に応じてオンにします。画面上の表記や配置は、インストール済みのバージョンによって異なる場合があります。設定後はHomeに戻り、次回起動時に更新結果を確認してください。スイッチの状態だけでは、更新が実行されたか判断できません。

起動時の更新は実行条件の一つであり、一定間隔で動くバックグラウンドタスクではありません。アプリを開いていない間も更新が続くわけではなく、アプリをバックグラウンドに移動・復帰するたびに必ずリクエストが完了するとも限りません。ネットワークへの到達性、リンクの有効性、応答内容の解析可能性が、更新成功の条件です。

オンにしても更新されたか分からない場合は、まずサービス提供元にリモート設定に識別可能な変更があるか確認し、そのうえでHomeの表示と照合してください。項目数が同じでも、自動更新が実行されなかったとは限りません。同様に、項目数が増えても、すべての項目が接続可能とは限りません。

更新がタイムアウトする場合:リクエスト経路を確認

サブスクリプションURLにアクセスできるかどうかと、リスト内のサーバーに接続できるかどうかは別の問題です。直接接続ではサブスクリプションのドメインにアクセスできなくても、既存の接続経由ならアクセスできる場合があります。反対に、選択中のサーバーが使えないと、プロキシ経由のリクエストが失敗することもあります。

確認項目操作場所判断方法
現在のネットワークデバイスのWi-Fiまたはモバイル通信の設定ネットワークだけを切り替えて同じサブスクリプションを更新します。結果が変わる場合は、ネットワーク経路をさらに確認してください。
既存の接続Home → Connectivity Testまず現在のサーバーをテストしてください。使えなくなった接続を使って、代替設定を取得することはできません。
プロキシ経由の更新Settings → Subscribe → Update via Proxy既存の接続が使える一方、直接のリクエストが失敗する場合は、オンにして再試行し、結果を比較します。
ルーティングモードHome → Global Routing現在のモードがConfig、Proxy、Direct、Sceneのどれか記録し、ルーティングと更新設定を同時に変更しないようにします。

Update via Proxyは、どの状況にも使える修復スイッチではありません。オンにする前に、利用可能なサーバーを選び、接続を確立してください。サブスクリプションのアドレスに直接アクセスできる場合は、この設定をオフにした状態も試してください。Global RoutingのProxyはプロキシ経由、Directは直接接続、Configは設定に従った処理、Sceneは指定したシーンに応じた動作を表します。いずれも「自動更新が有効」という意味ではありません。

一度に変更するのは一項目だけにし、元の値を記録してから手動更新を実行し、結果を保存して次の手順に進んでください。ネットワーク、サーバー、複数のスイッチを同時に切り替えると、更新が復旧しても、どの条件が有効だったのか分からなくなります。

エラーメッセージから原因を切り分ける

以下は、ネットワーク層やHTTPレスポンスで表示される可能性のあるエラー原文です。実際の表示言語や形式は異なる場合があるため、端末に表示されたメッセージ全体を記録してください。毎回同じ文言が表示されるとは限りません。「更新できない」という表示だけでは、リンク切れか接続中断かを判断できません。

エラー:The request timed out.

原因と対処:制限時間内にリクエストが完了しなかった状態です。ネットワーク、DNS、リモート側の応答などが原因として考えられます。まずWi-Fiとモバイル通信を切り替えて再試行してください。利用可能な接続がある場合は、Settings → Subscribe → Update via Proxyのオン・オフで結果を比較します。タイムアウトだけでは、サブスクリプションの期限切れとは判断できません。

エラー:A server with the specified hostname could not be found.

原因と対処:サブスクリプションのドメインを名前解決できませんでした。URLのホスト名が完全か、空白や余計な記号が入っていないか確認し、ネットワークを変えて試してください。それでも失敗する場合は、サービス提供元にドメインが現在も使用されているか確認します。

エラー:HTTP 401 Unauthorized

原因と対処:サーバーが有効な認証情報を要求しています。ログインページのURLではなく、現在有効なサブスクリプションURLを完全な形でコピーしたか確認してください。認証パラメータがリセットされている場合は、ご自身のアカウントページからリンクを取得し直して保存します。

エラー:HTTP 403 Forbidden

原因と対処:サーバーが今回のリクエストを拒否しました。認証、アクセス制限、アカウントの状態などが関係している可能性があります。まずURL全体を確認し、ステータスコードと発生条件をサービス提供元に伝えてください。403だけを根拠に、プロトコルの変更が必要だと判断しないでください。

エラー:HTTP 404 Not Found

原因と対処:リクエストしたパスに該当するリソースがありません。パスが途中で切れていないか、クエリパラメータが欠けていないか確認し、サブスクリプションのURLが変更されていないか問い合わせてください。同じ誤ったリンクを繰り返し更新しても、通常は結果が変わりません。

証明書関連のエラーが表示された場合は、デバイスの日付と時刻、サブスクリプションのドメイン、現在のネットワークにログイン画面による遮断がないか確認し、サービス提供元に証明書の状態を確認してください。セキュリティ検証を無視して原因を隠さないでください。公衆ネットワークでログインが必要な場合は、システム上でネットワークのログインを済ませてからアプリで再試行します。

リンクを開けるのに解析できないのはなぜ?

HTTPリクエストが成功しても、返された内容が有効なサブスクリプションとは限りません。サーバーからアカウントのログインページ、期限切れの案内ページ、ネットワーク認証ページが返されることがあります。正常に表示できても、Shadowrocketに読み込めるサーバー一覧ではありません。

以下のURLは構造を示す例であり、利用できるサブスクリプションではありません。実際のリンクに含まれるクエリパラメータは認証情報の一部です。コピー時はすべて保持し、公開グループや不明な変換ページに送信しないでください。

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

更新後の確認とよくある質問

更新後は、グループ、選択中のサーバー、Connectivity Test、実際のアクセスの順に確認します。ルールに起因するアクセス結果はConfigを確認し、サーバー認証や通信の失敗は該当項目のパラメータを確認してください。問題を切り分けることで、接続障害をサブスクリプションの不具合と誤認しにくくなります。

サブスクリプションの更新に成功したのに、サーバー数が変わらないのはなぜ?

リモート側でアドレス、ポート、認証パラメータだけが変更された場合や、変更がない場合があります。数だけでなく、変更されるはずの項目をご自身の想定と照らし合わせてください。不明な場合は、現在URLから返される内容をサービス提供元に確認します。

自動更新を有効にしても、手動更新は必要?

トラブルの切り分けには必要です。まずHomeで対象のサブスクリプションにUpdateを実行し、リンクとネットワークが正常に動作することを確認してから、Settings → SubscribeでUpdate on Openを確認します。リクエスト自体の失敗と、自動更新の実行条件が満たされていない状態を区別できます。

更新後に選択していたサーバーが見つからない場合は?

まず正しいサブスクリプショングループを確認し、今回の更新後も残っている項目からサーバーを選び直してConnectivity Testを実行してください。リモート側で元の項目が削除または名前変更された場合、以前の選択状態が維持されるとは限りません。

トラブル対応のために、サブスクリプションURL全体を他人に送る必要はある?

通常は、エラーの原文、ネットワークの種類、手動更新の結果、Update via Proxyの設定状態を共有すれば確認できます。URLのパスに含まれる認証情報、クエリパラメータ、パスワード、アカウント情報は隠してください。リンク全体が漏れた場合は、ご自身のアカウントでリセットして保存し直します。

接続設定を続けて確認する場合は、設定ガイドをご覧ください。ShadowrocketはAppleプラットフォーム向けのクローズドソースの商用アプリで、主にiPhoneとiPadで利用できます。入手先はApp Storeのみです。アプリの買い切り購入に通信サービスの利用料金は含まれません。価格、システム要件、購入可能な地域はApp Storeの表示をご確認ください。

App Storeで正規アプリを確認