利用中のサービスとサブスクリプションをすでにお持ちで、Homeのサブスクリプション一覧を管理したい方向けです。まず手動更新してリンクが有効か確認し、必要に応じて起動時の自動更新を有効にします。更新できない場合は、リンク、サーバーの応答、返されるデータ形式、現在のネットワークを順に確認してください。まだ使えるサブスクリプションを先に削除する必要はありません。
サブスクリプション更新の範囲:一覧の更新と接続の成功は別
Shadowrocketのサブスクリプション更新では、保存済みのサブスクリプションURLに再度アクセスして内容を取得し、解析した項目をHomeに反映します。サービス提供元がサーバーアドレス、ポート、認証情報、項目名を変更した場合、変更を受け取るには通常、サブスクリプションを再取得する必要があります。アプリの買い切り購入と接続サービスのプランは別です。この記事では、ご自身のサブスクリプションをお持ちであることを前提に説明します。
更新に成功したという表示は、今回の取得と解析が完了したことを示すだけです。一覧内のすべての項目で接続できることや、現在の接続先が新しい項目に切り替わったことを意味しません。サブスクリプション一覧、Configのルール、システムのVPN接続はそれぞれ別の設定です。問題を調べる際は、分けて確認してください。
Homeに追加したSubscribeはサブスクリプションの取得元です。サーバーを個別にインポートした場合、サブスクリプションURLが含まれているとは限らず、サブスクリプションのように後から変更を取得できないことがあります。Configのリモート設定ファイルの更新も、Homeのサブスクリプション一覧の更新とは別です。操作前に、管理対象がどちらなのか確認してください。
手動更新:サブスクリプションを選んで更新する
初回インポート時、サービス提供元から設定変更の連絡があったとき、自動更新後も一覧に変化がないときは、まず手動更新してください。更新リクエストを明示的に実行でき、結果もすぐに確認できます。画面の言語によって表示は異なる場合があります。以下では英語の画面項目名をそのまま記載しています。サブスクリプショングループの操作方法も、画面レイアウトによって異なることがあります。
-
サブスクリプションを見つける
Homeを開き、該当するサブスクリプショングループを見つけて、グループ名を確認します。まだ追加していない場合は、Home右上の「+」→ Type → Subscribeを開き、ご自身のサブスクリプションURLをURL欄に入力して保存します。
-
URLを確認する
対象のサブスクリプションの編集画面を開き、URL全体、特に「?」以降のパラメーターが揃っているか確認します。コピー時に空白、改行、日本語の句読点、説明文が混ざらないようにしてください。確認したらHomeに戻ります。
-
更新を実行する
Homeの一覧を下に引っ張って更新します。特定のサブスクリプションだけを更新するには、該当グループを長押ししてUpdateを選択します。実際に表示される操作メニューに従ってください。
-
結果を確認する
リクエストが完了するまで待ち、エラー表示の有無を確認します。続いて対象のグループを開き、項目名や件数、把握している変更が反映されているか確認してください。リクエスト中に何度も続けて更新しないでください。
-
接続を確認する
現在選択している項目が、更新後の一覧にも残っていることを確認します。サービス提供元がその項目を置き換えた場合は、有効な項目を選び直してから接続を個別にテストしてください。接続中のセッションがある場合は、接続を変更する前に作業内容を保存してください。
一覧の件数が変わらなくても、更新に失敗したとは限りません。サーバー側で同名の項目の認証情報だけが変更された場合や、今回取得した内容が前回と同じ場合があります。反対に、件数が増えてもすべての項目が使えるとは限りません。数字だけで判断せず、更新結果をサービス提供元から案内された変更内容と照らし合わせてください。
起動時の自動更新:設定場所と利用条件
自動更新は通常、Settings → Subscribe → Update on Openから設定します。有効にすると、この項目で定められた条件に従って、アプリ起動時にサブスクリプションの更新を試みます。更新間隔などの追加条件が画面に表示される場合は、あわせて確認してください。アプリを前面に戻すたびに必ず再取得されるわけではありません。
アプリを開いたときにサブスクリプションの変更を取得したい場合に便利な設定ですが、その時点でネットワークからサブスクリプションサーバーにアクセスできる必要があります。システムのバックグラウンド定期実行を保証する設定ではなく、画面ロック中も取得が続くという意味でもありません。設定名や階層がこの記事と異なる場合は、SettingsのSubscribe内にある実際の説明を確認してください。
Settings → On Demandは、条件に応じてVPN接続を開始する設定です。サブスクリプションの自動取得とは別の機能です。On Demandを有効にしても、サブスクリプションが自動更新されるとは限りません。また、Update on Openを有効にしても、システムのVPN利用許可が自動で完了したり、接続が保証されたりするわけではありません。
まず手動で確認し、その後に自動更新を有効にする
現在のネットワークで同じURLを使って手動更新できることを確認してから、Update on Openを有効にしてください。手動リクエストがすでに失敗している場合、自動更新の設定を変えても、リンク切れ、形式の誤り、ネットワークに接続できないといった問題は通常解決しません。
手動更新と自動更新:利用状況に応じて選ぶ
どちらの方法も同じサブスクリプションを取得します。主な違いは実行タイミングと、問題を確認しやすいかどうかです。自動更新を有効にしても、無効なリンクが有効になったり、サブスクリプションサーバーの返す形式が変わったりすることはありません。問題が起きたら、自動更新の設定はそのままにして、まず結果を確認しやすい手動更新を一度実行すると、原因を特定しやすくなります。
| 方法・設定 | 実行条件 | 利用シーン | 確認ポイント |
|---|---|---|---|
| Homeでの手動更新 | ユーザーが一覧を下に引っ張る、またはUpdateを実行する | 初回確認、設定変更、エラーの再現 | 今回の表示と対象グループの内容 |
| Update on Open | アプリを開き、設定条件を満たす | 日常的にサブスクリプションの変更を取得する | その時点のネットワークと更新間隔などの条件 |
| On Demand | オンデマンド接続の条件を満たす | VPN接続の動作を管理する | サブスクリプションの更新結果確認には使いません |
- サブスクリプションの変更が少ない場合:必要なときだけ手動更新し、何度もリクエストする必要はありません。
- サブスクリプションが頻繁に変更される場合:まずURLが有効か確認してから、Update on Openの利用を検討してください。
- サービス提供元がリクエスト頻度を制限している場合:指定された更新間隔を守り、短時間に繰り返し実行しないでください。
- ローカルでの変更を残したい場合:更新前に必要な差分を記録してください。サブスクリプションから取得した項目は次回更新時に上書きされることがあり、手動変更を恒久的に保存する場所としては使えません。
更新できないときの対処:エラーを読み、該当する段階を確認する
まず、エラーが発生した時刻、接続中のネットワーク、対象のサブスクリプション、表示されたメッセージを記録してください。以下に、ネットワーク関連でよく表示される英語のエラーを記載します。画面によっては日本語表示や補足説明が加わるため、意味に沿って対処してください。エラーメッセージは失敗した段階を示すものであり、サービス提供元のアカウントや特定のサーバーに問題があると断定できるものではありません。
The request timed out.
原因と対処:許容される時間内にリクエストが完了しませんでした。ネットワーク、DNS、リモートサーバーの応答遅延などが考えられます。まず現在のネットワークで通信できることを確認し、信頼できる別のネットワークに切り替えて一度だけ再試行してください。同じエラーが続くかも記録しておきます。
A server with the specified hostname could not be found.
原因と対処:サブスクリプションのドメインを名前解決できませんでした。ドメインの入力ミス、DNSの異常、ドメイン変更などが考えられます。元のURLのホスト名を確認し、ご自身のサービス提供元に現在有効なURLを問い合わせてください。
Could not connect to the server.
原因と対処:接続先のサーバーへの接続を確立できませんでした。接続先のポートに到達できないか、サーバーが一時的に利用できない可能性があります。URLのアドレスとポートを確認し、別のネットワークでも再テストしてください。結果はサービス提供元への問い合わせに備えて記録しておきます。
The network connection was lost.
原因と対処:リクエスト中に接続が切断されました。Wi-Fiとモバイル通信の切り替え時などに発生することがあります。安定したネットワークに接続し、システムの通信が復旧してから手動更新を一度実行してください。
HTTPステータスとレスポンスの内容は分けて確認する
- HTTP 401:有効な認証情報を含むリクエストとして認識されていないことを示す場合が一般的です。リンク内の認証パラメーターが揃っているか確認し、サービス提供元がURLを再発行していないか問い合わせてください。
- HTTP 403:サーバーがリクエストを拒否しました。アクセス制限や認証情報の状態が関係している場合があります。期限切れと決めつけず、拒否された理由をサービス提供元に確認してください。
- HTTP 404:リクエスト先のパスが見つかりません。古いパスをコピーしていないか、管理画面のURLをサブスクリプションURLとして使っていないか確認してください。
- HTTP 429:リクエストが多すぎます。更新を中断し、サーバーから指定された待機時間、またはサービス提供元の案内に従ってから再試行してください。
- HTTP 5xx:サーバー側、または上流の処理で問題が発生している場合が一般的です。ステータスコードと発生時刻を記録して、時間をおいてから再試行してください。ローカルの項目を何度も変更しても、通常はリモートサービスの復旧にはつながりません。
サーバーがHTTP 200を返していても、クライアントで解析できるサブスクリプションではなく、ログイン画面、認証ページ、空の内容が返される場合があります。形式エラーが表示されたときや、更新後に有効な項目がないときは、レスポンスの種類を確認し、サービス提供元がShadowrocket向けのサブスクリプション形式を提供しているか問い合わせてください。ブラウザーでページを開けるだけでは、サブスクリプションが正常だとは判断できません。
リンク切れ・形式の不一致:URL全体を確認する
サブスクリプションURLにはアクセス認証情報が含まれていることがあります。例のhttps://example.com/sub?token=xxxxは明らかなダミーであり、利用できるサービスのアドレスではありません。実際のURLではパスとクエリパラメーターをすべてそのまま保持してください。「?」以降を削除すると、有効なサブスクリプションでも認証されないリクエストになることがあります。
- 取得元を確認:ご自身のサービス提供元がサブスクリプション情報を案内している画面に戻り、アカウントのホームページ、ログインページ、利用案内ページではなく、サブスクリプションURLをコピーしたか確認してください。
- 有効性を確認:サブスクリプションの利用資格、有効期限、リンクの状態を確認します。サービスによっては、URLの再発行後に古いURLが無効になります。アカウントの状態を復旧しても、古いURLが再び使えるとは限りません。
- コピー漏れがないか確認:元のエンコードとすべてのパラメーターを保持してください。
%、&、=などの文字を自己判断で置き換えないでください。また、省略表示されたURLを完全なURLとして使わないようにします。 - 出力形式を確認:サービス提供元がShadowrocket向けと明記している形式を使用してください。サブスクリプション全体の形式と、その中に含まれる項目のプロトコルは別の要素です。テキストに特定のプロトコル名が含まれているだけでは、全体が有効とは限りません。
- 変更後に一度だけテスト:既存のサブスクリプションURLを更新し、手動更新を一度実行してください。元のグループを残しておくと問題を比較しやすくなり、重複インポートによる新旧項目の混同も防げます。
Shadowsocks、VMess、VLESS、Trojanなどは各項目のプロトコル種別を示します。一方、サブスクリプションURLは設定のまとまりを一度に取得するためのものです。単一項目の共有リンクは、更新可能なサブスクリプションとは異なります。SubscribeのURL欄に単一リンクを入力しても、リモートの一覧を更新する仕組みは得られません。
サブスクリプションの認証情報は慎重に扱うサービス提供元に問い合わせる際は、エラーメッセージ、発生時刻、認証情報を隠したURLを伝えてください。サブスクリプションURL全体、認証パラメーター、これらを含むスクリーンショットを公開しないでください。リンクが漏えいした疑いがある場合は、ご自身のサービス提供元を通じて認証情報を再発行してください。
更新は成功するのに使えない:接続とルーティングを確認する
サブスクリプションの更新と接続では、異なるネットワーク経路が使われる場合があります。更新後もアクセスできない場合は、まず更新後の一覧に残っている有効な項目が選択されているか確認し、接続状態とGlobal Routingを調べてください。同じサブスクリプションを繰り返し更新する必要はありません。リクエスト回数が増えるだけで、ルールの判定結果は修正されません。
- 項目を確認:名前、サーバーアドレス、ポートがご自身のサービス提供元の案内と一致しているか確認します。名前が似ているだけで、2つの項目の認証情報も同じだと判断しないでください。
- 接続状態を確認:アプリの接続スイッチとシステムのVPN状態を確認してください。必要な場合は、作業内容を保存してから再接続し、更新後の設定を使って接続します。
- ルーティング方式を確認:Global RoutingのProxy、Direct、Config、Sceneによって、通信の処理方法が異なります。Configを使用している場合は、現在の設定ルールにも影響を受けます。
- ルールを確認:DOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALなどのルールは通信先のポリシー選択に影響しますが、サブスクリプションサーバーから返される項目を決めるものではありません。Configで、実際に適用されている設定とルールの順序を確認してください。
- 問題を切り分ける:特定の項目だけ接続できず、他の項目は使える場合は、その項目と対応するサーバーを確認してください。すべての項目で接続できない一方、サブスクリプションは更新できる場合は、接続許可、ネットワーク、設定を引き続き確認します。これらを更新エラーと混同しないでください。
まとめ:失敗した段階ごとに情報を記録する
取得に失敗した場合はネットワークエラーまたはHTTPステータスを記録し、解析に失敗した場合は出力形式を確認します。一覧が更新されたのに接続できない場合は、選択項目とルーティングを調べてください。一度に変更する条件を一つに絞ると、どの変更が有効だったか判断できます。
作業の後に手動更新をもう一度行い、対象のグループを正常に更新できることを確認します。Update on Openが普段の使い方に合っているかも確認してください。問い合わせが必要な場合は、実行方法、エラーの原文、ネットワークの種類、すでに確認した内容をまとめれば十分です。サブスクリプションの認証情報を公開する必要はありません。