この記事は、利用中のサービスとサブスクリプションURLがあり、サーバー一覧を更新したい方向けです。まずHomeで手動更新し、URLから正常にデータを取得できることを確認してから、Settings → Subscribeで起動時の更新を有効にします。更新できない場合は、アクセス権限、通信経路、レスポンス形式の順に確認してください。サブスクリプション、Config、アプリの更新はそれぞれ別の操作で、互いに代用できません。
サブスクリプションを更新するとどうなる?
ShadowrocketにサブスクリプションURLを登録すると、そのURLからサーバー情報を取得します。次回以降の更新でも同じURLにアクセスし、取得した内容に基づいてサーバー一覧や接続パラメータを更新します。そのため、一覧に新しい項目がなくても、必ずしも更新失敗とは限りません。サービス側から前回と同じ内容が返される場合もあります。
誤った箇所で何度も更新しないよう、操作ごとに確認しましょう。この記事では主にiPhone / iPadのHome、Settings画面を使って説明します。他のプラットフォームでは画面構成が異なる場合がありますが、通信リクエストとサブスクリプションのレスポンスを順に確認する方法は共通です。
| 操作対象 | 目的 | 代用できない操作 |
|---|---|---|
| Homeのサブスクリプション | サーバー一覧と接続パラメータを再取得します。 | サービスのアカウントを更新する操作ではなく、ルールの更新とも異なります。 |
| Configの設定 | Configファイルと、その中のルールやDNSなどの設定を管理します。 | Homeのサブスクリプション一覧を更新する操作ではありません。 |
| Shadowrocketアプリ | クライアントアプリ自体を更新します。 | 無効になったサブスクリプションURLが再び有効になるわけではありません。 |
Homeでサブスクリプションを手動更新する
まず手動で更新し、URLとネットワークが使えることを確認してから自動更新を有効にします。先に既存のサブスクリプションを削除しないでください。登録済みのサーバーがまだ使える場合があり、新しいURLにアクセスできなければ、確認に使える以前の情報まで失うことになります。
-
サブスクリプションを確認する
Homeを開き、自分のサブスクリプショングループを探します。手動で追加したサーバーが1つあるだけではないことを確認してください。サーバー情報を1件ずつ手動入力した場合、一覧更新に使うサブスクリプションURLはありません。
-
URLを追加する
サブスクリプションをまだ追加していない場合は、Home → 右上の「+」→ Type → Subscribeを開き、URLに自分のサブスクリプションURLを完全な形で入力します。識別しやすい名前を付けて保存してください。
-
下に引いて更新する
Homeのサーバー一覧に戻り、一覧の最上部で下に引いて指を離し、更新が終わるまで待ちます。一覧が長い場合は、先に最上部までスクロールしてください。通知センターを引き下げてもアプリ内の更新にはなりません。
-
結果を確認する
エラーメッセージが表示されるか確認し、対象のサブスクリプションに含まれるサーバー名と件数を確認します。複数のサブスクリプションがある場合は、対象のグループをそれぞれ確認してください。1つのグループに変化があっただけで、すべての更新が成功したと判断しないようにしましょう。
-
接続を確認する
更新後のサーバーを選び、接続をテストします。サーバーや接続パラメータを変更した場合は、いったん切断してから再接続し、Webページにアクセスできるか確認してください。以前の接続状態を新しい設定の結果と取り違えないためです。
サブスクリプションURLには、通常アカウント認証情報が含まれています。たとえばhttps://example.com/sub?token=xxxxは、サービスを取得できないダミーの例です。実際にコピーする際はクエリパラメータを含めてURL全体を保持し、疑問符以降を省略しないでください。また、URLの前後にある引用符や空白、チャットアプリが追加した文字列を一緒に貼り付けないようにしましょう。
起動時の自動更新を設定する
起動時の自動更新は、アプリを開いたときに最新の一覧を取得したい場合に便利です。アプリを開くタイミングで実行される機能であり、アプリを閉じた後もシステムが定期的にサブスクリプションへアクセスするわけではありません。ネットワークが使えない場合に更新が成功する保証もありません。
-
設定を開く
Settings → Subscribeを開き、Update on Openを探します。画面の言語によって表示が異なるため、サブスクリプション設定内で起動時の更新に対応するスイッチを確認してください。
-
自動更新を有効にする
Update on Openを有効にしてHomeに戻ります。この設定で変わるのは更新の実行タイミングです。URLが置き換わるわけではなく、期限切れのアカウント認証情報が修復されることもありません。
-
アプリを開き直す
ネットワークに接続できる状態でアプリを開き直し、更新結果を確認します。アプリ内でHomeとSettingsを切り替えるだけでは、アプリを開き直した際に更新が実行されるかどうかを確認できません。
-
手動での確認も続ける
サービス提供元から一覧の変更が通知されても、現在の一覧に反映されていない場合はHomeに戻って下に引き、手動更新できます。エラーが表示されたら、まず内容を記録し、短時間に何度も再試行しないでください。
Settings → On Demandは、条件に応じてVPN接続を確立する設定であり、サブスクリプションの定期更新ではありません。On Demandを有効にしてもUpdate on Openが有効になるわけではありません。また、自動更新が成功してもVPN接続が確立したとは限りません。サブスクリプションの更新結果とHomeの接続状態を別々に確認してください。
プロキシ経由と直接接続、どちらで更新する?
サブスクリプションURLにアクセスできるかどうかと、一覧内のサーバーに接続できるかどうかは別の問題です。サーバーが使えてもサブスクリプションのWebサイトにアクセスできるとは限りません。サブスクリプションをダウンロードできても、取得したすべてのサーバーに接続できるとは限りません。まず失敗した段階を特定してから、リクエスト経路を変更するか判断しましょう。
| 確認項目 | 用途 | 操作の判断 |
|---|---|---|
| Settings → Subscribe → Update via Proxy | サブスクリプションの更新リクエストをプロキシ経由にするか設定します。 | 直接接続で失敗し、利用できるプロキシがある場合は、有効にして再試行できます。 |
| Home → Global Routing | Proxy、Direct、Config、Sceneなどのルーティング方式を選択します。 | 変更前の設定を記録してください。サブスクリプション更新のために、普段使うルーティング設定を長期間変更しないようにしましょう。 |
| Settings → On Demand | 設定した条件に応じてVPN接続を開始します。 | 切断状態での直接接続を確認する際は、接続が再確立されないか注意してください。 |
現在のネットワークからサブスクリプションURLに直接アクセスできない場合は、まず接続可能な既存サーバーを使って接続し、Settings → SubscribeでUpdate via Proxyを有効にしてからHomeに戻り、更新します。既存のサーバーがすべて使えない場合、「プロキシ経由で更新」を有効な解決策として扱うことはできません。信頼できる別のネットワークを使うか、自分のサービス提供元にURLへ直接アクセスできるか確認してください。
- 一度に変更する条件は1つだけにします。Wi-Fiとモバイル通信を切り替えるか、Update via Proxyだけを切り替えてから更新し、結果を比べてください。
- 公共Wi-Fiでは、先にネットワークへのログインが必要な場合があります。認証前のリクエストはサブスクリプションデータではなく、ログインページに転送されることがあります。
- 確認が終わったら、Global Routingを元の設定に戻してください。更新のためだけにProxyを使い続ける必要はありません。
エラーメッセージから原因を特定する
エラーメッセージはアプリ、システムのネットワーク層、サブスクリプションサーバーのいずれかから返され、言語や具体的な表現も異なります。以下に代表的なメッセージとHTTPステータスを示します。実際のエラー内容を基準に対処し、「更新失敗」という表示だけでアカウントの期限切れと判断しないでください。
エラー:The request timed out.
原因と対処:許容時間内にリクエストが完了しませんでした。通信経路に問題があるか、サーバーの応答が遅い可能性があります。まずネットワークを切り替えて1回再試行してください。利用できる接続がある場合は、Update via Proxyを有効にしたときの結果も比較します。何度も続けて更新してサーバーに負荷をかけないようにしましょう。
エラー:A server with the specified hostname could not be found.
原因と対処:サブスクリプションのドメイン名を解決できませんでした。URLのホスト名が欠けずにコピーされているか確認し、現在のネットワークで他のドメインを正常に名前解決できるか試してください。サブスクリプションのドメインが変更されていないか、自分のサービス提供元にも確認しましょう。
エラー:401 Unauthorized
原因と対処:サーバーが現在のリクエストに含まれる認証情報を受け付けていません。自分のサービス提供元のアカウントでURLがリセットされていないか確認し、完全なURLを再度コピーしてください。URLのドメインだけを変更し、古いtokenを使い続けないでください。
エラー:403 Forbidden
原因と対処:サーバーがリクエストを拒否しました。アカウント権限やアクセス制限が関係している可能性があります。サービスの状態を確認し、ステータスコードと発生時刻を自分のサービス提供元に伝えてください。ルールを何度切り替えても、サーバー側の権限制限は解消できません。
エラー:404 Not Found
原因と対処:指定されたパスにリソースが見つかりません。URLのパスが途中で切れているか、元のURLが無効化された可能性があります。サブスクリプションURLを完全な形で再取得してください。アカウントのログインページのURLをサブスクリプションURLとして使わないようにしましょう。
エラー:429 Too Many Requests
原因と対処:リクエスト回数がサーバーの制限に達しました。何度も下に引いて更新するのをやめ、サーバーが指定する再試行可能な時間まで待ちます。レスポンスにRetry-Afterが含まれている場合は、その指示に従ってから1回更新してください。
証明書の検証エラーは、ほかのエラーとは分けて対処してください。まず端末の日付と時刻が正しいか確認し、信頼できるネットワークに切り替えて再度確認します。自分のサービス提供元にも、証明書の有効期限とドメイン名が一致しているか調べてもらいましょう。問題を隠すために証明書検証を無効にしないでください。サブスクリプションのレスポンスが想定したサーバーから届いたことを確実に確認できなくなります。
形式エラーと一覧に変化がない場合
ネットワークリクエストが成功しても、サブスクリプションの解析に成功したとは限りません。HTTP 200はサーバーがレスポンスを返したことを示すだけで、本文がアカウントのログインページ、アクセス確認ページ、期限切れの通知、空の内容である可能性もあります。この場合はGlobal Routingを変更し続けるのではなく、返された内容の種類を確認してください。
- Webページが返される:URLを開くとログインを求められる、またはWebページ全体が表示される場合は、アカウントページではなくサブスクリプションURLをコピーしたか確認してください。ブラウザーでアカウントにログインできても、アプリのサブスクリプションリクエストにアクセス権が与えられたとは限りません。
- 内容が空:アカウントで利用できる項目があるか、現在のURLからデータが返されるはずか、自分のサービス提供元に確認してください。バックアップを取らずに古いグループを削除し、何度も再インポートするのは避けましょう。
- 形式を解析できない:サービス提供元がShadowrocket用として明示しているサブスクリプション形式を使用してください。ファイルの拡張子だけで互換性を判断したり、Webページの本文を独自に変換して再インポートしたりしないでください。
- 一部の項目しか表示されない:表示されない項目のプロトコルとパラメータが、現在のクライアントでサポートされているか確認してください。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardでは必要なフィールドが異なります。プロトコル名だけを書き換えても、接続情報を変換することはできません。
- 更新後も件数が同じ:サーバー名とパラメータに変化があるか比較してください。件数が同じでも内容が変わっている場合があります。内容自体に変更がないなら、更新確認のために項目を無理に追加する必要はありません。
サブスクリプション更新に関するよくある質問
自動更新を有効にしたのに、一覧が古いままなのはなぜ?
まずHomeで下に引いて手動更新し、エラーメッセージが表示されるか確認します。次にSettings → Subscribe → Update on Openを確認してください。手動更新も失敗する場合は、URLやネットワークの問題を解決します。手動更新が成功して内容が変わらない場合は、元の一覧に実際の変更があったか、自分のサービス提供元に確認してください。
更新に成功したのに、Webページを開けないのはなぜ?
更新の成功は、一覧の取得と解析が完了したことを示すだけです。Homeに戻って利用可能なサーバーを選び、再接続してGlobal Routingを確認してください。Configを使っている場合は、該当する設定のDNS、ルール、FINALポリシーも確認します。Webページの問題を、すぐにサブスクリプションの問題と決めつけないでください。
更新のたびにURLを再インポートする必要はある?
必要ありません。サブスクリプションURLが引き続き有効なら、Homeで更新するだけです。自分のサービス提供元がURLを変更した、認証情報をリセットした、または古いURLを無効にした場合に限り、サブスクリプションURLを編集してください。同じURLを何度も追加すると、見分けにくいグループが複数できることがあります。
アプリを購入したのに、サブスクリプションが期限切れと表示されるのはなぜ?
クライアントの買い切り購入と、サービスの利用プランは別です。iPhone / iPad版はApp Storeで$2.99の買い切りです。Mac、Windows、Android、Linux版は無料です。いずれの入手方法でも、自分のサービス提供元のアカウントが更新されることはありません。サブスクリプションの利用権限と有効期限は、自分のサービス提供元に確認してください。
トラブルの確認後は、正常に更新できたときのネットワークの種類、Update via Proxyの状態、Update on Openが有効だったかを記録しておくと便利です。次回更新に失敗したら、DNS、ルーティング方式、サブスクリプションURLを同時に変更するより、まず記録した条件と比較すると原因を特定しやすくなります。当サイトではサーバー、サブスクリプション、サービスの提供・販売・推奨は行っていません。