この記事の概要

自分で契約したサービスのサブスクリプションを利用し、Homeのサーバー一覧を更新したい方向けです。まず手動更新でリンクが使えることを確認し、その後、アプリ起動時の自動更新を有効にします。更新に失敗した場合は、リンク、応答内容、ネットワーク、端末の時刻を順に確認してください。最後に「サブスクリプションの更新」と「サーバーへの接続」を別々に検証し、混同しないようにしましょう。

1. サブスクリプション更新・Config更新・接続の違い

ShadowrocketはAppleプラットフォーム向けの有料クライアントで、入手先はApp Storeのみです。開発者はShadow Launch Technology Limitedです。主にiPhoneとiPadで利用でき、その他のAppleデバイスとの互換性やシステム要件、購入条件はApp Storeの掲載内容をご確認ください。この記事では、利用者がすでに持っているサブスクリプションをアプリで読み込む方法を説明します。サービスの選び方は扱いません。

HomeのSubscribeには、リモートのサブスクリプションURLが保存されています。更新時にはアプリがURLへリクエストを送り、応答内容を解析して、該当するサーバーグループを更新します。Config内の構成ファイルはルールやポリシーなどを管理するものです。Homeのサブスクリプションを更新しても、Configファイルの再取得やGlobal Routingの変更にはなりません。

Home
Subscribeとサーバーグループを確認
Config
構成ファイルとルールを確認
Settings
サブスクリプションの更新設定を管理

判断のポイント:更新対象を確認する

サーバーのアドレスや数が変わった場合は、Homeのサブスクリプションを確認します。Webサイトへの振り分けを調整したい場合は、ConfigとGlobal Routingを確認してください。サブスクリプションのリクエストエラーを直すために、DOMAIN-SUFFIXやFINALのルールを先に変更する必要はありません。

2. 手動更新:Homeから登録済みのサブスクリプションを更新

自動更新を確認する前に、まず手動更新を一度実行し、結果を確認しましょう。サブスクリプションをまだ追加していない場合は、Home右上の「+」からAdd Serverを開き、TypeをSubscribeに設定して、自分のサブスクリプションURLを入力して保存します。登録済みのものを毎回追加し直す必要はありません。重複して追加すると、名前の似たグループが複数でき、どれを使っているのか分かりにくくなります。

  1. サブスクリプションを確認

    Homeを開き、該当するサブスクリプショングループを探します。URLを確認するには、Subscribeの項目を開いて編集情報を表示し、サービスの管理画面に記載されたURLと一致しているか確認します。アカウントのログインページや説明ページのURLではありません。

  2. 下に引いて更新

    Homeのサーバー一覧を下に引き、サブスクリプションを更新します。複数登録している場合は、どのグループの更新結果か確認してください。エラーが表示されたら内容を記録し、更新アニメーションが終わっただけで成功と判断しないようにしましょう。

  3. 結果を確認

    リクエストが完了したら、該当グループのサーバー名と数を確認します。サービス側の内容に変更がなければ、更新が成功しても表示上の増減がない場合があります。変更されるはずなのに反映されていない場合は、サブスクリプションURLとサービス側の内容を再確認してください。

  4. 接続を確認

    一覧が正常に読み込まれたことを確認したら、自分に利用権限のあるサーバーを選び、接続をテストします。更新成功が示すのは、サブスクリプションの取得と解析ができたことです。すべてのサーバーに接続できることを保証するものではありません。

更新によってグループ内の項目が置き換わる場合があります。以前選択していた項目が削除、改名されたり、パラメーターが変更されたりした場合は、現在の選択内容を確認し直してください。サブスクリプションの項目を手動で変更しても、長期保存用のバックアップにはなりません。次回の更新時に、リモートから取得した内容でローカルの変更が上書きされることがあります。

3. 起動時の自動更新:設定場所と実行タイミング

Settings → Subscribeを開き、Update On Openを有効にすると、アプリ起動時にサブスクリプションが自動更新されます。アプリのバージョンや表示言語によって、大文字・小文字や項目の並びが異なる場合があります。Subscribeの設定内で「起動時に更新」するスイッチを確認してください。On Demandにある設定ではありません。

Update On Openは、アプリを閉じた後も一定間隔で継続的にデータを取得する機能ではありません。また、端末がオフラインのときに更新される保証もありません。ネットワークリクエストには、ドメイン名の解決、接続の確立、TLS検証、コンテンツの解析が必要です。どの段階で失敗しても、一覧が古いままになったり、更新エラーが表示されたりすることがあります。

4. リンク切れ・形式不一致:応答内容を確認

サブスクリプションURLには、アクセス権限を識別するためのパラメーターが含まれていることがあります。コピー時にクエリ文字列が欠ける、末尾に空白が入る、改行まで貼り付ける、リセット済みのURLを使い続けるといった場合、更新に失敗することがあります。以下は構造を示す例であり、コンテンツの取得には使えません。

https://example.com/sub?token=xxxx

URLの?以降にあるパラメーターもアドレスの一部です。ドメイン名とパスだけを残さないでください。サブスクリプションURLには認証情報が含まれるため、公開コメントやスクリーンショット、オンライン解析ページに載せないようにしましょう。サポートを求める場合は、tokenを伏せたURLの構造、エラーメッセージ、発生条件だけを伝えてください。

確認できた結果意味と次の対応
HTTP 401 または 403リクエストが認証されていないか、拒否されています。サービスアカウントの状態、URLがリセットされていないか、アクセス制限を確認してください。ステータスコードだけでは原因を特定できません。
HTTP 404 または 410リソースが見つからないか、削除されています。自分のサービス管理画面に戻り、現在のサブスクリプションURLを確認してください。新しいパスを推測して入力しないでください。
HTTP 200だが、応答がHTMLリクエストが成功しても、サブスクリプションが有効とは限りません。ログインページ、認証ページ、エラー説明ページが返されている場合があり、サーバー一覧として解析できません。
応答が空、またはデータを認識できない選択したサブスクリプションの出力形式がShadowrocketに対応しているか確認し、実際に返される内容をサービス提供元に問い合わせてください。

アプリに解析できないと表示された場合は、取得したものがサーバーのサブスクリプションであり、別形式の完全な構成ファイルではないことを確認してください。拡張子だけで形式を判断したり、内容を別の拡張子に変更したりしないでください。プロトコルごとに必要なパラメーターは異なります。認証情報や通信設定が不足していると、名前が表示されても接続できないことがあります。

5. 通信タイムアウト・端末の時刻ずれ:エラーメッセージから確認

エラーはアプリから表示される場合も、Appleのネットワークフレームワークから返される場合もあります。以下はよくあるシステムエラーの原文です。実際の表示言語や前後の文言は異なる場合があります。原文またはエラーコードを記録して、項目ごとに確認してください。すべての失敗をサブスクリプションの期限切れと決めつけないようにしましょう。

エラー:The request timed out.

原因:許容時間内にリクエストが完了しませんでした。現在のネットワーク、接続経路、接続先からの応答遅延などが考えられます。

対処法:通常のインターネット接続を確認したうえで、信頼できるWi-Fiとモバイル通信をそれぞれ使い、手動更新を試します。特定のネットワークだけで失敗する場合は、そのネットワークの制限を優先して確認してください。

エラー:A server with the specified hostname could not be found.

原因:サブスクリプションのドメイン名を解決できませんでした。入力ミス、ドメインの失効、現在のDNS名前解決の問題などが考えられます。

対処法:URLのホスト名が正しく入力されているか確認し、利用可能な別のネットワークに切り替えて再試行してください。推測したIPアドレスでHTTPSのドメイン名を置き換えないでください。

エラー:The Internet connection appears to be offline.

原因:システムがインターネットに接続できないと判断したか、アプリから現在のネットワークを利用できませんでした。

対処法:Wi-Fiでネットワークへのログインが必要か確認します。システム設定でShadowrocketのモバイルデータ通信が許可されていることを確認し、Homeに戻って更新してください。

エラー:The certificate for this server is invalid.

原因:TLS証明書の検証に失敗しました。端末の時刻ずれ、証明書の期限切れ、ホスト名の不一致、ネットワークによる通信の妨害などが考えられます。

対処法:まずシステムの日付とタイムゾーンを確認してください。時刻が正しいのにエラーが続く場合は、自分のサービス提供元に問い合わせます。証明書検証を無効にして問題を回避しないでください。

iPhoneまたはiPadのシステム設定でSettings → General → Date & Timeを開き、Set Automaticallyが有効か、日付・時刻・タイムゾーンが正しいか確認します。証明書には有効期間があるため、端末の時計が大きくずれていると、正しい証明書でも未発効または期限切れと判定されることがあります。時刻を修正したら、手動更新をもう一度実行してください。

6. 更新に成功しても接続できない場合:別々に確認

サブスクリプションの更新と実際の接続では、確認する通信が異なります。サブスクリプションURLにアクセスできても、一覧内のサーバーには接続できない場合があります。サーバーに接続できても、現在のルーティング設定が想定どおり使われていない場合もあります。まず選択中のサーバーを確認し、次にGlobal RoutingとConfigを確認してください。すぐにサブスクリプションをすべて削除する必要はありません。

たとえば、構成にDOMAIN-SUFFIX,example.com,PROXYと末尾のFINAL,DIRECTがある場合、指定したドメインにルールが適用されるかどうかで通信の出口が変わります。サブスクリプションを更新しても、これらのルールは自動では書き換わりません。接続テストではHomeに新しい名前が表示されたかだけでなく、アクセス先に想定したポリシーが適用されているかも確認してください。

まとめ:エラーの記録を残してから再登録を判断

まず更新時のメッセージ、失敗した時刻、使用したネットワーク、影響を受けたグループを記録し、URLと応答内容を確認します。元の項目に誤った情報が保存されている、またはURLの差し替えが必要だと確認できた場合に限り、サブスクリプションを登録し直してください。アプリを再インストールしても、接続先からの拒否、リンク切れ、証明書エラーは通常解決しません。

7. 問い合わせに必要な情報と日常の管理

自分のサービス提供元に問い合わせる際は、「更新できない」とだけ伝えるのではなく、再現可能な状況を説明します。リクエスト段階と接続段階のどちらに問題があるか分かる情報を用意し、サブスクリプションの認証情報は保護してください。問題が特定される前に一覧を消去したり、設定をリセットしたり、構成ファイルを削除したりせず、必要な旧グループの情報を残しておきましょう。

普段はUpdate On Openを有効にし、サービス提供元からURLやサーバー情報の変更通知があった際に手動更新を行うとよいでしょう。自動更新は繰り返し操作を減らす機能であり、利用可能性を保証するものではありません。該当グループの更新結果、現在の選択内容、実際の接続テストで最終確認してください。