この記事は、ご自身でサービス提供元のサブスクリプションを利用している方を対象としています。Shadowrocketのサブスクリプション更新では、応答の取得、内容の判別、サーバー項目の生成が順に行われます。どの段階で失敗しても、一覧に変化がないように見えることがあります。既存の記録を残したまま、URL、アカウントの状態、リクエスト経路、内容の形式の順に確認すると、「内容を取得できていない」のか「取得した内容を解析できない」のかを切り分けられます。利用できる設定をむやみに削除せずに済みます。
1. 一覧が空・更新失敗・接続失敗を切り分ける
サブスクリプションURLは、複数のサーバー設定を取得するためのもので、個々のサーバーの接続先とは異なります。更新に成功しても、すべてのサーバーに接続できるとは限りません。反対に、以前からあるサーバーが使えても、現在サブスクリプションのインターフェースにアクセスできるとは限りません。確認を始める前に、Homeで該当するサブスクリプショングループを開き、グループ全体に項目がないのか、項目はあるもののConnectivity Testで有効な結果が得られないのかを確認してください。
- 状況を記録する:エラーの全文、発生時刻、使用中のネットワーク、更新後に項目が変化したかを記録してください。「使えない」だけではなく、具体的な状況を残します。
- 既存の記録を残す:元のサブスクリプション、Config、接続可能なサーバーは、まず削除しないでください。画面を保存する場合は、サブスクリプションURL、パスワード、tokenを隠してください。
- 表示状態を確認する:Homeで該当するグループが展開されていることを確認します。検索やフィルターを使用している場合は、条件を解除してから、本当に一覧が空かどうかを判断してください。
- 確認対象を絞る:一度に確認するサブスクリプションは1つにします。対象のグループだけを更新して結果を確認し、ほかのグループで成功したことを、このサブスクリプションの検証結果として扱わないでください。
項目が表示されていて接続がタイムアウトするだけの場合は、サブスクリプションのエンコードではなく、サーバーのパラメーターと接続性を確認してください。以降の手順は、サブスクリプションの取得または解析に失敗する場合を対象としています。
2. URLの形式・完全性・読み込み先を確認する
ご自身のサービス提供元のサブスクリプション管理ページからURL全体をコピーし、Shadowrocketに保存されているURLと照合してください。アカウントのログインページ、注文ページ、ブラウザーのアドレスバーに表示された管理ページのURLを、サブスクリプションのインターフェースの代わりに使わないでください。tokenを含むクエリパラメーターは通常、認証に使われます。文字が1つ欠けたり、コピー時に改行が混ざったりするだけでも、リクエスト結果が変わることがあります。
https://example.com/sub?token=xxxx
上記はURLの構造を説明するための架空の例であり、サーバー項目は取得できません。https://はプロトコル部分、example.comはホスト名の例、/subはパスの例です。疑問符以降はクエリパラメーターです。実際のパスとパラメーターはサービス提供元が案内したとおりに使用し、例に合わせて書き換えないでください。
- 先頭と末尾を確認する:コピー時に付いた空白、引用符、説明文を取り除き、末尾のパラメーターまで含まれていることを確認してください。
- 文字を確認する:全角の句読点は、半角の
:、?、&の代わりにはなりません。URL内の%エスケープシーケンスを、むやみにデコードまたは再エンコードしないでください。 - 内容の種類を確認する:単一サーバーの共有情報とサブスクリプションURLは、入力する内容の種類が異なります。複数のサーバー共有情報を連結しても、有効なサブスクリプションのインターフェースになるとは限りません。
- 読み込み先を確認する:Homeではサブスクリプションを追加します。Configは設定ファイルやルールの管理に使うため、任意のサブスクリプションURLをConfigファイルのURLとして読み込まないでください。
- 認証情報の変更を確認する:サブスクリプションURLやtokenをリセットした場合、アプリ内の古いURLが自動的に新しいURLへ切り替わることはありません。保存されている値を改めて確認してください。
3. サービス提供元の状態とHTTP応答を確認する
URLが完全でも、インターフェースからサーバー設定が返されるとは限りません。アカウントの有効期限、アクセス権の変更、インターフェースのメンテナンス、リクエスト頻度の制限などにより、同じURLでも応答が変わることがあります。まずご自身のアカウントページで、サブスクリプションが有効か、利用可能な項目があるか、URLがリセットされていないかを確認してください。これらの状態はサービス提供元に確認が必要です。クライアント側では、サーバー側の権限やデータを修復できません。
以下は、リクエストログやサーバー診断で表示されることのあるHTTPステータスの原文です。Shadowrocketの画面に表示される文言をそのまま示すものではありません。アプリにステータスコードが表示されていない場合、「一覧が空」というだけで、特定のステータスが原因だと判断しないでください。
エラー:401 Unauthorized
原因と対処:インターフェースが現在の認証情報を受け付けていません。サブスクリプションのtokenが不足していないか、無効になっていないか、リセットされていないか確認し、アカウントページに記載された最新のURLで更新してください。
エラー:403 Forbidden
原因と対処:サーバーが今回のアクセスを拒否しています。アカウント権限、アクセス元の制限、インターフェースの要件をサービス提供元に確認してください。サーバーの接続パラメーターを繰り返し変更して対処しようとしないでください。
エラー:429 Too Many Requests
原因と対処:リクエスト頻度が制限に達しています。連続更新を中止し、サーバーの案内する待ち時間またはサービス提供元の説明に従って再試行してください。複数のデバイスで自動更新が同時に実行されていないかも確認します。
判断のポイント:解析より先にインターフェースの応答を直す
認証エラーやアクセス制限のページが返されていると確認できた場合は、まずサブスクリプションのインターフェースから有効な応答が返る状態に戻してください。プロトコルの切り替え、ルールの変更、同じURLの再読み込みでは、サーバーから返されなかったデータを補えません。
4. 更新のタイミングとネットワーク経路を分けて確認する
サブスクリプションの更新にもネットワークリクエストが必要で、ドメイン名の解決、接続、HTTPSの検証が行われます。通常のWebページを開けても、サブスクリプションのホストにアクセスできるとは限りません。ブラウザーではアカウントにログイン済みの場合、Cookieによって内容が表示されることもあります。一方、アプリがサブスクリプションURLにリクエストを送る際は同じログイン状態を利用できるとは限らないため、「ブラウザーで開ける」ことはあくまで手掛かりです。
- 先にネットワークへ接続する:現在のWi-FiでWeb認証が必要な場合は、先に認証を完了してからHomeに戻り、手動で更新してください。認証ページから返されるHTMLは、サブスクリプションの内容として解析できません。
- 更新結果を1回記録する:Homeで下に引いて更新し、リクエストが完了するまで待ってから結果を記録してください。処理中に続けて操作しないでください。
- 変更する条件は1つにする:可能であれば、同じURLをWi-Fiとモバイル通信でそれぞれテストします。ほかのサブスクリプション設定は変えず、現在のネットワークが関係しているかを確認してください。
- 更新経路を確認する:Settings → Subscribeを開き、更新に関する項目を確認してください。現在のアプリにUpdate via Proxyが表示される場合は、その状態を記録し、選択されている経路が実際に利用できることを確認します。初期値はアプリの現在の表示に従ってください。
- 利用可能な接続を用意してからプロキシ経由で試す:プロキシ経由で更新する場合は、まず既存のサーバーに接続し、利用可能なことを確認してからサブスクリプションを更新してください。一覧が空で、ほかに利用できるサーバーもない状態では、プロキシ経由の更新を有効にしても接続は確立できません。
- 自動接続による影響を確認する:Settings → On Demandを開き、テスト中のネットワークで接続が自動的に再開される設定になっていないか確認します。元の設定を記録し、自動再接続後の経路を未接続時の状態と取り違えないようにしてください。テスト後は元の設定に戻します。
HomeのGlobal Routingはトラフィックの処理方法を決めるもので、Proxy、Direct、Config、Sceneはサブスクリプションの4種類の形式ではありません。特に、Proxyが選択されているだけで、サブスクリプションのリクエストがプロキシ経由だと判断しないでください。サブスクリプションの更新設定、接続状態、実際のリクエスト結果は、それぞれ個別に確認する必要があります。Config内のルールでも、サーバーから空の応答が返る問題は解決できません。
5. 取得後に応答内容とエンコードを確認する
HTTPリクエストに成功しても、サブスクリプションの解析に成功したとは限りません。ステータスが200 OKでも、応答本文がログインページ、メンテナンスの案内、空のテキスト、または現在の読み込み先で使えない形式の場合があります。その場合は、同じダウンロードを繰り返すのではなく、サービス提供元が案内する出力形式を確認してください。
| 応答の状態 | 考えられる内容 | 次に確認すること |
|---|---|---|
| 本文にHTMLページの構造が含まれている | ログインページ、ネットワーク認証ページ、またはインターフェースのエラーページ | ブラウザーのログイン状態に依存せず、サブスクリプションのインターフェースから設定が返されることを確認する |
| 応答本文が空 | インターフェースから項目が返されていない、またはアカウントに現在利用可能なデータがない | 項目数とインターフェースの状態をサービス提供元に確認する |
| Base64テキストが返される | エンコードされたサーバー共有情報の集合である可能性がある | データが完全でエンコードが有効であること、デコード結果が対応するサブスクリプションの内容であることを確認する |
| 一部の項目だけが表示される | 一部の項目でフィールドが欠けている、形式に互換性がない、またはフィルターで除外されている | まずフィルターを解除し、欠けている項目の出力形式をサービス提供元に確認する |
Base64はエンコード方式であり、暗号化ではありません。また、有効なサブスクリプションであることを保証するものでもありません。エンコードされたテキストが途中で切れている、説明文が混ざっている、デコード後もエラーページのままである、といった場合は解析に失敗することがあります。サブスクリプション全体をオンラインのデコードツールにアップロードしないでください。サービス提供元に元の応答とエンコードの完全性を確認してもらい、Shadowrocketに対応する形式で出力してもらってください。
- 元の内容を保つ:手動で改行を追加したり、不要に見える記号を削除したり、複数の応答を連結して再読み込みしたりしないでください。
- 形式とフィールドを確認する:Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardはそれぞれ異なるプロトコルです。名前を書き換えても、パラメーター一式を別のプロトコルに変更することはできません。
- 項目の欠落と接続不能を区別する:サーバーアドレス、ポート、認証情報などのフィールドが欠けていると、解析に影響する場合があります。フィールドがそろっているのにConnectivity Testに失敗する場合は、実際の接続条件を引き続き確認してください。
- 出力の用途を確認する:サービス提供元に複数のエクスポート方法がある場合は、Shadowrocket向けと明記されたサブスクリプション出力を選び、任意の設定ファイルをサーバー一覧として読み込まないでください。
6. よくある質問と復旧後の確認
URLをコピーし直しても一覧が空です。元のサブスクリプションを削除すべきですか?
まず削除しないでください。元のグループを残したまま、新しいURLが正しく保存されていることを確認し、そのサブスクリプションだけを更新してエラーを確認します。削除すると既存の記録が失われるだけで、インターフェースの認証、ネットワークのタイムアウト、内容の形式に関する問題は解決しません。
ブラウザーでは内容が見えるのに、アプリで解析に失敗するのはなぜですか?
まず、ブラウザーに表示されているのが生の設定データなのか、アカウントのWebページなのかを確認してください。ブラウザーではログインCookieが使われたり、リダイレクト後に管理ページが表示されたりする場合があります。サブスクリプションURLへの直接の応答内容と、追加認証が必要かどうかをサービス提供元に確認してください。
接続スイッチをオンにしてから更新すれば、必ず直りますか?
必ず直るとは限りません。既存の接続が利用可能で、更新経路も現在の設定に合っている必要があります。tokenの失効や応答形式の誤りが原因なら、経路を変えても解決しません。まずSettings → Subscribeの更新設定を記録し、条件を絞って1回テストしてください。
一覧が復旧したら、ほかに何を確認すればよいですか?
Homeで対象のグループに項目が表示されていることを確認し、その中からサーバーを1つ選んでConnectivity Testを実行したうえで、実際のアクセスも確認してください。トラブル対処のために一時変更したOn Demandなどの設定は元に戻します。一部の項目だけしか復旧しない場合は、フィルターとサービス提供元の出力を引き続き確認してください。
サービス提供元に問い合わせる際は、発生時刻、使用したネットワーク、更新時にプロキシを経由したか、エラーの全文、「完全に空」か「一部の項目が欠けている」かを伝えると確認に役立ちます。token、パスワード、サーバーの認証情報全体は送らないでください。当サイトではサーバーやサブスクリプションの提供・販売・推奨は行っていません。サブスクリプションの有効性とサーバー側の出力は、ご利用のサービス提供元にご確認ください。
完了の目安:取得・解析・接続を個別に確認する
更新が完了し、グループに項目が表示されれば、取得と解析は復旧しています。その後、Connectivity Testと実際のアクセスで接続を確認してください。この3項目の結果を分けて記録しておくと、次回問題が起きたときに、失敗した段階から確認を再開できます。