Shadowrocketに自分のサブスクリプションを追加済みの方向けの記事です。まずHomeで手動更新し、リンクから有効なリストを取得できることを確認します。そのうえで必要に応じてSettings → SubscribeのUpdate on Openを有効にしてください。特定のサブスクリプションだけに問題がある場合は、そのグループを個別に更新します。更新に失敗したときは、リクエスト未完了、サーバーによるアクセス拒否、レスポンスを解析できない状態を切り分けましょう。まだ使える記録をすぐに削除しないでください。
サブスクリプション更新で変わること
サブスクリプションには、リストの取得元が保存されています。更新のたびにShadowrocketがそのアドレスへリクエストを送り、レスポンスを読み込んで、該当グループ内のサーバー情報を更新します。サーバー側で名前、アドレス、ポート、接続パラメータが変更されると、新しいリストが以前と異なる場合があります。サブスクリプションの更新はクライアントアプリのアップデートではなく、利用中のサービスの有効期限を延長するものでもありません。
HomeのサーバーサブスクリプションとConfigのルール設定は別のものです。サーバーサブスクリプションを更新してもConfigは更新されず、Global Routingが自動で切り替わるわけでもありません。トラブルを調べる前に、どちらのリンクを扱っているか確認し、ルールファイルのアドレスをサーバーサブスクリプション欄に入力しないようにしてください。
- 既存の記録:サブスクリプショングループの記録は、そのサブスクリプションで管理されます。手動で追加した個別の記録には、同じ更新元があるわけではありません。
- 選択中のサーバー:更新後、以前選択していたサーバーが引き続きリストにあるか確認してください。総数だけで判断しないようにしましょう。
- 接続結果:リストの更新に成功したかどうかと、サーバーに接続できるかどうかは別々に確認が必要です。接続は個別にテストしてください。
- 初期設定:自動更新やリクエスト経路に関するスイッチの状態は、アプリに現在表示されている内容を確認してください。すべて有効、またはすべて無効と決めつけないようにしましょう。
手動で下に引いて更新する:まず一度、最後まで更新する
手動更新は、初回追加後に内容を確認するとき、自分が利用しているサービスから変更の案内を受けたとき、自動更新の結果がはっきりしないときに便利です。操作中はShadowrocketを前面に表示し、更新が終わるまで待ちましょう。何度も続けて下に引いても無効なリンクは直らず、サーバーのリクエスト制限にかかるおそれがあります。
-
グループを確認する
Homeを開き、追加済みのサブスクリプショングループを探します。まだ追加していない場合は、右上の「+」をタップし、TypeでSubscribeを選択して、自分のサブスクリプションアドレスを最後まで入力して保存してください。
-
下に引いて更新する
Homeのリストを下に引いて、サブスクリプションを更新します。更新状況を確認し、リクエストと解析が完了するまでアプリを離れないでください。
-
リストを確認する
対象のグループに有効な記録が残っているか、変更されるはずの名前や件数に変化があるかを確認します。リストに変化がなくても、サーバー側の内容が変わっていない可能性があります。それだけで更新失敗とは判断できません。
-
接続をテストする
使うサーバーをタップして選択し、Homeで選択状態になっていることを確認してから、Connectivity Testを実行します。更新には成功しても接続できない場合は、そのサーバーのパラメータと接続経路を調べてください。
起動時に自動更新する:Update on Openを設定
Settings → SubscribeでUpdate on Openを確認します。有効にすると、アプリを開いたときにサブスクリプションの更新が試みられます。バックグラウンドで常時チェックする機能ではなく、アプリを閉じた後も一定の間隔でリクエストを送り続けるわけではありません。実行条件や画面表示は、現在のアプリで確認してください。
まず手動更新を一度成功させてから、この項目を有効にすることをおすすめします。次回アプリを開いたときに問題が起きても、自動更新の実行条件に達しなかったのか、サブスクリプション自体を更新できなくなったのかを切り分けやすくなります。アプリを開く際にはネットワーク接続が必要です。自動更新でサーバー認証、期限切れ、リクエスト制限を回避することはできません。
- 設定場所:Settings → Subscribeを開き、Update on Openの現在の状態を確認します。アプリを開いたときにリストを更新する場合は、この項目を有効にしてください。
- 確認方法:現在のグループ内容を記録し、次にアプリを開いたときに更新の通知と結果を確認します。サーバー側の内容が変わっていなければ、リストがそのままでも正常です。
- 一時的な切り分け:アプリを開くたびに失敗の通知が出る場合は、いったんこの項目を無効にし、個別更新で原因を調べます。問題を解消した後、再び有効にするか判断してください。
- 機能の範囲:Settings → On Demandは条件に応じた接続を管理する設定で、サブスクリプションの更新スケジュールではありません。自動更新を有効にするためにOn Demandを変更しないでください。
アプリを開いたときにネットワークがまだ使える状態になっていないと、更新リクエストがネットワークの復旧前に失敗する場合があります。Wi-Fiを切り替えた直後や、ネットワークへのログイン中などが該当します。まずネットワークに接続し、Homeに戻って手動更新を一度試してください。すべてのサブスクリプションを再追加する必要はありません。
サブスクリプションを個別に更新する:問題の範囲を絞る
複数のサブスクリプションがある場合、あるグループの更新に成功しても、他のグループも成功したとは限りません。個別に更新すれば、問題のあるアドレスを特定しやすくなり、特定サーバー側の問題をアプリ全体の通信障害と誤認せずに済みます。この手順は、利用者自身がすでにサブスクリプションを持っていることを前提としています。当サイトではサーバーやサブスクリプションの提供、販売、推奨は行っていません。
- Homeで確認したいサブスクリプショングループを探し、グループ名と現在の記録数を控えます。同じ名前の別グループでないことも確認してください。
- そのサブスクリプショングループの操作メニューを開き、Updateを選んで個別に更新します。項目の表示場所は現在のアプリ画面で確認し、削除を選ばないようにしてください。
- 結果が出るまで待ち、エラーが表示された場合は全文を記録します。更新に成功したらグループの内容を確認してください。失敗した場合もグループを削除せず、そのまま原因を調べましょう。
- 同じネットワークを使い、すでに登録済みの別のサブスクリプションも更新して比較します。一つだけ失敗する場合は、そのリンクとサーバーの状態を優先して確認します。複数が失敗する場合は、共通するネットワーク経路を調べてください。
更新に失敗したとき:エラーとレスポンス内容から対処する
失敗は、ドメイン名の解決、接続の確立、サーバーからの応答、レスポンスの解析など、さまざまな段階で発生します。まず発生時刻、使用中のネットワーク、対象グループ、表示されたメッセージを記録してから、次の対応を判断してください。以下の英文は、ネットワークリクエストで表示されることがあるエラー文やHTTPステータスです。実際の表示はアプリやサーバーによって異なり、毎回同じメッセージが出るとは限りません。
エラー:The request timed out.
原因:許容時間内にリクエストが完了しなかった状態です。ネットワーク経路やサーバーの応答が関係している可能性があります。対処法:まずネットワークが使えることを確認し、ネットワークを一度切り替えてから個別に再試行します。既存の接続状況を踏まえ、Update via Proxyも確認してください。
エラー:401 Unauthorized
原因:サーバーがリクエストの認証情報を受け付けていません。対処法:自分のサービスアカウントでサブスクリプションアドレスを確認し、クエリパラメータをすべて残してください。以前のtokenがリセットされていないかも確認しましょう。
エラー:403 Forbidden
原因:サーバーが今回のアクセスを拒否しました。アカウントの状態やアクセス制限が関係している可能性があります。対処法:利用しているサービスの提供元に、サブスクリプションの権限とアクセス条件を確認してください。このステータスだけでアプリの設定ミスと判断しないようにしましょう。
エラー:429 Too Many Requests
原因:リクエストがサーバーの頻度制限に達しました。対処法:繰り返しの更新をやめ、サーバーの案内に従って時間をおいてから再試行してください。切り分け中はUpdate on Openを一時的に無効にし、リクエストの重複を減らせます。
リクエストは成功したが、リストが空
HTTPリクエストの成功は、レスポンスを受信できたことを示すだけで、有効なサーバー記録が含まれているとは限りません。リンクからアカウントのログインページやエラー説明ページが返されたり、内容が空だったりする場合があります。コピー時にパラメータが抜けると、サーバーから予想と異なるページが返されることもあります。Webページが開けるだけでは、サブスクリプションが有効だとは判断できません。
- アドレスがサーバーサブスクリプション用のものか確認してください。アカウント管理ページやConfigファイルのアドレスではありません。
- アドレスの先頭や末尾にスペース、改行、引用符が紛れ込んでいないか確認します。特に
?以降のパラメータがすべて含まれているか注意してください。 - 自分が利用しているサービスの提供元に、現在のレスポンス形式がShadowrocketに対応しているか、有効な記録が実際に含まれているかを確認してください。
- 切り分けのためにレスポンス内容を共有する場合は、サブスクリプションアドレス、token、パスワードなどの機密情報を先に削除してください。サブスクリプション全体を公開しないでください。
Update via Proxy:必要な場合にのみリクエスト経路を変更する
Settings → SubscribeのUpdate via Proxyでは、サブスクリプションの更新にプロキシ経路を使うかどうかを設定します。Update on Openとは目的が異なり、前者は更新リクエストの送信方法、後者は更新を試みるタイミングに関わります。プロキシ経由の更新を有効にしても、tokenの誤りは直らず、ログインページがサーバーリストに変わるわけでもありません。
- 直接接続で更新できる:現在の設定をそのまま使いましょう。サブスクリプションを更新するためにGlobal Routing、DNS、Configまで変更する必要はありません。
- 現在のネットワークからサブスクリプションアドレスにアクセスできない:まず利用可能な既存のサーバーに接続し、Update via Proxyを有効にしてから、対象のサブスクリプションを個別に更新してください。
- 利用可能な接続がない:Update via Proxyを有効にするだけでは、使えるプロキシ経路はできません。既存の接続を復旧するか、サブスクリプションアドレスにアクセスできるネットワークから更新してください。
- 設定変更後も失敗する:変更前後でエラー内容が変わったか記録してください。401や403が続く場合は、リクエスト経路を何度も切り替えるのではなく、まず権限を確認しましょう。
一度に変更する項目は一つにします。たとえば、サブスクリプションアドレスは変えずにネットワークだけを切り替えて再試行し、その後でプロキシ経由の更新設定を確認します。どの操作が結果に影響したか分かりやすくなり、元の設定にも戻しやすくなります。
よくある質問:更新頻度と接続確認
自動更新を有効にしていても、手動更新は必要ですか?
通常の利用では、何度も続けて更新する必要はありません。利用しているサービスから変更の案内を受けたとき、アプリを開いた際にネットワークがまだ使えなかったとき、特定のグループの状態を確認したいときは、Homeで一度手動更新して結果を待ちましょう。
更新に成功したのに、サーバーの数が増えないのはなぜですか?
更新はサーバー側の現在の内容を同期するもので、件数が増えるとは限りません。変更されるはずの記録の名前、アドレス、ポートを確認してください。サーバー側に変更がなければ、件数が同じでも正常です。
更新後に接続できません。サブスクリプションを追加し直す必要がありますか?
まずHomeで選択中のサーバーを確認し、Connectivity Testを実行してください。テストに失敗した場合は、その記録の接続パラメータと利用中のサービスの状態を確認します。テストに成功しても目的のアクセスに問題がある場合は、Global RoutingとConfigを確認してください。すぐにサブスクリプションを削除しないでください。
数秒おきに自動更新できますか?
Update on Openは秒単位の定期実行機能ではありません。必要なときに更新してください。リクエストを頻繁に送ると429になる場合があります。内容に変更がなければ、確立済みの接続を維持するために何度も更新する必要はありません。
Shadowrocketを購入すると、サブスクリプションも付属しますか?
アプリの買い切り購入とサーバー利用プランは別です。ShadowrocketはAppleプラットフォーム向けの有料アプリで、入手先はApp Storeのみです。利用中のサービスのサブスクリプションは自分で追加する必要があり、アプリを購入してもサーバーリストは自動で追加されません。