この記事の要点

Shadowrocketのサブスクリプションが空でも、アプリを再購入する必要があるとは限りません。利用中のサービスとサブスクリプションがある方に向けて、「リンク・応答・解析・更新経路」の順に確認し、リクエストの失敗、空の応答、一覧の表示問題を切り分けます。現在の設定を保ちながら修復結果を確かめる方法も紹介します。

まず確認:データを取得できていないのか、表示されていないのか

サブスクリプションの更新には、URLから応答を取得する処理と、応答内の有効な項目を解析してHomeに表示する処理があります。リクエストに失敗しても、以前の項目が残る場合があります。リクエストが成功していても、応答がログインページやエラー説明、空の内容であることがあります。そのため、一覧が表示されているからといって直前の更新が成功したとは限らず、一覧が空でもネットワーク全体が使えないとは限りません。

リンクを読み込む接続を確立する応答を受け取る内容を解析する項目を表示する
  1. 初回の読み込みで空になる:サブスクリプションURLではなく、アカウントページやConfigの設定URLを読み込んでいないか確認し、サービス提供元から実際に利用可能な項目が返されているか確かめます。
  2. 項目があったのに更新に失敗する:エラーメッセージと発生時刻を記録し、古い項目は残しておきます。サブスクリプション全体を先に削除しないでください。
  3. 更新完了と表示されるのに項目が見つからない:Homeに戻り、該当するサブスクリプショングループを展開して検索条件を解除します。別のグループを見ていないかも確認してください。
  4. 項目は表示されるが接続できない:これは接続に関する別の診断が必要な状態です。サブスクリプションURLにアクセスできても、各サーバーアドレスに接続できるとは限りません。

リンクを確認:パラメータを残し、読み込む対象を見分ける

サービス提供元のアカウントページから、Shadowrocket用または互換形式と明記されたURLをコピーし直します。ブラウザのアドレスバーにあるアカウントページのURLをコピーしたり、「タップして読み込む」ためのウェブページを実際のサブスクリプションURLとして使ったりしないでください。形式が複数ある場合は、Shadowrocket向けの形式に関するサービス提供元の案内に従います。

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

上記は構造を示すためのダミー値であり、実際に使えるサブスクリプションではありません。URLには通常、プロトコル、ホスト名、パス、クエリパラメータが含まれます。tokenがアクセス認証情報として使われる場合もあります。コピー時に1文字抜ける、改行が混ざる、半角記号が全角記号に置き換わると、リクエストが無効になることがあります。

Homeに戻り、該当するサブスクリプションのURLを確認します。必要であればコピーし直したURLに置き換え、手動で更新してください。確認のために新しいサブスクリプションを作成する場合は、テスト用と分かる名前を付けます。新しい一覧と接続を確認できるまで、元の項目は残しておきます。

応答を確認:ステータスコードと応答内容から分かること

エラーの詳細やサービス提供元の診断記録にHTTPステータスコードが含まれている場合は、以下を手がかりに原因を絞り込みます。ここに示すのは標準的なHTTPステータスの意味であり、すべてのバージョンで画面に同じ文字列が表示されるとは限りません。ステータスコードがない場合は、元のメッセージを記録し、「空」という表示だけから特定のエラーだと決めつけないでください。

401 / 403
認証情報、利用権限、アクセス制限を確認
429
更新頻度とレート制限の表示を確認
200
応答本文が有効なサブスクリプションか確認

エラー:401 Unauthorized

原因と対処:有効な認証情報がリクエストに含まれていないか、現在の認証情報が無効になっています。サービス提供元のアカウントページでサブスクリプションの状態と現在のURLを確認し、URLを更新してから再試行してください。

エラー:403 Forbidden

原因と対処:サーバーが現在のリクエストを拒否しています。アカウント権限、アクセス元の制限、アクセス保護などが原因の可能性があります。拒否条件をサービス提供元に確認し、このコードだけを根拠にアプリの不具合と判断しないでください。

エラー:404 Not Found

原因と対処:リクエスト先のパスが存在しないか、アクセスできないリソースをサーバーがこのステータスで隠している可能性があります。URL全体をコピーし直し、ドメイン、パス、リンクが差し替えられていないか確認してください。

エラー:429 Too Many Requests

原因と対処:更新リクエストがレート制限に達しています。連続更新をやめ、応答にRetry-Afterが含まれていれば指定された時間だけ待ちます。記載がなければ、サービス提供元の案内に従って再試行してください。

200 OKが返っていても、本文がログインを求めるHTMLページ、アカウント状態の説明、項目のないサブスクリプション内容である場合があります。ブラウザでアカウントページを開けるのは、ブラウザのセッションでそのページにアクセスできることを示すだけです。ブラウザに保存されたログイン状態が、アプリからのサブスクリプションリクエストに自動的に引き継がれるわけではありません。

要点:応答を受け取ったら、ネットワークを変更する前に内容を確認

リクエストがサービス提供元に届いているのに、ログインページや空の一覧が返される場合は、まずURL、アカウントの状態、出力形式を見直します。ネットワークを何度切り替えても、誤った応答内容が有効なサブスクリプションに変わることはありません。

ネットワークを確認:更新条件は一度に一つだけ変更

サブスクリプションURLへのアクセス経路と、項目への接続経路は異なる場合があります。既存の項目には接続できても、サブスクリプションのドメインを一時的に名前解決できない、またはアクセスできないことはあり得ます。まず現在のWi-Fiでウェブ認証が必要か確認し、次にモバイル通信と比較します。同じテスト中にネットワーク、URL、設定をまとめて変更しないでください。

  1. 現在の状態を記録:使用中のネットワーク、接続のオン・オフ、Global Routingの選択内容、手動更新時に表示されたメッセージ全文を記録します。
  2. ネットワークを切り替えて確認:モバイルデータ通信を利用できることを確認したうえで、Wi-Fiとモバイル通信を切り替え、それぞれ手動更新を1回行います。片方だけ失敗する場合は、そのネットワークの認証、DNS、アクセス制限を優先して確認します。
  3. 更新経路を確認:Settings → SubscribeでUpdate via Proxyを確認します。利用可能な接続があり、サブスクリプションURLへのアクセスにプロキシが必要な場合に限り、この項目を有効にしてテストしてください。
  4. 変更は一つずつ試す:一度のテストで変更する条件は一つだけにします。成功または失敗を記録してから、その設定を残すか判断しましょう。どの変更が影響したか分からなくなるのを防げます。

Global RoutingのProxy、Direct、Config、Sceneは、通信経路の選択肢であり、4種類のサブスクリプション形式ではありません。Proxyに切り替えることを万能な解決策と考えないでください。サブスクリプションの問題を調べる際は、更新専用の設定と現在利用できる接続の両方を確認します。システムにVPNの状態が表示されているかだけでは判断できません。

証明書の検証エラーが出た場合は、まず端末の日付と時刻を確認し、証明書の有効期限とドメインの一致をサービス提供元に確認してもらいます。問題を隠すために証明書の検証を無効にしないでください。接続タイムアウトの場合は、ドメインの名前解決、接続の確立、応答待ちなど、どの段階で発生したかを切り分けます。「タイムアウト」という言葉だけでアカウントの期限切れと判断することはできません。

更新に成功しても空の場合:形式、グループ、更新のタイミングを確認

応答を取得できても項目がない場合は、返された内容と解析結果を確認します。サブスクリプションには複数のエンコード方式や構成形式があります。テキストとして開けるからといって、その内容がクライアントの想定に合っているとは限りません。サービス提供元が別形式の設定を出力している、エンコードが途中で切れている、本文に状態説明しか含まれていない場合などは、有効な一覧が作成されないことがあります。

手動更新は、操作とそのときの結果を対応させて確認できるため、診断の基準になります。自動更新は、アプリの動作状態、システムのスケジュール、更新時のネットワーク環境に左右されます。バックグラウンドで更新されたことを確認できないからといって、リンクが無効だとは限りません。On Demandは条件に応じて接続を確立する機能であり、サブスクリプションの定期更新を設定する項目ではありません。

要点:手動更新が復旧したら、自動更新の動作を確認

まず、同じURLを安定したネットワーク環境で手動更新し、実際の項目を確認します。この手順が成功してから、自動更新の設定やバックグラウンドで実行されるタイミングを調べましょう。

よくある質問:古い内容を残して、不要な操作を防ぐ

更新に失敗したら、サブスクリプションを削除して読み込み直すべきですか?

すぐに削除しないでください。Homeに表示されているグループと項目を記録し、URLとエラーメッセージを確認します。再読み込みで検証する場合も元の項目は残し、新しい項目が更新でき、接続も確認できてから重複分を整理してください。

ブラウザでは開けるのに、Shadowrocketでは空になるのはなぜですか?

ブラウザで開いた内容がサブスクリプション本文なのか、ログイン後のウェブページなのかを確認してください。ブラウザのセッションなしで互換性のある内容を返すURLか、サービス提供元に確認します。リダイレクト、アクセス保護、出力形式の違いがないかも調べてください。

Update via Proxyを有効にしたら更新できなくなった場合は?

まず既存の項目に正常に接続できるか確認し、設定を有効にした場合と無効にした場合の結果を比較します。プロキシ接続自体が使えない場合は元の設定に戻し、サブスクリプションURLにアクセスできると確認済みのネットワークで試してください。

Shadowrocketを再購入すればサブスクリプションの問題は解決しますか?

リンク切れ、サーバー側の拒否、形式の誤りは、再購入しても解決しません。アプリの買い切り購入と接続サービスの契約は別々に管理されます。購入を繰り返すのではなく、エラーが発生している段階を特定して確認してください。

調査に必要な情報を伝え、復旧を確認する

解決しない場合は、「読み込めない」とだけ伝えるのではなく、原因を特定できる情報をサービス提供元に伝えてください。サーバーから互換性のある完全な内容が返されていると確認できたにもかかわらず、アプリで解析できない場合は、最小限の再現手順をまとめ、クライアント側の動作を詳しく確認できるようにします。

修復後、Homeで対象のサブスクリプションを手動更新します。エラーが出ないこと、グループ内に想定した項目が表示されることを確認してから、そのうち1項目で接続をテストしてください。最後にテスト用の項目を整理し、不要な一時設定を元に戻します。更新の成功と接続の成功は別々に確認する必要があります。