サービス提供元からサブスクリプション URL を取得済みなのに、Shadowrocketで更新に失敗する、追加しても項目が表示されない、または既存の一覧が更新されない場合に確認する手順です。まず現在の設定を残したまま、5つのポイントを順番に確認しましょう。リンクの誤り、サーバーから有効な内容が返されていない、内容は返されたが解析できない、のどれに当たるかを切り分けます。最初からサブスクリプションを削除したり、ネットワーク設定を一括変更したりする必要はありません。
まず確認:サブスクリプションの更新失敗と接続失敗は別
サブスクリプションの更新では、サーバーから一覧を取得し、クライアントで利用できる項目として解析します。一覧に項目があるのに接続できない場合は、その後の接続段階で起きている問題です。一覧が空でも、すべてのサーバーが利用できないとは限りません。また、遅延テストが成功しても、サブスクリプション URL にアクセスできるとは限りません。テスト先とサブスクリプションサーバーが別のアドレスである可能性があるためです。
確認を始める前に、Homeで対象のサブスクリプション名、現在の項目数、今回表示されたメッセージを記録します。利用できる既存項目があれば、そのまま残してください。認証情報を含む設定をバックアップする場合は、自分で管理できる場所にのみ保存します。「削除して追加し直す」ことを最初に行うと、変更前後を比較するための情報が失われます。
| 表示された現象 | 優先して確認すること | この時点では判断できないこと |
|---|---|---|
| 更新時にエラーが出るが、既存項目は残っている | サブスクリプションのリクエストと今回の応答 | 既存項目がすべて無効になった |
| 初回追加後に項目が表示されない | リンクの用途、応答内容、形式 | 接続プロトコルを変更する必要がある |
| 一覧は正常だが、特定の項目に接続できない | その項目のパラメーターと接続先ネットワーク | サブスクリプションの更新が必ず失敗した |
| 更新後に項目数が減った | サービス提供元が実際に返した項目とフィルター条件 | 減った項目はクライアントによって誤って削除された |
手順1:サブスクリプション URL か、Webページの URL かを確認する
サブスクリプション URL はサービス提供元から取得します。アカウントのトップページ、注文ページ、ヘルプページをブラウザーで開けても、インポート可能なサブスクリプション URL とは限りません。通常は項目データではなく、人が読むための HTML ページが返されます。URL に「sub」と書かれているだけでは用途を判断できません。サービス提供元のインポート手順も確認してください。
https://example.com/sub?token=xxxx
以下のアドレスは構造の説明用であり、実際の接続には使えません。https:// はプロトコル部分、example.com はホスト名、/sub はパス、?token=xxxx はクエリパラメーターです。実際の URL ではパスやパラメーター名がまったく異なる場合があります。例に合わせて自分のリンクを書き換えないでください。
- サービス提供元がリンクを掲載しているページに戻り、Webログイン用ではなく、クライアント用のサブスクリプション URL であることを確認します。
- 単一サーバーの共有リンクと、複数の項目を含むサブスクリプション URL を区別してください。どちらも「リンクをコピー」しただけで同じものになるわけではありません。
- 追加場所を確認し直す場合は、Homeから追加画面を開き、Add ServerでTypeがSubscribeになっていることと、URL欄の内容を確認します。
- Configで内容の不明な設定をインポートし、サブスクリプションの確認に代えることは避けてください。ルール設定とサーバーサブスクリプションは役割が異なります。
ポートの情報はリクエスト先を理解するためのもので、変更を勧めるものではありません。元のサブスクリプション URL に別のポートが明記されている場合は、その値を維持してください。また、サブスクリプション URL のポートと、一覧内の各サーバーへの接続ポートは別です。
手順2:コピーした URL を1文字ずつ確認する
よく似た URL でも、1文字違うだけで別のリソースを指すことがあります。よくある原因は、日本語の句点までコピーした、画面に見えている部分しか選択していない、疑問符以降のパラメーターが抜けている、改行を含めて貼り付けた、といったものです。何度も更新を押すより、まず URL 全体を確認するほうが原因の特定に役立ちます。
- 先頭:不要な引用符、説明文、空白が付いていないか、プロトコル部分が元の記載と一致しているかを確認します。
- 中ほど:ホスト名、パス、明示されたポートを確認します。よく似た文字や大文字・小文字に注意してください。パスや認証情報は大文字・小文字を区別する場合があります。
- 末尾:クエリパラメーターがすべて含まれているか、不要な句点、読点、チャット文中の括弧が付いていないかを確認します。
- エンコード:
%2Fや%3Dなどのエンコードを元のまま保ち、手動でデコードしないでください。また、&を勝手に削除しないでください。 - 表示:画面表示を省略するための省略記号が、実際の URL に含まれているとは限りません。一覧の概要だけで判断せず、編集画面の入力欄で確認してください。
コピーし直す際は、リンク元のページにある全体をコピーする機能を使い、対象サブスクリプションのURL欄だけを置き換えて保存します。変更する条件はこの1つに絞り、1回更新して結果を記録してください。グループ名の変更、ルールの変更、プロトコルの切り替えを同時に行うと、どの操作で現象が変わったのか判断しにくくなります。
手順3:サービス提供元の状態と応答内容を確認する
URLが完全でも失敗する場合は、サービス提供元側の状態を確認します。アカウントが有効か、サブスクリプション URL が再発行されていないか、サービスがメンテナンス中でないか、アクセス頻度や接続元に制限がないかを確認してください。クライアントの買い切り購入は、接続サービスの契約とは別です。Shadowrocketを購入しても、無効になったサブスクリプション URL が有効に戻るわけではありません。
更新時のメッセージや利用可能な診断記録に HTTP ステータスコードが含まれている場合は、以下の標準的な意味を参考に分類できます。カード内の英語は HTTP のステータス表現です。更新のたびに同じメッセージが表示されるとは限りません。ステータスコードがない場合は、サーバーから返されたエラーを推測しないでください。
HTTP 401 Unauthorized
原因と対処:リクエストが対象リソースの認証を通過できていません。認証情報が不足している、または無効になっている可能性があります。パラメーター全体を確認し、現在の URL が有効かサービス提供元に問い合わせてください。
HTTP 403 Forbidden
原因と対処:サーバーが今回のアクセスを拒否しています。権限やアクセス方針が関係している可能性があります。ステータスコードと発生時刻を記録して、拒否された理由をサービス提供元に確認してください。この表示だけで契約が期限切れだと判断しないでください。
HTTP 404 Not Found
原因と対処:リクエストされたパスに対応するリソースが見つかりません。URLが途中で切れていないか、パスが変更されていないかを確認し、サービス提供元が案内する最新のサブスクリプション URL と照合してください。
HTTP 429 Too Many Requests
原因と対処:サーバーがリクエストの頻度を制限しています。連続更新を止め、サービス提供元の案内、または応答に含まれる Retry-After に従って待ってから再試行してください。
HTTP 200が返っても、HTTPレベルでリクエストが成功したことを示すだけで、本文が有効なサブスクリプションであるとは限りません。ログインページ、認証ページ、空の本文、対応していない形式のデータでは、項目を生成できない場合があります。ブラウザーで内容を表示できても、そのブラウザーのリクエストに応答があったと分かるだけです。ブラウザーのログイン状態やキャッシュ、クライアントからのリクエスト条件は異なる可能性があります。
要点:まず応答内容を確認し、その後に解析を調べる
URLが正しいのに一覧が空の場合は、Shadowrocketで利用できる空でないサブスクリプション内容が返されているか、サービス提供元に確認してください。ログインページや空の応答を、ルール設定の変更で直そうとしないでください。
手順4:更新タイミングを調整し、対象のサブスクリプションだけを確認する
何度も更新しても無効な認証情報は直らず、頻度制限にかかる可能性があります。サービス提供元が URL を再発行した、項目を変更した、またはサービスを復旧した場合も、変更が反映されたことを確認してから、結果を記録しつつ1回更新してください。繰り返し試すための待ち時間を、根拠なく決めないでください。待機時間の根拠は、サービス提供元の案内またはサーバーの応答に基づくものにします。
- 更新前の状態を記録:Homeで対象のサブスクリプション名を確認し、項目数と、グループが折りたたまれているだけではないかを記録します。検索やフィルターで項目が隠れていないかも確認してください。
- 対象だけを更新:そのサブスクリプションの更新操作を使います。画面にプルダウン更新がある場合は、どの範囲のサブスクリプションが対象になるかを確認し、別グループの結果と取り違えないようにしてください。
- 更新完了を待つ:リクエストが完了する前に何度も実行せず、完了時のメッセージと発生時刻を記録します。
- 結果を確認:同じグループをもう一度確認します。項目数が変わらなくても失敗とは限りません。サービス提供元が前回と同じ内容を返すこともあります。
- 結果の範囲を確認:更新成功が示すのは、サブスクリプションの取得と解析が完了したことだけです。各項目の接続確認まで行われたことを意味しません。
自動更新だけが実行されず、手動更新は完了する場合は、まず自動更新に関する設定と実行条件を確認し、その後にバックグラウンドでの実行タイミングを調べます。手動更新の失敗とバックグラウンド処理の未実行を、同じテスト結果として扱わないでください。また、自動更新の間隔を変えても、サーバーによるアクセス拒否は解決しません。
手順5:条件を1つずつ変えてネットワークの問題を切り分ける
同じサブスクリプション URL でも、接続するネットワークによって結果が異なる場合があります。Wi-Fiの認証ページ、DNSの名前解決エラー、サブスクリプションのドメインへの接続タイムアウト、TLS証明書の問題などは、内容を解析する前にリクエストを失敗させる可能性があります。一覧が空だからといってサーバーのプロトコルをすぐ変更するのではなく、まず端末がネットワークに正常に接続できることを確認してから、サブスクリプションのリクエストを比較してください。
| 比較する操作 | 記録する現象 | 次に行うこと |
|---|---|---|
| 同じ URL のまま、Wi-Fiからモバイル通信に切り替える | Wi-Fiでのみ更新に失敗する | Wi-Fiの認証、DNS、アクセス制限を確認する |
| 別のネットワークでも同じリクエストを1回実行する | どちらでも同じ401または403が返る | 認証情報とサーバーのアクセス方針を優先して確認する |
| システムの日付と時刻を確認する | TLS証明書の有効期間に関するメッセージが表示される | 端末の時刻を修正する。それでも失敗する場合は、サービス提供元に証明書を確認してもらう |
| 既存の接続と自動接続の条件を確認する | 接続を切って、すぐに再接続する | SettingsでOn Demandの条件を確認する |
現在のトンネルによる影響を切り分ける必要がある場合は、先に現在の状態を記録してから、Settings → On Demandで自動接続の条件を確認します。関連する条件を一時的に停止してテストし、完了後に元へ戻してください。証明書エラーを隠すためにTLS証明書の検証を無効にしないでください。接続のセキュリティ境界が変わるだけで、サブスクリプション内容が正しいことの証明にはなりません。
Global RoutingのProxy、Direct、Config、Sceneはトラフィックの処理方法を選ぶもので、サブスクリプションを修復する機能ではありません。サブスクリプション更新リクエストの実際の経路は関連設定の影響を受ける場合があるため、選択中のモードだけを見て接続経路を断定できません。比較する際は現在の設定を記録し、DNS、ルーティング、サブスクリプション URL、サーバーパラメーターを同時に変更しないでください。
要点:再現できる失敗を1回分記録する
同じ URL が特定のネットワークだけで失敗する場合は、まずネットワークを確認します。複数のネットワークで同じアクセス拒否が返る場合は、サービス提供元側の状態を確認します。リクエストが成功しても項目がない場合は、応答内容を確認します。変更する条件は毎回1つに絞ってください。
5つの手順で解決しない場合:問い合わせ用の診断記録をまとめる
サービス提供元に問い合わせる際は、「更新できない」とだけ伝えるより、確認できる現象を具体的に伝えるほうが効果的です。サブスクリプション URL 全体は公開せず、まずは情報を伏せた記録を提出し、相手の安全なサポート手順に沿ってアカウントを確認してください。以下の項目は、初回追加で空になる場合にも、正常に使えていたものが後から更新できなくなった場合にも役立ちます。
- 問題の範囲:初回追加時に空になる、更新時にエラーが出る、一覧はあるが接続できない、のどれか。
- 発生日時:日付、現地時刻、タイムゾーン。これはトラブルの記録であり、アプリの更新日ではありません。
- 操作手順:Homeで対象サブスクリプションを更新したのか、Add ServerでSubscribeを使って追加したのか。
- 確認できた結果:元のメッセージ、表示されたHTTPステータスコード、更新前後の項目数。確認できなかった情報は「表示なし」と明記します。
- ネットワークの比較:Wi-Fiとモバイル通信でそれぞれ試した結果、および接続状態を一時的に変更したかどうか。
- 確認済みの項目:URLが完全か、URLを再発行したか、頻度制限が解除されるまで待ったか、既存項目が残っているか。
有効なサブスクリプションが復旧し、項目が正常に表示されるようになってから、個別の接続問題を調べてください。インポート手順を確認する場合はサブスクリプションガイドを、初期設定の場合は入門ガイドを参照し、操作の順序を確認してください。