Shadowrocketに自分のサブスクリプションを追加済みの方を対象に、「対象の確認」「手動更新」「Update on Openの有効化」「応答に応じたトラブル対処」の順で説明します。リスト取得の失敗と接続の失敗を切り分け、手動更新で結果を確認する方法も紹介します。
サブスクリプション更新の対象と事前確認
ShadowrocketはAppleプラットフォーム向けの有料クライアントです。入手先はApp Storeのみで、開発元はShadow Launch Technology Limited、アプリIDは932747118です。買い切り型で、システム要件とユニバーサル購入の詳細はApp Storeの掲載内容をご確認ください。アプリの購入と接続サービスの契約は別です。この記事では、ご自身でサービス提供元とサブスクリプションを用意していることを前提に説明します。
サブスクリプションの更新では、保存済みのURLに再度アクセスし、応答からノード情報を読み込みます。アプリ自体のアップデートでも、Config内のルール設定の更新でもありません。Homeのサブスクリプショングループ、手動で追加した個別ノード、Configで選択している構成ファイルは、それぞれ分けて確認してください。一度リストを更新しただけで、すべてが同期したとは限りません。
更新前に、どのグループを操作するか確認し、現在選択中のノード名を控えておきましょう。更新後にノード名や設定が変わったり、ノードが削除されたりすることがあります。リストに大きな変化があった場合は、ノードを選び直してください。サブスクリプションURLはご自身で保管し、完全なURLを公開の場に投稿しないでください。クエリパラメーターのトークンは、アクセス認証情報として機能する場合があります。
- サブスクリプショングループがある場合:Homeでグループ名を確認し、保存されているURLがサービス提供元の最新のものか確かめます。
- 個別ノードのみの場合:単独で追加したノードは、別のサブスクリプションを更新しても自動では新しい設定になりません。追加元と更新方法を確認してください。
- ルール設定のみの場合:Config内の構成更新とHome内のサブスクリプション更新は別の操作です。不足しているのがノードかルールかを先に確認してください。
手動更新:まず1グループで確認し、その後リストを更新
手動更新は、初回追加後の内容確認、サービス提供元からノード変更の案内があった場合の反映、自動更新に失敗した場合の再確認に適しています。まず1つのグループで実行すれば、原因をそのURLに絞り込めます。複数のグループを更新した場合は、それぞれの結果を確認し、1つが成功しただけですべて成功と判断しないでください。
- Homeを開き、更新するサブスクリプショングループを見つけて、グループ名と現在のノード数を控えます。
- サブスクリプショングループのタイトルを長押しし、操作メニューからUpdateを選択して、リクエストが完了するまで待ちます。操作対象はグループであり、個々のノードではありません。
- サブスクリプションのリストを更新するには、Homeのリストを下に引いて更新します。複数のサブスクリプションがある場合は、グループごとに結果を確認してください。
- 更新後、対象のグループを開き、必要なノードが表示されているか、以前の名前が変わっていないかを確認し、現在選択中のノードも確認します。
- エラーが表示された場合は、エラーメッセージと発生時刻を控えます。その後、URL、通信経路、応答形式を確認してください。連続して何度も操作するのは避けましょう。
ノード数が変わらなくても、更新されていないとは限りません。サーバーから同じ内容が返された可能性があります。反対に、ノード数が増えても、ノードが使えるとは限りません。確認は2段階に分けます。まずサブスクリプションの取得と解析が成功したかを確かめ、次にノードを選択して実際にアクセスできるかテストします。別々の問題として記録してください。
起動時の自動更新:設定場所と実行タイミング
Settings → Subscribeを開き、Update on Openを見つけて有効にします。この設定はアプリを開いたときにサブスクリプションの更新を実行するもので、アプリ終了後に一定間隔でバックグラウンド更新する機能ではありません。実際のリクエスト時刻は、システムのバックグラウンド処理、ネットワーク状況、アプリの状態によって変わります。
- まずHomeで対象のサブスクリプションを手動でUpdateし、現在のURLから認識可能な内容が正常に返ることを確認します。
- Settings → Subscribe → Update on Openを開き、この設定を有効にします。
- アプリをいったん終了してから再度開き、Homeでサブスクリプションの更新結果を確認します。結果を確認できない場合は、対象グループを手動で更新して確かめてください。
- アプリを開いたときにネットワークがまだ利用できない場合は、Wi-Fiまたはモバイル通信が使える状態になってから再試行します。自動更新が実行されなかった場合、リストが同期済みだと決めつけないでください。
Settings → On Demandでは、条件に応じて接続を開始する動作を設定します。サブスクリプションの自動更新設定ではありません。2つは個別に設定できます。On Demandを有効にしてもUpdate on Openが有効になるわけではなく、自動更新を無効にしてもOn Demandが停止するわけではありません。
| 設定・操作 | 対象 | これだけでは判断できないこと |
|---|---|---|
| Home → Update | 対象サブスクリプションのノード情報 | 更新成功はノードの接続成功を意味しない |
| Settings → Subscribe → Update on Open | アプリ起動時の更新実行 | 一定間隔で実行するバックグラウンドタスクではない |
| Settings → Subscribe → Update via Proxy | サブスクリプションリクエストの通信経路 | 期限切れのトークンや形式の誤りは解決しない |
| Settings → On Demand | 接続をオンデマンドで開始する条件 | サブスクリプション更新の設定を代替しない |
まず手動更新を成功させてから、自動実行を有効にする
同じURLで手動更新にも失敗する場合は、まずエラーの原因を解消してください。Update on Openを何度切り替えても、サーバーの応答やサブスクリプションの内容は変わりません。
更新できないときはURL・通信・形式を順番に確認
まず「応答が届かない」場合と「応答は届くが利用できない」場合を切り分けます。前者はネットワーク、DNS、リクエスト経路を優先して確認し、後者はアクセス権限とコンテンツ形式を確認します。以下では、よくあるHTTP応答やシステムエラーの原文を紹介します。実際のメッセージには詳しい情報が続く場合があるため、全文を確認してください。
応答:401 Unauthorized
原因と対処:サブスクリプションのエンドポイントで必要な認証情報が不足している、期限切れになっている、または受け付けられていません。ご自身のサービス提供元のアカウントで最新のサブスクリプションURLを確認し、元のURL全体を置き換えてから更新してください。ドメイン部分だけをコピーしないようにします。
応答:403 Forbidden
原因と対処:サーバーがリクエストを拒否しています。アカウントの状態やアクセス方針が原因の可能性があります。まずご自身のサービス提供元に拒否理由を確認してください。ネットワークを変更しても、アクセス制限が解消するとは限りません。
応答:404 Not Found
原因と対処:リクエスト先のパスが存在しないか、サブスクリプションのURLが変更されています。URLが途中で切れていないか、パスが完全かを確認し、アカウントから現在有効なURLを取得し直してください。
エラー:The request timed out.
原因と対処:制限時間内にリクエストが完了しませんでした。タイムアウトだけでは、どの通信経路に問題があるか判断できません。まずWi-Fiとモバイル通信を切り替えて再確認し、次のセクションでUpdate via Proxyの利用条件を確認してください。
明確なHTTPエラーがないのに更新後のリストが空の場合は、サーバーから何が返されたかを確認してください。ログイン画面、アカウントに関する案内、Web認証ページ、空の応答は、ノードのサブスクリプションとしてそのまま解析できません。ステータスが200 OKでも、HTTPリクエストが成功したことを示すだけで、内容がShadowrocketで認識できるサブスクリプション形式とは限りません。
- URLが正確か確認:先頭や末尾に空白、改行、余計な記号が入っていないか確認してください。クエリパラメーターの文字は変更しないでください。
- 形式を確認:ご自身のサービス提供元が用意しているサブスクリプションの選択肢から、Shadowrocketに対応する形式を選びます。アカウント管理ページのURLをサブスクリプションURLに入力しないでください。
- 応答を確認:問い合わせる際は、ステータスコード、エラーメッセージ、発生時刻を伝えてください。サブスクリプションURL全体、トークン、ノードの認証情報は伏せてください。
Update via Proxy:更新経路の循環依存を避ける
直接接続ではサブスクリプションのエンドポイントにアクセスできず、既存ノードでは接続できる場合は、Settings → Subscribe → Update via Proxyを開いて有効にし、手動更新を再度実行します。利用前に、現在の接続でインターネットにアクセスできることを確認してください。利用可能なプロキシ接続がない状態で設定だけを有効にしても、新しい通信経路は確立できません。
サブスクリプションURLがhttpsで、ポート番号が明示されていない場合、通常はTCPの443で接続します。ノード自体のポートは設定によって決まり、両者に必ず関連があるわけではありません。更新先のHTTPSリクエストがタイムアウトしても、ノードのポートを変更する必要があるとは限りません。また、エラーを回避するために証明書の検証を無効にしないでください。
- Homeで利用可能な既存ノードを選択して接続し、まず一般的なWebページにアクセスできることを確認します。
- Home → Global Routingで現在の設定を確認します。Proxy、Direct、Config、Sceneはそれぞれ異なるルーティング方式です。元の設定を記録せずに複数の項目を同時に変更しないでください。
- Settings → Subscribe → Update via Proxyを有効にし、失敗したサブスクリプションだけを対象に、もう一度Updateを実行して結果が変わるか記録します。
- それでも失敗する場合は、ローカルネットワークを切り替えて比較します。401または403が返る場合は、ルーティングを調整し続けるのではなく、認証情報とアクセス権限を確認してください。
更新後の確認とよくある質問
サブスクリプションの同期後、Homeに戻って現在のノードを確認し、アクセスしたい宛先への接続をテストします。Configのルーティング方式を使っている場合、リクエストの処理方法は現在有効な構成のルールにも左右されます。サブスクリプションを更新してもGlobal Routingが別の方式に切り替わることはなく、特定のドメインが必ずプロキシ経由で通信するとも限りません。
自動更新を有効にしたのに、アプリを開いてもノードが変わらないのはなぜですか?
サーバー側でノード情報が変更されていないか、今回のリクエストが完了しなかった可能性があります。Homeで対象グループのUpdateを手動実行し、エラーの有無を確認してから、変更されるはずのノード名を確認してください。リスト内のノード数だけで判断しないようにします。
サブスクリプションの更新に成功したのに、接続できないのはなぜですか?
更新の成功で確認できるのは、サブスクリプションの取得と解析までです。ノードを選び直し、接続スイッチとGlobal Routingを確認してから、ネットワークアクセスを個別にテストしてください。ノードの設定やアカウントの状態に問題がある場合は、ご自身のサービス提供元に確認します。
Update via Proxyは常に有効にしておく必要がありますか?
サブスクリプションのエンドポイントに実際にアクセスできるかどうかで判断します。直接接続が安定している場合は、直接接続を利用できます。プロキシ経由でのみアクセスできる場合は、既存の接続が使えることを先に確認してから更新してください。設定を切り替える前後に手動更新を行い、リクエストが安定して完了する設定を使います。
サブスクリプションURLを変更したら、元のグループをすべて削除する必要がありますか?
まず既存グループの編集画面でURLを確認・変更し、保存後にUpdateを実行します。別途追加してグループが重複した場合は、新しいグループが使えることを確認してから古いグループを整理してください。残しておく必要のある個別ノードまで削除しないよう注意します。
さらに調べる場合は、対象グループ、操作時刻、接続中のネットワーク、Update via Proxyの状態、エラーメッセージ全文の5点を記録してください。1回ごとに変更する条件は1つだけにして、手動更新を実行します。URLの失効、通信経路の問題、応答形式の不一致を切り分けられ、ノードの接続不良をサブスクリプション更新の問題と誤認するのも防げます。