Shadowrocketのサブスクリプションを更新できないときの対処法|手動更新・起動時の自動更新・原因の切り分け

手動更新と起動時の自動更新の設定場所を解説し、リンク切れ、ネットワーク、形式の認識エラーの順に、更新できない原因を確認します。

この記事のポイント

利用中のサービスとサブスクリプションがあり、Shadowrocketのリストを管理する方向けの手順です。既存の項目は残したまま、まずHomeで手動更新し、次にSettingsで自動更新の設定を確認します。失敗した場合は、リンク、ネットワーク、取得した内容の形式の順に確認してください。更新できた後は接続テストも行い、リストの更新とサーバーへの接続を混同しないようにしましょう。

まず確認:サブスクリプションの更新失敗か、接続失敗か

Shadowrocketのサブスクリプション更新とは、ユーザーが用意したURLからサーバー情報を取得し、Homeのリストに反映する処理です。アプリ自体のアップデートや、特定のサーバーへの接続とは異なります。リストに以前の項目が表示されていても、端末に保存されたデータが残っているだけで、今回の更新が成功したとは限りません。

まず、どの段階で失敗したかを記録します。更新直後にエラーが表示されたのか、待機後にタイムアウトしたのか、更新完了と表示されたのに項目が増えなかったのかを確認してください。更新自体は完了し、特定のサーバーに接続できない場合は、接続テストで原因を調べます。サブスクリプションを何度も削除して追加し直す必要はありません。

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

この流れを理解すると、よくある2つの状況を区別できます。以前のサーバーには接続できても、サブスクリプションURLはすでに無効になっている場合があります。一方、更新は正常に完了しても、リスト内の特定のサーバーが一時的に利用できないこともあります。前者はリストの取得段階、後者はリストを使った後に起きる問題であり、両者は矛盾しません。

3項目
確認する順番:リンク、ネットワーク、形式
2つのこと
サブスクリプションの更新とサーバーへの接続は別々に確認
443
HTTPS URLでポートが明示されていない場合のデフォルトポート

手動更新:Homeから始め、既存のサブスクリプションを残す

まず手動で1回更新し、結果を確認しましょう。最初に「再追加」するのは避けてください。同じURLを重複して読み込むと、Homeに複数のグループができ、状況を判断しにくくなることがあります。URLを入力し直す必要がある場合は、新しいものを追加するのではなく、既存のサブスクリプションを確認して編集しましょう。

  1. サブスクリプションを見つける

    Homeを開き、更新するサブスクリプショングループを確認します。グループ名と現在の項目数を記録し、個別に追加したサーバーをサブスクリプションと取り違えないようにしてください。

  2. URLを確認する

    対象のサブスクリプションの編集画面を開き、URLがサービス提供元から案内されたものと一致するか確認します。初回の読み込みは Home → 右上の「+」→ Type → Subscribe の順です。すでにサブスクリプションがある場合、もう一つ作成する必要はありません。

  3. 下に引いて更新する

    Homeに戻り、リストの上部を下に引いて更新を開始し、処理が終わるまで待ちます。複数のサブスクリプションがある場合は、グループごとの結果を確認してください。1つのグループが成功しても、すべて更新できたとは限りません。

  4. 結果を確認する

    成功または失敗の表示を記録してから、対象のグループを確認します。項目数が変わらないのは、配信元の内容に変更がなかっただけかもしれません。リクエストと解析が完了したかどうかは、更新時の表示もあわせて確認してください。

起動時の自動更新:Settingsで設定する

自動更新を使うと、日々の手動操作を減らせますが、無効なリンクは修復されません。まず手動更新が成功することを確認してから、起動時の更新を有効にしましょう。Settings → Subscribeを開き、Update On Openをオンにします。アプリの更新により、表示名や場所が変わる場合があります。実際の画面で確認してください。

この設定は、アプリを開いたときにサブスクリプションを更新するものです。一定間隔で常時バックグラウンド更新する機能ではありません。アプリに戻った後、更新されたか判断できない場合は、スイッチを何度も切り替えるより、Homeで手動更新して結果を確認する方が確実です。

自動更新は失敗するのに手動更新は成功する場合は、2回の操作時のネットワーク環境と接続状態を比べてください。アプリを開いた瞬間に、Wi-Fiとモバイル通信が切り替わっていた可能性もあります。1回の違いだけで設定が機能していないとは判断できません。同じネットワークで再度確認しましょう。

ステップ1:サブスクリプションURLの無効化や権限変更を確認する

まず、利用中のサービス提供元にサブスクリプションURLが有効か確認してください。WebサイトのログインURLをサブスクリプションURLの代わりに使ったり、記憶だけを頼りにクエリパラメーターを削除したりしないでください。長いURLには、アカウント識別情報、アクセス認証情報、出力形式の指定などが含まれている場合があります。パラメーターが1つ欠けるだけで、異なる結果になることがあります。

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

上記は実際の読み込みには使えない例です。実際に確認するときは、端末上でURLと入手元を一文字ずつ照合してください。特に、先頭のプロトコル、ドメイン、パス、疑問符以降のパラメーター、コピー時に混入した空白や改行を確認します。実際のURLを公開ページや不明な変換ツールに入力しないでください。

ブラウザーで同じドメインのトップページを開けても、サブスクリプションAPIが有効とは限りません。トップページとサブスクリプションのパスで、異なる権限確認が行われることがあります。ログインページに転送されても、サーバーリストを取得できたことにはなりません。ドメインにアクセスできるかではなく、サブスクリプションURL全体への応答を確認してください。

ステップ2:現在のネットワークとリクエストのタイムアウトを確認する

URLが有効と確認できたら、端末からサブスクリプションのホストに安定してアクセスできるか調べます。まずWi-FiのWeb認証を完了し、一般のWebページが正常に読み込めることを確認してから、Wi-Fiとモバイル通信を比較してください。URL、モード、ネットワークを同時に変更すると比較できなくなるため、条件は一度に1つだけ変えます。

エラー:Failed to load subscription

原因と対処:サブスクリプションを読み込めなかったことを示すメッセージですが、リンク、ネットワーク、内容の解析のどれが原因かは特定できません。まずURLと権限を確認し、別のネットワークで手動更新してください。より詳しいエラー情報も記録しておきましょう。

エラー:The request timed out.

原因と対処:許容時間内にリクエストが完了しなかった状態です。ネットワーク経路やサブスクリプション側の応答に問題がある可能性があります。インターネットに接続されていることを確認し、Wi-Fiまたはモバイル通信に切り替えて試してください。連続更新で待ち時間を代用しないでください。

エラー:Could not connect to the server.

原因と対処:リクエストが接続先のホストに接続できていません。URL、ポート、サーバーへの到達性に問題がある可能性があります。URLのホストと明示されたポートを確認し、サービス提供元にAPIの状態を問い合わせてください。

上記は、トラブルシューティング時に表示されることがある英語のメッセージです。システム言語やエラーの発生元によって表示は異なります。特定の文言に当てはめようとして、エラーの詳細を見落とさないでください。証明書に関するメッセージが表示された場合は、端末の日付と時刻を確認し、サービス提供元に証明書を確認してもらいます。証明書の検証を無効にして回避しないでください。

  1. システム設定でネットワークに接続されていることを確認します。Web認証が必要なWi-Fiでは、先に認証を完了してください。
  2. Shadowrocketの現在の接続状態とGlobal Routingの選択内容を記録し、まず設定を変えずに更新します。
  3. Wi-Fiまたはモバイル通信のどちらか一方だけを切り替え、同じサブスクリプションを更新して結果を比較します。
  4. 現在の接続がリクエストに影響していると思われる場合は、条件を制御できる状況で接続を切って再度試します。On Demandが有効なら、接続が再び開始されないか確認してください。

Global RoutingのProxy、Direct、Config、Sceneは、通信全体の処理方法を選ぶ設定であり、「サブスクリプションを修復」するボタンではありません。1つのURLを更新するために、通信全体の処理方法を長期間強制的に変更しないでください。動作を確認せずにDIRECTルールを追加するのも避けましょう。サブスクリプションリクエストの実際の経路は、現在の接続と設定を踏まえて判断してください。

ステップ3:取得内容と形式の認識エラーを確認する

ネットワークリクエストが完了しても、読み込み可能な項目がない場合があります。HTTP 200はHTTPレベルでリクエストが成功したことを示すだけです。応答本文がログインページ、メンテナンスページ、エラー説明だったり、現在の読み込み方法で認識できないデータだったりすることがあります。この場合、ネットワークを切り替えても解決しない可能性があります。

Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardはプロトコル名です。Subscribeはサブスクリプションの読み込みタイプを指します。同じプロトコル名が記載されていても、2つのサービスのサブスクリプション形式が同一とは限りません。プロトコル、サブスクリプション形式、完全な設定ファイルの構造はそれぞれ異なるものです。

更新後の確認:項目をテストし、重複を整理する

更新に成功したら、まず対象のグループを確認し、その中から1つの項目を選んで接続をテストします。Connectivity Testでは、テスト時の到達性や遅延を確認できますが、帯域幅を測定するものではありません。表示された数値だけで、すべてのWebサイトやサービスが正常に使えるとは判断できません。

  1. 更新結果を確認:対象グループの名前と項目の変化を確認します。サービス提供元の内容に変更がなければ、項目数や名前が変わらないことも正常な結果として考えられます。
  2. 接続を個別にテスト:既存の項目を選び、Connectivity Testを実行した後、アクセスしたいページを実際に開いてみます。リストの更新成功とページへのアクセス成功は、別々に記録してください。
  3. 重複した読み込み元を確認:同じサブスクリプションを複数回読み込んだ場合は、正しいURLが設定されているグループを確認してから、不要なグループを削除します。サーバーの表示名だけで重複を判断しないでください。
  4. メンテナンス記録を残す:今回変更したのがURL、ネットワーク、自動更新設定のどれかを記録します。同じ現象が再発したとき、該当する箇所からすぐに確認できます。

それでも失敗する場合は、ネットワークの種類、発生時刻、エラー全文、試した手順を利用中のサービス提供元に伝え、非公開のサポート窓口でサブスクリプションの権限を確認してください。公開するスクリーンショットでは認証情報を隠します。「更新できない」とだけ伝えるより、URL、APIの応答、形式のどこに問題があるかを特定しやすくなります。

Shadowrocketは買い切りのクローズドソースの商用アプリです。主にiPhoneとiPadで利用でき、入手先はApp Storeのみです。システム要件はApp Storeのページに記載された内容をご確認ください。アプリの購入 ≠ サーバー利用プラン。アプリを購入しても、サーバーやサブスクリプションが自動的に付属するわけではありません。このサイトでは、ユーザーがすでに利用しているサブスクリプションの管理方法を解説しており、サーバーやサブスクリプションの提供、販売、推奨はしていません。

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