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

Shadowrocketのサブスクリプションを手動で更新する方法と、アプリ起動時の自動更新設定を解説。更新できない場合は、URL・ネットワーク・形式を確認します。

この記事の概要

自分のサブスクリプションを利用している場合は、まずHomeで手動更新し、リストが正常に更新されたことを確認します。その後、Settings → SubscribeでUpdate on Openを有効にします。更新できないときは、サブスクリプションURLにリクエストが届いているか、返された内容を解析できるかを順に確認しましょう。サブスクリプションの更新、接続テスト、Configの更新は別の操作です。この記事では操作、確認、トラブル対処の順に説明します。

サブスクリプション更新の対象:リストの更新であり、アプリのアップデートではありません

Shadowrocketのサブスクリプション更新では、登録済みのサブスクリプションURLを再度読み込み、Homeの該当グループにある接続項目を更新します。接続先で名前、アドレス、ポートなどが変更された場合、通常は変更を反映するために再取得が必要です。この記事は、すでに自身のサービスとサブスクリプションを利用していることを前提としています。

サブスクリプションURLを読み込む サーバーから内容を取得する 接続項目を解析する ローカルのリストを更新する

この流れでは、内容を取得できることと、接続項目を解析できることは別の条件です。サブスクリプションサーバーからログインページが返された場合、リクエストに成功しても有効なサブスクリプションを取得できたとは限りません。リストが更新されても、各接続が正常に使えるとは限りません。接続の可否は、接続先の状態、認証情報、現在のネットワーク環境にも左右されます。

手動更新:URLを確認してからグループをチェック

初回の追加時や更新時に問題が起きた場合は、まず手動で更新してください。自動更新を待つのではなく、操作の結果をその場で確認できます。操作前に、対象グループの名前と現在の項目数、確認したい接続名を控えておきましょう。更新前後の比較に使います。サブスクリプションの認証情報を記録したり、公開したりする必要はありません。

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

    Homeを開き、登録済みのサブスクリプショングループを探します。初めて追加する場合は、Home右上の「+」→ Type → Subscribeを選び、自分のサブスクリプションURLを入力して保存します。単一の共有リンクは、継続的に更新できるサブスクリプションリストではありません。

  2. URL全体を確認

    該当するサブスクリプションの編集画面を開き、URLを確認します。クエリパラメーターがすべて含まれていること、前後に空白や改行、説明文が混ざっていないことを確認してください。自分のURLだけを確認し、完全なURLを公開の場に投稿しないでください。

  3. リストを下に引いて更新

    Homeに戻り、リスト上で下にスワイプして指を離し、サブスクリプションを更新します。処理が終わるまで待ち、エラー表示がないか確認してください。複数のサブスクリプションを登録している場合は、対象のグループごとに結果を確認します。

  4. 更新結果を確認

    対象グループの名前と項目数、変更を把握している項目を照合します。接続先で特定の接続情報が変更されたことが分かっている場合は、その項目の編集画面でアドレスやポートを確認してから接続テストを行います。

以下はURLの構造を示す例であり、接続には使えません。例のtokenはクエリパラメーターです。実際のURLでは別のパラメーター名が使われたり、パスに認証情報が含まれたりする場合があります。例に合わせて自分のURLの項目を書き換えないでください。

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

起動時の自動更新:Subscribeで設定

手動更新が成功したら、Settings → Subscribe → Update on Openを開き、アプリ起動時の更新を有効にします。この設定はアプリを開いたときにサブスクリプションを取得するもので、一定間隔で実行するバックグラウンドの定期処理ではありません。接続を維持していてもアプリを開いていなければ、サブスクリプションが更新されたとは判断できません。

Update on OpenとOn Demandは用途が異なります。前者はサブスクリプション取得のタイミングを制御し、後者は接続を必要に応じて開始するための設定です。Settings → On Demandを変更してもサブスクリプションURLの問題は解決せず、リスト更新の代わりにもなりません。サブスクリプションのトラブル対処では、両方の設定を同時に変更する必要はありません。

操作・設定実行されるタイミング確認するポイント
Homeで下にスワイプして更新ユーザーが手動で操作今回の表示、対象グループ、把握している項目の変更
Update on Openアプリ起動時に実行設定の有効・無効ではなく、実際の取得結果
On Demand接続条件に応じて実行接続状態を確認。サブスクリプション更新の証拠にはなりません

結論:手動更新の成功を確認してから自動更新を有効にする

まず再現可能な手動更新の成功を確認してから、Update on Openを有効にします。後で問題が起きた際に、URLの無効化と自動更新の未完了を切り分けやすくなり、複数の設定を同時に変更する必要もありません。

更新できないときの対処法:URL・ネットワーク・形式を分けて確認

まず画面に表示されたエラー全文を記録し、以下の3つの原因に分けて確認します。システムの表示言語やリクエストの段階によって文言は異なる場合があります。エラーは手がかりであり、一般的なメッセージだけでサブスクリプションの期限切れと断定することはできません。

エラー:Failed to load subscription

原因と対処:サブスクリプションの読み込みに失敗したことを示す一般的なメッセージです。URLの認証、リクエストの失敗、返された内容の形式などが原因として考えられます。まず利用中のサービスにURLが有効か確認し、ネットワークに到達できるか、返された内容を解析できるかを分けて調べます。

エラー:The request timed out.

原因と対処:制限時間内にリクエストが完了しませんでした。現在のネットワーク、リクエスト経路、サブスクリプションサーバーの応答などが影響している可能性があります。Wi-Fiとモバイル通信でそれぞれ手動更新し、どちらか一方だけで失敗するか比較してください。

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

原因と対処:サブスクリプションURLのホスト名を解決できませんでした。まずドメインがすべて正しくコピーされているか確認し、ネットワークを切り替えて再度試します。ドメインが変更されている場合は、利用中のサービスに現在のURLを確認してください。

原因1:URLが無効、または認証情報が変更された

サービス側で認証情報がリセットされると、古いURLがHomeに残っていても内容を取得できなくなる場合があります。HTTP 401または403が返された場合は、まず認証状態とアクセス制限を確認します。404の場合はパスが変更されていないか確認してください。これらのステータスだけで特定のアカウントの問題と断定せず、自分のサービス情報と照らし合わせて判断します。

原因2:ネットワークに接続できない、またはリクエスト経路に問題がある

Wi-Fiでは失敗し、モバイル通信では成功する場合は、サブスクリプションをすぐに作り直すのではなく、まず2つのネットワーク環境の違いを確認してください。ネットワークを切り替えて結果を比較した後、現在の接続がリクエストに影響していないか調べます。Global RoutingのProxy、Direct、Config、Sceneはルーティングの状態を示します。変更によってネットワークへのアクセスが変わることはありますが、サブスクリプションの認証情報の有効性は変わりません。

原因3:返された内容を解析できない

HTTP 200はリクエストへの成功応答を示すだけで、内容が有効な接続リストであるとは限りません。サーバーからログインページやメンテナンスのお知らせなど、別のテキストが返される場合があります。ブラウザーでページを表示できても、Shadowrocketがサブスクリプションとして解析できるとは限りません。

更新後も変化がない:項目の内容を照合する

サブスクリプションの更新に成功しても、見た目がまったく変わらないことがあります。接続先で内容が変更されていなければ、名前や項目数はそのままです。一方、項目数が同じでも、サーバーアドレス、ポート、認証情報が変更されている可能性があります。リストの長さだけではなく、変更が分かっている項目を選んで確認してください。

表示された現象確認すること次の手順
名前も項目数も変わらない接続先で実際に内容が変更されたか、正しいグループを見ているか変更が分かっている接続の項目を確認
リストは変わったが、接続できない接続先の稼働状況、認証情報、現在のネットワーク接続のトラブル対処に進み、リストの更新を繰り返さない
一部の項目だけ表示されない接続先から返された項目数、項目の形式、パラメーターがそろっているか表示されない項目が現在もサブスクリプションに含まれるか、利用中のサービスに確認
アプリを開いても古い内容のままUpdate on Openの状態と今回のリクエストが完了したか手動で一度更新し、表示されたメッセージを記録

たとえば接続先から特定の接続のポートを443から8443に変更したと案内された場合は、名前だけでなく更新後のポートを確認します。ここに示した数値は確認方法の例であり、実在する接続に推奨するポートではありません。実際の設定値は、利用者がすでに持っている構成に合わせてください。

問い合わせ前に:状況を記録し、認証情報を隠す

上記の比較を行っても解決しない場合は、必要最小限のトラブル記録をまとめます。「内容を取得できない」のか「取得できても解析できない」のかを切り分けられる情報を残しつつ、アクセス可能なサブスクリプションURL全体を漏らさないようにしてください。認証情報はクエリパラメーターだけでなくパスに含まれる場合もあるため、tokenという名前の項目だけを隠しても不十分です。

App Storeで正規アプリを確認