· 入門ガイド · 約8分

Shadowrocketのサブスクリプション更新方法|手動更新・起動時の自動更新・失敗時の対処法

Shadowrocketのサブスクリプションを手動で更新する方法と、起動時の自動更新設定を解説。更新に失敗する主な原因と対処法も紹介します。

この記事の概要

ご自身のサービス提供元からサブスクリプションURLを入手済みの方を対象に、まずHomeで手動更新して結果を確認し、その後、起動時の自動更新を設定します。失敗した場合は、ネットワーク、URL、応答内容、解析の順に確認してください。更新に成功しても、リスト内のすべてのノードへの接続が保証されるわけではありません。また、Configのルールが自動更新されるわけでもありません。

サブスクリプション更新で実際に変わるもの

Shadowrocketのサブスクリプション更新では、クライアントがサブスクリプションURLにアクセスし、認識できたノード情報を該当するサブスクリプショングループに反映します。アプリのアップデートや回線プランの更新ではありません。この記事では、ご自身でサービス提供元とサブスクリプションを用意していることを前提とします。サブスクリプションURLとノードはサービス提供元から入手してください。本サイトではノードやサブスクリプションの提供・販売・推奨は行っていません。

サブスクリプションURLを読み込む サーバーから内容を取得する ノード情報を解析する サブスクリプショングループを更新する 接続結果を確認する

更新によって、ノード名、サーバーアドレス、ポート、認証情報などが変わったり、サービス提供元がサブスクリプションから削除した項目がなくなったりすることがあります。そのため、サブスクリプション内の手動変更を長期保存の手段として使うのは避けましょう。次回の更新でサーバー側の内容に上書きされる場合があります。特別なパラメータを残す必要がある場合は、元の値を控えたうえで、その項目が引き続きサブスクリプションの管理対象か確認してください。

更新のきっかけは2種類
手動更新とUpdate on Open
設定箇所は3つ
Homeでノードを管理し、Configで設定を管理し、Settingsで各種設定を変更します
443
HTTPSでポートを明示しない場合に使われる既定のポートです。ノードの接続ポートではありません。

サブスクリプションURLのポートと、ノードへの接続ポートは別のものです。たとえば、HTTPSでのサブスクリプション取得には既定の443番ポートが使われ、取得したノードには別のポートが設定されている場合があります。サブスクリプションをダウンロードできても、ノードのポートに到達できるとは限りません。ノードに接続できても、サブスクリプションサーバーにアクセスできるとは限りません。

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

以下では、iPhone / iPadの英語表示を例に説明します。Homeにサブスクリプショングループが登録されていることを確認してください。個別に追加したノードだけでは、サブスクリプショングループとは異なります。単独ノードのみでサブスクリプションURLがない場合、サービス提供元から新しいリストを取得することはできません。

  1. サブスクリプションを確認する

    Homeを開き、更新するサブスクリプショングループを探して、名前と登録済みのURLを確認します。複数のグループがある場合は、それぞれを見分け、別のサブスクリプションの更新結果と取り違えないようにしてください。

  2. サブスクリプションを追加する

    まだ追加していない場合は、Home右上の「+」→ Type → Subscribeを開き、サービス提供元から入手した完全なサブスクリプションURLをURL欄に貼り付けます。見分けやすい名前を入力して保存してください。

  3. 下に引いて更新する

    Homeに戻り、リストの先頭から下に引いてサブスクリプションを更新します。リクエストが完了するまで待ってから次の操作をしてください。連続して下に引くと、リクエストが重なったり、サーバー側のアクセス頻度制限にかかったりするおそれがあります。

  4. リストを確認する

    対象のグループに、想定した新しい名前やパラメータが反映されているか確認します。失敗のメッセージが表示された場合は、画面に出た文言をそのまま記録してください。リストに変化がない場合は、まずサービス提供元にサーバー側の内容が変更されたか確認します。

  5. 接続を確認する

    更新後の対象ノードを選択し、接続し直して、通常利用する目的のサイトにアクセスします。必要に応じて一度切断してから再接続し、既存の接続状況を更新後の結果と混同しないようにしてください。

サブスクリプションの例 https://example.com/sub?token=xxxx はURLの形式を説明するためのもので、実際に利用できるサブスクリプションではありません。実際のURLをコピーするときは、?以降のパラメータもすべて含めてください。引用符や空白、改行は加えないでください。URLに含まれるtokenは通常、アクセス認証情報です。公開スクリーンショットやチャット、オンラインの検査ツールに載せないでください。

起動時の自動更新を有効にする

アプリを開いたときに最新のリストを取得したい場合は、起動時の自動更新が便利です。英語表示の場合、一般的な設定手順は Settings → Subscribe → Update on Open です。プラットフォームによってレイアウトが異なる場合があるため、現在のクライアントに表示されるサブスクリプション設定を確認してください。このスイッチはConfigのルール編集画面にはありません。

Update on Openは、一定間隔で実行するバックグラウンドタスクではなく、アプリ終了中もサブスクリプションを取得し続ける機能でもありません。Settings → On Demandとは役割が異なります。On Demandは接続条件に応じてVPN接続を開始する機能で、サブスクリプションを定期ダウンロードするものではありません。リストの期限切れを解決するためにOn Demandを繰り返し変更しても、設定箇所が違う可能性があります。

まず手動更新を確認する

手動更新に成功していない場合は、まずリクエストが失敗する原因を解消してください。自動更新で変わるのは実行のタイミングだけです。無効なURL、認証エラー、到達できないサブスクリプションサーバーは解決できません。

更新に失敗したときは、エラーの種類から確認

更新失敗の原因がアカウントの期限切れとは限りません。ドメインの名前解決、TLS検証、ネットワークの切り替わり、応答内容の非互換なども原因になります。以下は、ネットワークリクエストで表示される可能性のある英語のエラーメッセージです。表示内容はシステムやプラットフォームによって異なるため、「更新できない」だけでなく、画面に出た文言をそのまま記録してください。

エラー:The request timed out.

原因:待ち時間内にリクエストが完了しませんでした。現在のネットワークや接続経路、サブスクリプションサーバーの応答遅延などが考えられます。

対処法:同じ端末でWi-Fiとモバイルデータ通信をそれぞれ試し、リクエストが完了するまで待ってから更新してください。一方のネットワークだけで失敗する場合は、まずそのネットワークのアクセス条件を確認します。

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

原因:サブスクリプションURLのホスト名を名前解決できません。ドメインの入力ミスや失効、DNSの問い合わせ失敗などが考えられます。

対処法:URL全体を確認し、別のネットワークでも試してください。同じドメインを引き続き名前解決できない場合は、サービス提供元にサブスクリプションのドメインが変更されていないか確認します。

エラー:The Internet connection appears to be offline.

原因:システムがインターネットに接続できていないと判断したか、リクエスト中にネットワークが切り替わった可能性があります。

対処法:まずWi-Fiのログイン認証を完了し、通常のWebページを開けることを確認してから、Homeに戻って更新します。Shadowrocketのモバイルデータ通信がシステムで許可されているかも確認してください。

HTTPステータスコードが返された場合は、その意味に応じて対処します。401は認証に関係することが多く、403はサーバーがリクエストを拒否したことを示します。認証情報やアクセス制限が原因の場合があります。404はリクエスト先のパスが見つからないことを示し、429はリクエスト過多を示します。5xxは通常、サーバー側での調査が必要です。これらのステータスコードを一律にノードの接続不良と判断しないでください。

エラーは出ないのにノードが変わらない

エラーが表示されないからといって、有効なノード情報を取得できたとは限りません。URLによっては、ログインページや期限切れの案内、ネットワーク認証ページが返されても、HTTPステータスは200になることがあります。クライアントが必要とするのは解析可能なサブスクリプションデータであり、ページタイトルに「サブスクリプション」と書かれた一般のWebページではありません。ブラウザーでURLを開けても、リクエストが到達したかを確認する参考にしかならず、アプリで解析できる証明にはなりません。

Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardでは、必要なパラメータが異なります。サブスクリプションに含まれるプロトコルは一部のみの場合があり、プロトコル名が同じでも必要な情報が揃っているとは限りません。解析に成功しても接続できない場合は、サーバーアドレス、ポート、認証情報、TLS利用時のサーバー名などを確認してください。サブスクリプションリストにノードが表示されたかだけでは判断できません。

リストの更新と接続は分けて確認

まず対象のグループに想定どおりの内容が取得されていることを確認し、その後、選択したノードで実際に接続できるかテストします。リストが正しく更新されているのに接続できない場合は、接続の問題を調べてください。同じサブスクリプションを繰り返し追加する必要はありません。

更新後にルールとアクセス経路を確認する

サブスクリプションの更新とルール設定は、別々に確認してください。Homeのノードが変わっても、Config内のDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALルールが同時に更新されるわけではありません。サービス提供元が設定ファイルを明示的に提供し、所定の方法でインポートした場合に限り、設定内容を別途確認してください。

Global RoutingのProxy、Direct、Config、Sceneも、サブスクリプションの更新方式ではありません。ProxyとDirectは異なるトラフィック処理モード、Configは選択中の設定に応じた処理、Sceneはシーンに応じた設定です。トラブルの確認時は現在の選択内容を記録してください。ノードの更新に成功したからといって、すべてのリクエストがそのノードを経由するとは限りません。

  1. 更新前後のネットワーク、接続状態、Global Routingの選択内容を記録し、一度に変更する条件は1つにします。
  2. 現在のネットワークからサブスクリプションサーバーにアクセスできず、既存の接続経由ならアクセスできる場合は、その接続を使って再確認できます。すべてのサブスクリプションで、更新前に接続が必要だと決めつけないでください。
  3. 接続を有効にしてから更新に失敗する場合は、選択中のノードと設定を記録し、アクセス経路の問題がないか確認します。サブスクリプション更新のために、すべてのトラフィックの処理方法を長期的に変更しないでください。
  4. 更新後にノード名が変わった場合は、設定内のポリシー参照と現在の選択が想定どおりか確認してから、実際の接続先サイトで動作を確認してください。

さらに詳しく調べるにはトラブルシューティングガイドをご覧ください。Global Routingとルールの関係についてはプロキシモードの説明をご覧ください。問い合わせの際は、エラーの原文、発生時刻、ネットワークの種類、接続を有効にしていたか、手動更新と自動更新の結果をお知らせください。サブスクリプションURL全体、token、ノードの認証情報は伏せてください。既存の利用可能な設定を残しておくほうが、すべて削除するより原因を特定しやすくなります。

Shadowrocket 公式ダウンロード