この記事は、すでに利用するサービスとサブスクリプションをお持ちの方向けです。まずHomeで手動更新して結果を確認し、その後、アプリ起動時の自動更新を設定します。更新に失敗した場合は、リンク、ネットワーク、HTTP応答、内容の形式を順に確認してください。サブスクリプションは利用中のサービス提供元から入手します。更新に成功したことは、サブスクリプションの内容を読み込めたことを示すだけで、各接続先が利用可能とは限りません。
サブスクリプションの更新と接続の違い
Shadowrocketのサブスクリプションは、アドレスからサーバー設定を読み込む仕組みです。更新すると、そのアドレスに再度リクエストを送り、返された内容に応じて該当するグループを更新します。アプリ自体のアップデートやConfigファイルの更新とは異なります。個別に追加したサーバー設定にはサブスクリプション元がないため、下に引っ張って更新しても、サービス提供元から新しいアドレス、ポート、認証情報が取得されることはありません。
各段階で起こる問題は異なります。アドレスに誤りがあればアクセスできず、ネットワークに問題があればリクエストがタイムアウトすることがあります。サーバーが正常に応答しても、ログインページが返された場合はサブスクリプションとして解析できません。そのため、Homeに以前の項目が残っているだけでは、今回の更新が成功したとは判断できません。更新時の表示、サブスクリプショングループの内容、サービス提供元から案内された変更点をあわせて確認してください。
Homeで手動更新する手順
まず手動更新を一度実行して、結果を確認してから自動更新を有効にしましょう。こうすれば、更新の操作が反映されていないのか、サブスクリプションのリクエスト自体に失敗したのかを切り分けられます。すでにサブスクリプショングループがある場合は、2つ目の手順から始めてください。同じアドレスを重複して追加する必要はありません。
-
サブスクリプションを確認する
Homeで該当するサブスクリプショングループがあるか確認します。初めて追加する場合は、Home → 右上の「+」→ Type → Subscribeの順に進み、利用中のサービス提供元から入手したサブスクリプションアドレスを省略せず入力します。保存したらHomeに戻ります。
-
下に引っ張って更新する
Homeのリスト上部を下に引っ張って更新します。更新が終わるまでアプリを前面に表示し、続けて何度も引っ張ったり、リクエスト中にネットワークを切り替えたりしないでください。
-
結果を確認する
更新完了時の表示を確認し、対象のグループを確認します。サービス提供元から項目の追加、削除、名称変更が案内されている場合は、該当項目を照合してください。リモート側に変更がなければ、更新に成功してもリストに変化がないことがあります。
-
接続を個別にテストする
更新に成功したことを確認してから、使用するサーバーを選び、実際に接続できるかテストします。「サブスクリプションを更新できたか」と「サーバーに接続できたか」を別々に記録し、接続の失敗をサブスクリプションの無効化と混同しないようにしましょう。
複数のサブスクリプションがある場合は、表示がどのグループに対応しているか確認してください。あるグループの更新成功を、ほかのグループも更新された根拠にしてはいけません。更新によってサービス提供元が管理する項目が変更されることがあります。長期間残したい個人設定をサブスクリプションから生成された項目だけに加えるのは避け、変更前に必要な情報を記録しておきましょう。
起動時の自動更新を設定する
設定場所はSettings → Subscribe → Update On Openです。有効にすると、設定に従ってアプリの起動時にサブスクリプションの更新を試みます。ここで設定するのはサブスクリプションの取得であり、システムVPNの自動接続ではありません。Settings → On Demandはオンデマンド接続の設定で、別の項目です。
- まずHomeで手動更新を一度行い、現在のアドレスから正常に読み込めることを確認します。
- Settings → Subscribeを開き、Update On Openを有効にします。
- アプリを終了してから再度開き、Homeの更新状況と結果を確認します。項目数が変わったかどうかだけで、更新が実行されたかを判断しないでください。
- 手動更新は成功するのに自動更新で期待した結果が得られない場合は、まずスイッチが有効のままか確認し、そのときのネットワークとアプリの起動方法を記録してください。
「起動時」は、アプリがバックグラウンドで継続的に確認することや、画面ロック後に一定間隔で更新することを意味しません。バックグラウンドでの動作はシステムによって管理されています。サブスクリプションの状態をすぐ確認するには、Homeで手動更新するのが確実です。ネットワークや認証のエラーで自動更新に失敗した場合も、後述の方法で原因を確認してください。スイッチを有効にしても、無効なアドレスは修復されません。
アドレスと認証状態を確認する
サブスクリプションアドレスには認証情報が含まれていることがあります。コピーするときはクエリパラメータを含めてすべて保持し、疑問符以降を切り落とさないようにしてください。また、サブスクリプション用のURLとウェブページのURLを取り違えないでください。以下は構造を示すだけのダミー値で、利用できるサブスクリプションではありません。読み込んでテストしないでください。
https://example.com/sub?token=xxxx
- アドレス全体を確認:前後に空白や改行が入っていないか、チャットアプリによって句読点が付加されていないか確認してください。複雑に見えるパラメータを自己判断で削除しないでください。
- 入手元を確認:アカウントのトップページ、支払いページ、お知らせページではなく、利用中のサービス提供元から入手したShadowrocket対応のサブスクリプションアドレスを使用してください。
- 有効期限を確認:サブスクリプションの利用権が有効か、アドレスがリセットされていないか、アクセス頻度に制限がないかをサービス提供元に確認してください。
- 変更内容を確認:サービス提供元がtokenをリセットした場合は、保存済みのサブスクリプションアドレスを更新してください。アプリを再起動しても、古いtokenが新しいものに自動で置き換わることはありません。
エラーにHTTPステータスコードが含まれる場合は、次の3つを目安に原因を切り分けます。ステータスコードが示すのはリクエストの処理結果であり、サブスクリプションの形式が正しいかどうかではありません。特に200の場合も、アプリで内容を正常に解析できたか確認が必要です。
ネットワークエラーとリクエスト失敗の確認
以下はネットワークリクエストで返されることがある英語のエラーメッセージです。実際の表示は画面やシステムからの応答によって異なります。原因を調べる際は実際のエラーを記録し、すべての失敗を「更新できない」とひとまとめにしないでください。条件を一度に一つだけ変えて手動更新すると、どの変更が有効だったか判断しやすくなります。
エラー:The request timed out.
原因:制限時間内にリクエストが完了しませんでした。現在のネットワークやサブスクリプションサーバーの応答に問題がある可能性があります。
対処法:まず通常のウェブページが開けることを確認し、Wi-Fiとモバイル通信を切り替えて試してください。どちらのネットワークでもタイムアウトする場合は、接続先の状態をサービス提供元に確認してください。
エラー:A server with the specified hostname could not be found.
原因:サブスクリプションのドメインを名前解決できませんでした。ドメインの入力ミス、ネットワークのDNS異常、サーバー側でのドメイン変更などが考えられます。
対処法:元のアドレスに記載されたドメインを確認し、別の利用可能なネットワークで再試行してください。それでも失敗する場合は、現在のアドレスをサービス提供元に確認してください。
エラー:Could not connect to the server.
原因:接続先サーバーとの接続を確立できませんでした。サーバーの停止、ポートへの接続不可、ネットワークのアクセス制限などが考えられます。
対処法:アドレスは変更せず、異なるネットワークで結果を比較してください。そのサブスクリプションだけで失敗する場合は、個人情報を伏せたエラー情報をサービス提供元に送り、確認を依頼してください。
システム時刻が大幅にずれていると、HTTPSリクエストで証明書エラーが発生することがあります。まずデバイスのシステム設定で日付と時刻を確認してください。証明書の検証を無効にして、サブスクリプションの問題を解決しようとしないでください。アドレスのHTTPSポートは通常443です。サービス提供元から別のポートが明示されていない限り、自己判断でポート番号を追加・変更しないでください。
- 現在の接続が完全に切れている場合は、まずデバイス自体のネットワークを復旧してからサブスクリプションのリクエストを試してください。
- 接続中は更新に失敗し、切断後に成功する場合は、その違いを記録し、現在のルーティングと接続状態を確認してください。すぐにサブスクリプションを削除する必要はありません。
- Global RoutingのProxy、Direct、Config、Sceneはルーティングモードの選択肢であり、サブスクリプションの形式設定ではありません。モードを切り替えても、無効なtokenや非対応の内容は修復されません。
- HTTP 429が表示された場合は、続けて更新するのをやめ、サービス提供元の案内に従って時間を置いてから再試行してください。アクセス頻度制限がさらに厳しくなるのを防げます。
形式不一致、空のリスト、古い項目
ネットワークリクエストが完了しても、読み込みに失敗することがあります。よくあるのは、アプリが認識できるサブスクリプションデータではなく、HTMLのログインページ、認証ページ、エラーの説明、または空の内容が返されるケースです。ブラウザでページが開けても、有効なサブスクリプションとは限りません。ブラウザにはログイン状態が保持されていても、アプリのリクエストには同じ条件が適用されないことがあります。
| 状況 | まず確認すること | 次の手順 |
|---|---|---|
| 応答はあるが解析できない | 応答がログインページやエラーページではないか | Shadowrocket対応のサブスクリプション用インターフェースを使用しているか確認する |
| 更新後に利用できる項目がない | リモートから空のリストや認証案内が返されていないか | サブスクリプションの内容とアカウントの状態をサービス提供元に確認する |
| サービス提供元が名称を変更したのに古い名前が表示される | 今回の更新が実際に成功したか、正しいグループを確認しているか | 対象のサブスクリプションアドレスと更新結果を確認してから項目を比較する |
| リストは更新されたが接続できない | サーバーアドレス、ポート、認証情報、現在のネットワーク | 接続の診断に進み、サブスクリプションの更新を繰り返さない |
Type → Subscribeは、サブスクリプションアドレスから設定の集合を取得する項目です。この画面でShadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardを選ぶわけではありません。使用するプロトコルや接続情報は、サブスクリプションの内容によって決まります。サービス提供元に複数の形式が用意されている場合は、Shadowrocketに対応するものを確認してください。アドレスの末尾を変えて形式を推測しないでください。
形式の問題を切り分けるために、すべての項目をすぐに削除するのも避けてください。まずエラー情報を保存し、完全で有効なサブスクリプションアドレスを持っていることを確認してから、該当するサブスクリプションの置き換えを検討します。古いグループを削除した後に新しいアドレスも使えない場合、元の情報も失われ、変更前後を比較しにくくなります。
結果と問い合わせ時の情報を確認する
確認を終えたらHomeに戻り、もう一度手動更新して、結果を次の3種類に分類します。リクエストに失敗した、リクエストは完了したが解析に失敗した、解析には成功したが接続できない。どの段階で問題が起きたかを明確にしてから、ネットワークの確認、サービス提供元へのサブスクリプションの問い合わせ、接続診断のいずれに進むか決めましょう。
- 操作手順を記録:Homeで下に引っ張って更新したのか、Settings → Subscribe → Update On Openを有効にしてアプリを再起動したのかなどを記録します。
- エラーの原文を記録:HTTPステータスコードやシステムのネットワークエラーをそのまま残します。スクリーンショットを撮る前に、サブスクリプションアドレス全体、token、パスワード、個人アカウント情報を隠してください。
- 利用環境の違いを記録:Wi-Fiとモバイル通信のどちらで起きたか、接続が確立した状態だったか、ネットワークを切り替えた後に結果が変わったかを記録します。
- リストの変化を記録:すべてのサブスクリプションで失敗したのか、特定のグループだけなのか、サービス提供元が予告した変更が反映されたかを記録します。
tokenを含むサブスクリプションアドレスを、公開コメント欄や公開の検査ページに送らないでください。問い合わせには、個人情報を伏せたドメインとエラー情報を添えます。認証情報全体が必要な場合は、サービス提供元が指定する非公開のサポート窓口を利用してください。手動更新が安定して成功することを確認したら、日常の設定としてUpdate On Openを有効にできます。その後も利用時に問題が起きた場合は、更新結果を確認してください。