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

Shadowrocketのサブスクリプションを手動・起動時に更新する方法と、リンク切れ・通信エラー・形式不一致など更新に失敗する原因を解説します。

この記事の概要

利用中のサービスとサブスクリプションがある場合は、まずHomeで手動更新し、結果を確認します。次にSettings → Subscribeで、アプリ起動時の更新設定を確認してください。失敗した場合は、URL、通信状況、応答形式の順に確認します。更新成功はサブスクリプションの取得・解析が完了したことを示すもので、各サーバーへの接続やConfig内のルール更新を保証するものではありません。

サブスクリプション更新の対象:サーバー一覧であり、アプリのアップデートではない

Shadowrocketのサブスクリプション更新は、保存済みのサブスクリプションURLに再度アクセスし、サーバー設定を取得する操作です。サービス提供元がサーバーアドレス、ポート、認証情報を変更した場合、再取得すると変更内容が端末に反映されます。App Storeでのアプリ更新とは別の操作であり、アプリを購入しても接続サービスが自動的に付属するわけではありません。

Home、Config、Settingsはそれぞれ役割が異なります。Homeではサーバーと接続状態を確認し、Configでは設定ファイルを管理し、Settingsではアプリの設定を変更します。トラブルを調べる前に、更新したい対象を確認してください。「サーバー一覧の更新成功」を「ルールファイルの再ダウンロード」と取り違えないようにしましょう。

Home
サブスクリプショングループ、サーバー項目、現在の選択を確認する
Config
設定ファイルとルールの管理は、サブスクリプション一覧の管理とは異なる
Settings
Subscribeの更新設定を確認する

サブスクリプションには、使用量や有効期限の情報が含まれる場合もありますが、表示されるかどうかはサービス提供元の応答内容によります。使用量が表示されるかどうかだけで更新成否を判断せず、更新結果、グループ内の項目、サービス提供元から案内された変更内容を照合してください。

手動更新:Homeで更新してグループを確認する

初めて追加したときや自動更新が実行されていないと思われるときは、まず手動で更新します。作業前に、対象サブスクリプションの名前、現在選択中のサーバー、サービス提供元が案内している変更内容を確認してください。更新の確認のために、既存のグループを先に削除する必要はありません。

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

    Homeを開き、自分のサブスクリプショングループを探します。まだ追加していない場合は、右上の「+」をタップし、TypeでSubscribeを選択して、自分のサブスクリプションURLを入力して保存します。WebサイトのログインURLをサブスクリプションURLとして使わないでください。

  2. URLを確認する

    対象サブスクリプションの編集画面を開き、URLが完全か、特に「?」以降のクエリパラメーターを確認します。コピー時に説明文や前後の空白、改行が入らないようにしてください。tokenの大文字・小文字は変更しないでください。

  3. 下に引いて更新する

    Homeに戻り、一覧を下に引いてサブスクリプションを更新し、リクエストが完了するまで待ちます。複数のサブスクリプションがある場合は、対象グループの結果を確認してください。別のグループが更新できても、すべて更新できたとは限りません。

  4. 変更内容を確認する

    更新結果とグループ内の項目を確認します。サービス提供元が追加を明示した項目があれば、その項目が表示されているか確認してください。変更内容が案内されていない場合、一覧に変化がないだけでは更新失敗とは判断できません。

  5. 接続をテストする

    現在選択中の項目が有効か確認してから、接続テストと実際のアクセスを行います。サブスクリプション内のサーバーが使えなくても、サブスクリプションURLを更新できないとは限りません。2つの結果は分けて記録してください。

起動時の自動更新:Settings → Subscribe

手動更新が正常に行えることを確認してから、Settings → Subscribeを開き、アプリ起動時に更新する設定Update on Openを有効にします。英語表記の大文字・小文字やローカライズされた表示は、現在の画面に従ってください。ここで設定するのは「アプリ起動時のサブスクリプション更新」であり、On Demandの接続トリガーではありません。

この設定は手動で更新する手間を減らすためのもので、アプリを終了した後も一定間隔で取得し続ける機能ではありません。アプリを前面に表示したときに実際に更新されるかは、アプリ側の更新条件やネットワーク状況にも左右されます。画面を切り替えただけで更新が完了したと判断しないでください。

Settings → On Demandで管理するのは、条件に応じたVPN接続の開始・切断であり、サブスクリプションの更新タイマーではありません。On Demandを変更しても、無効なサブスクリプションURLは修復できず、Subscribeの更新設定の代わりにもなりません。

更新の仕組み:取得成功と解析成功は別

サブスクリプションの更新には、少なくともアドレスの解決、ネットワークリクエスト、応答の受信、内容の解析が必要です。前半の処理に失敗すると本文全体を取得できません。後半で失敗した場合は、サーバーからWebページが返されても、有効なサーバー項目を作成できません。

サブスクリプションURLを読み込む ドメインを解決する サブスクリプションをリクエストする 内容を解析する グループを更新する
確認できる結果説明次の手順
HTTP 200サーバーから成功応答が返っても、本文がログインページや案内ページの場合がありますShadowrocketに対応したサブスクリプション内容が返されているか確認する
HTTP 401 / 403認証またはアクセス権限の確認でリクエストが拒否された利用中のサービス提供元にtoken、有効期限、アクセス制限を確認する
HTTP 404リクエスト先のパスに該当するリソースが見つからない現在有効なサブスクリプションURLをコピーし直す
HTTP 429サーバー側でリクエスト頻度が制限されている更新を繰り返さず、サーバー側の指定に従って待ってから再試行する
リクエストがタイムアウトした許容時間内にリクエストが完了しなかった状態であり、URLの期限切れを意味するとは限りません現在のネットワークを確認し、利用できる別のネットワークでも比較する

結論:まず応答を確認し、その後で端末側の設定を調整する

権限やパスに関するHTTPステータスが表示された場合は、まずサブスクリプションURLとサービスの状態を確認します。タイムアウトやドメインを解決できないなど、ネットワークに関する現象の場合に限り、先に通信経路を確認してください。DNS、Global Routing、サブスクリプションURLを同時に変更すると、どの変更が影響したのか判断できません。

更新に失敗したとき:エラーに応じて確認箇所を絞る

まずエラーの文面と表示された場所を記録してから、次の手順を決めます。以下のHTTPステータスはサーバーの応答情報で、アラートに必ずすべて表示されるとは限りません。実際の結果に該当するステータスが含まれている場合にのみ、対応する確認方法を使ってください。「更新に失敗しました」という表示だけで、アカウントの有効期限切れとは判断できません。

エラー:HTTP 401 / HTTP 403

原因:サブスクリプションのエンドポイントに必要な認証情報が無効か、サーバー側で現在のアクセスが拒否されています。

対処法:利用中のサービス提供元のアカウントで、サービスの状態とサブスクリプションURLを確認します。tokenがリセットされている場合は、既存のサブスクリプションを編集して新しいURLに置き換え、1回だけ更新してください。

エラー:HTTP 404

原因:URLのパスが無効、コピーが不完全、またはサービス提供元がサブスクリプションのエンドポイントを移行しています。

対処法:利用中のサービス提供元からサブスクリプションURL全体をコピーし直し、パスとクエリパラメーターを確認します。ドメインを開けるというだけで、サブスクリプションのパスも有効だと判断しないでください。

エラー:HTTP 429

原因:短時間のリクエスト数がサーバー側の上限を超えています。

対処法:連続して下に引くのをやめます。サーバー側から待ち時間が指定されている場合は、それに従って再試行してください。アプリを何度も開いて余分なリクエストが発生していないかも確認します。

エラー:The request timed out.

原因:ネットワークリクエストが時間内に完了していません。現在のネットワーク、サブスクリプションサーバー、またはリクエストが通過する通信経路が関係している可能性があります。

対処法:まず通常のWebページを開けるか確認し、Wi-Fiとモバイル通信で比較します。一度に変更する条件は1つだけにして、結果を記録してください。

内容を解析できないという結果の場合は、サブスクリプションの種類と応答本文を重点的に確認します。ログインページ、残高案内ページ、Web認証ページは、ブラウザーで開けてもサーバー一覧ではありません。エンコードされたテキストだからといって対応形式とは限らず、アプリがサポートする構造に適合している必要があります。

更新は成功したのに一覧が変わらない、または接続できない場合

一覧の名前が変わらない場合、よくある原因は2つです。サービス提供元が内容を変更していない、または項目のアドレス、ポート、認証情報だけが変更されています。名前や件数は目安にすぎず、内容がすべて更新された証拠にはなりません。サービス提供元から明示された変更内容を優先して確認し、新しい内容を表示させるために何度も削除・再登録しないでください。

更新後もアクセスできない場合は、接続のトラブルシューティングに進みます。Homeで現在選択中のサーバーが削除済み、または無効になっている可能性があります。Global RoutingのProxy、Direct、Config、Sceneも経路の動作に関係します。ただし、これらはサブスクリプションURLを修復する設定ではありません。特にConfigでは、現在の設定に含まれるルールと最終ポリシーも確認してください。

  1. グループを確認:更新したのが対象のサブスクリプションであり、同名または似た名前の別グループではないことを確認します。
  2. 選択項目を確認:現在のサーバーをもう一度確認し、接続テストと実際のWebアクセスの結果を別々に記録します。
  3. ルーティングを確認:Global Routingの現在のモードを確認します。Configを使用している場合は、意図した設定が有効になっているか確認してください。
  4. ルールを確認:関連するDOMAIN-SUFFIX、IP-CIDR、GEOIP、末尾のFINALについて、ポリシーと順序を確認します。変更前に現在の設定を保存し、サブスクリプションの更新だけを目的にルールを書き換えないでください。

サーバーのサブスクリプション更新とルール更新は、別々の操作です。設定項目について詳しく知りたい場合は設定項目の解説を、使い始めたばかりの場合は入門ガイドを確認し、インポート、サーバーの選択、初回接続の順に進めてください。

日常の確認:記録を残し、一度に変更するのは1つだけ

安定して使えている場合は、起動時の更新を有効にしておき、サービス提供元から変更の案内があったときに手動更新を追加で行うとよいでしょう。問題が起きたら、「URLの誤り」「通信の失敗」「解析の失敗」を区別できる範囲で記録します。サブスクリプションの内容全体を公開する必要はありません。サービス提供元に問い合わせる際は、更新の問題か接続の問題かを明確に伝えてください。

ShadowrocketはApp Storeで提供されるクローズドソースの商用アプリで、主にiPhoneとiPadで利用できます。アプリの買い切り購入と接続サービスのプランは別です。価格とシステム要件はApp Storeの製品ページをご確認ください。アプリを確認する際は、デベロッパ名のShadow Launch Technology Limited、公式アイコン、アプリID 932747118を照合してください。

App Storeで正規アプリを確認 →