Shadowrocketのサブスクリプション更新では、まず応答を取得し、その内容からサーバー項目を解析します。利用中のサービスとサブスクリプションがすでにあることを前提に、「現状を保つ」「URLを確認する」「応答を調べる」「ネットワークを検証する」「自動更新を見直す」の順で確認します。リクエスト失敗、形式に合わない応答、成功応答だがリストが空の状態を切り分けてから次に進むことで、サブスクリプションを何度も削除して比較対象を失う事態を避けられます。
1. 更新失敗・解析失敗・リストが空の状態を切り分ける
サブスクリプションの更新に失敗しても、既存のサーバーがすぐ使えなくなるとは限りません。リストが空でも、リクエストが送信されていないとは限りません。更新処理には、ネットワークリクエスト、認証、コンテンツ解析、リスト表示の各段階があります。問題が起きた段階と現象を記録し、すべてを「リンクの不具合」とひとまとめにしないようにしましょう。
まずHomeに戻り、別のグループやフィルター適用後の結果ではなく、対象のサブスクリプショングループを表示していることを確認します。次に、既存項目が残ったまま更新失敗の表示が出ているのか、更新後に対象グループが本当に空になったのかを切り分けます。Configに構成ファイルが表示されていても、サブスクリプションが正常とは限りません。構成ファイルとHomeのサーバーリストは、別々に確認する必要があります。
- 手動更新した時刻、接続中のネットワーク(Wi-Fiまたはモバイル通信)、エラー全文を記録します。
- 更新前の対象グループにある項目数を記録します。復元可能な構成がある場合は、先にコピーを保存し、サブスクリプションの削除を最初の手段にしないでください。
- 対象のサブスクリプションだけを手動で一度更新し、エラー表示とリストの変化を確認します。複数の配信元を同時に更新するのは避けてください。
- 特定の項目だけ接続できない場合は、その項目のアドレス、ポート、認証情報を確認します。「空のサブスクリプション」の問題として扱い続けないでください。
2. サブスクリプションURLの完全性と応答内容を確認する
サブスクリプションURLは項目一覧を取得するための入口であり、サービスのアカウントページや単一の共有リンクとは異なります。ss://、vmess://、vless://、trojan://は通常、単一の接続情報を示します。インポートできるからといって、定期更新に使えるサブスクリプションURLとは限りません。また、HTTPSのURLが必ずサブスクリプションとも限りません。ログインページ、ヘルプページ、エラーページもHTTPSで表示されることがあります。
https://example.com/sub?token=xxxx
上記は接続に使用できない形式の例です。実際に確認するときは、プロトコル、ホスト名、パス、クエリパラメーターを一つずつ比較します。特に、コピー時に?以降が抜けていないか、&が文字列の&に置き換わっていないか、チャットの文章に含まれる句点・引用符・改行まで一緒に貼り付けていないかを確認してください。長く見えるtokenを独断で削除したり、パーセントエンコードを書き換えたりしないでください。
- コピー元:利用中のサービスのアカウントページから、Shadowrocket用のサブスクリプションURLをコピーし直します。置き換える前に、新旧のURLが一致しているか比較してください。
- 応答形式:サーバーから返されるのがアプリで認識できるサブスクリプション形式であり、構成ページ全体やアカウント案内、Webフォームではないことを確認します。
- 機密情報:tokenにはアクセス権限が含まれる場合があります。URL全体を公開スクリーンショット、オンラインデコードサイト、公開掲示板に載せないでください。
- 確認できる範囲:ブラウザーでURLを開けても、そのブラウザーが何らかの応答を取得できたことしか分かりません。ブラウザーのログイン状態が、アプリからのサブスクリプションリクエストにも引き継がれるとは限りません。
ブラウザーにログイン画面、認証コード、期限切れの案内が表示された場合は、まずアカウント側の問題を解消してください。Webページから保存したテキストをサブスクリプションとして再インポートしないでください。エンコードされたように見えるテキストが表示されても、見た目だけで解析可能とは判断できません。そのURLが該当アプリ用のエクスポート先であることを確認してください。
3. HTTP応答から期限・制限・空の応答を確認する
サービス側のアカウント期限、通信量の状態、サブスクリプションURLの再発行、リクエスト頻度の制限などが、応答に影響することがあります。利用中のサービスのアカウントページで項目ごとに確認し、実際の応答に基づいて判断してください。以下はHTTP標準の応答文です。エラー詳細やサーバー記録に該当するステータスが実際にある場合に限って当てはまり、Shadowrocketに必ず同じ文言が表示されるという意味ではありません。
エラー:401 Unauthorized
原因:リクエストが認証されていません。認証情報が不足しているか、無効になっている可能性があります。対処:利用中のサービスのアカウントページでサブスクリプションURLが再発行されていないか確認します。URL全体をコピーし直してから、一度だけ再試行してください。
エラー:403 Forbidden
原因:サーバーがリクエストを拒否しました。アカウント権限、接続元の制限、アクセス方針などが関係している可能性があります。対処:アカウントの状態を確認し、個人情報を伏せたエラー内容と発生時刻を利用中のサービスに伝えてください。クライアントの解析エラーだと決めつけないようにしましょう。
エラー:429 Too Many Requests
原因:リクエストがサーバーの頻度制限に達しました。対処:連続更新を止め、応答にRetry-Afterが含まれている場合は指定された時間待ってから、一度だけ確認します。
エラー:503 Service Unavailable
原因:サーバーが一時的にリクエストを処理できません。メンテナンス中または過負荷の可能性があります。対処:既存項目を残したまま、時間をおいて再試行します。利用中のサービスから現在の稼働状況が案内されていないかも確認してください。
ステータスが200 OKでも、HTTPリクエストが正常に処理されたことを示すだけで、有効なサーバー情報が応答に含まれるとは限りません。本文が空の場合や、アカウント案内のテキスト、HTMLページが返される場合もあります。項目数が0件になった場合は、アカウント側に利用可能な項目が残っているか、サブスクリプションのエクスポートで想定どおりの内容が返されているかも確認してください。
まとめ:応答を確認してから解析関連の設定を見直す
実際の応答がログインページ、権限に関する案内、空の本文であれば、ルールやサーバープロトコルを変更しても不足した項目は戻りません。まずサブスクリプションの取得先から有効な応答が返る状態にし、その後に一度手動更新してください。
4. 条件を一つずつ変えて更新時のネットワーク経路を確認する
サブスクリプション更新リクエストの到達性と、サブスクリプション内の個々のサーバーへの到達性は別の問題です。既存項目で接続できても、サブスクリプションURLにアクセスできるとは限りません。サブスクリプションを更新できても、新しい項目すべてで接続できるとは限りません。確認中は現在の構成を保ち、一度に変更する条件を一つにして、結果を記録してください。
- 基本ネットワークを確認:現在のWi-FiでWeb認証を完了します。ネットワーク自体が使えない場合は、まず接続の問題を解消してからアプリに戻り、更新してください。
- 接続ネットワークを切り替える:可能であればWi-Fiからモバイル通信に切り替え、同じURLを一度更新します。URLは変更せず、2回の結果が成功したかどうかだけ記録してください。
- 更新専用の設定を確認:Settings → Subscribeを開き、現在の画面に表示される更新オプションを確認します。
Update via Proxyがある場合は、まず現在の状態を記録してください。利用可能な接続がある場合に限ってプロキシ経由の更新を試し、元の状態と結果を比較します。 - 証明書と時刻を確認:証明書またはTLSエラーが表示された場合は、端末の日付と時刻、接続先ドメインが正しいかを確認します。証明書検証を無効にしてエラーを覆い隠さないでください。
Home → Global RoutingにあるProxy、Direct、Config、Sceneを、サブスクリプションの解析形式を切り替える設定と混同しないでください。これらはルーティングに関するもので、途中で切れたtokenを修復したり、HTMLをサーバーリストに変換したりするものではありません。更新リクエストがプロキシ経由になるかは、更新専用の設定と現在の接続状態をあわせて確認してください。設定名だけを見て、すべてのリクエストの経路を判断することはできません。
同様に、DOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALを変更しても、空の応答への対処にはなりません。サブスクリプションのドメインが現在のルーティング経路の影響を受けていると確認できた場合にのみ、関連設定を詳しく調べ、変更前にコピーを保存してください。
5. 手動更新の成功を確認してから、自動更新のタイミングを見直す
自動更新は、有効なURLや使えるネットワークの代わりにはなりません。まずアプリを前面に表示した状態で手動更新し、想定した項目がリストに表示されることを確認します。その後、Settings → Subscribeで実際に表示される自動更新の設定と間隔を確認してください。画面によって表示が異なる場合があるため、端末に表示されている項目を基準にします。特定の時刻にすべての端末で必ず実行されると考えないでください。
- まず前面表示で基準を取る:手動更新が成功した時刻と項目数を記録してから、自動更新を有効にするか設定を変更します。リクエストの失敗と実行タイミングの違いを切り分けやすくなります。
- 短時間の連続更新を避ける:自動更新を確かめるために、更新ボタンを何度も続けて押さないでください。短時間に繰り返しリクエストすると頻度制限に達し、もともと使えていた条件を変えてしまう可能性があります。
- システムの実行タイミングを考慮する:画面ロック中、バックグラウンド動作中、ネットワーク切り替え中に、アプリが常に実行されるとは限りません。アプリを前面に戻して、実際のリストと更新結果を確認してください。
- 動作の仕組みを区別する:Settings → On Demandは条件に応じてVPN接続を確立する機能で、サブスクリプションの定期更新設定ではありません。On Demandを有効にしても、毎回サブスクリプションが取得されるとは限りません。
自動更新に失敗して手動更新が成功する場合は、実行時のネットワーク、接続状態、更新経路を優先して比較してください。手動更新も失敗する場合は、URLと応答の確認に戻り、更新間隔をさらに短くしないでください。復旧後は、新しい項目のアドレス、ポート、プロトコルをいくつか確認します。サブスクリプション更新の成功は構成を取得できたことを示すだけで、接続できるかどうかは別途確認が必要です。
6. よくある質問と問い合わせ時に伝える情報
既存のサーバーは使えるのに、サブスクリプションを更新できないのはなぜですか?
既存項目には以前の接続パラメーターが保存されていますが、更新リクエストはサブスクリプションURLにアクセスします。まず利用中のサービスのアカウントページでURLとtokenが有効か確認し、Homeで対象のサブスクリプションを一度手動更新してください。更新を確かめるために、使える項目を先にすべて削除しないでください。
ブラウザーでは内容が表示されるのに、アプリでは空のままなのはなぜですか?
まず、表示内容がログインページ、エラー案内、または対応していないエクスポート形式ではないか確認してください。ブラウザーでログインできても、アプリのリクエストが同じセッションを使うとは限りません。ブラウザーのアドレスバーにあるアカウントページのURLではなく、アカウントページに記載されたShadowrocket用のサブスクリプション入口を確認してください。
更新後に項目数が減りました。すぐに何度も更新するべきですか?
まず対象グループとフィルターの状態を確認し、アカウント側で実際に提供されている項目数も確認してください。変化した時刻を記録し、連続更新は止めます。項目数の減少はサーバー側の内容変更による場合も、一部の内容を解析できなかった場合もあります。応答とエラー詳細をあわせて判断してください。
サブスクリプションURL全体を他の人に送って確認してもらってもよいですか?
tokenを含むURL全体を公開・送信しないでください。問い合わせには、ドメインの一部を伏せた情報、発生時刻、ネットワークの種類、エラー原文、更新前後の項目数を伝えれば十分です。認証情報が漏えいした場合は、まず利用中のサービスのアカウントから再発行し、アプリに保存したURLを差し替えてください。
利用中のサービスに問い合わせる際は、「使えない」という説明を、再確認できる内容に置き換えましょう。たとえば「モバイル通信でアプリを前面に表示して手動更新したところ、応答は403で、既存項目は残っていました。Wi-Fiに切り替えても同じ結果でした」のように伝えます。ステータスコードを確認できていない場合は、推測せず実際の表示内容を記載してください。このような記録があれば、アカウント、ネットワーク、コンテンツ形式の問題を切り分けやすくなり、機密性の高いURLを何度も求められることも減らせます。
Shadowrocketの正規版確認と使い方ガイド
ShadowrocketはAppleプラットフォーム向けのクローズドソースの商用アプリです。入手先はApp Storeのみで、主にiPhoneとiPad向けです。開発者がShadow Launch Technology Limited、アプリIDが932747118であることを確認してください。システム要件と購入対象の範囲はApp Storeページの記載をご確認ください。アプリの買い切り購入と通信サービスのプランは別です。サブスクリプションの状態は、ご自身が利用するサービス側で確認してください。