ShadowrocketでサブスクリプションURLを保存しても、ノードの取得・解析が完了したとは限りません。利用中のサービス提供元とサブスクリプションがある方を対象に、「表示状態、URL、応答内容、手動更新、自動更新」の順で確認します。まず現在の設定とエラー内容を残し、結果を確認できる方法で一度更新して原因を切り分けましょう。何度も削除したり、重複して追加したりする必要はありません。
まず確認:一覧が空・グループが折りたたまれている・接続できない
まずHomeで追加したサブスクリプショングループを確認します。グループ名が表示されていても、端末に項目が保存されていることしか分かりません。サブスクリプションの取得が成功したことや、応答内容に認識可能なノードが含まれていることを示すものではありません。グループが折りたたまれている場合は展開し、検索条件を解除してから、本当に項目がないか確認してください。
「ノードが空」と「ノードに接続できない」は、問題が発生している段階が異なります。前者ではURL、取得した応答、解析結果を確認します。後者はノードを選択できる状態なので、サーバーアドレス、ポート、認証情報、接続経路を調べます。ノード一覧を取得できていない段階で、プロトコル設定を変更したりGlobal Routingを何度も切り替えたりしないでください。
- グループはあるがノードがない:今回の更新結果を記録し、サブスクリプションのリクエストと応答内容を確認します。
- 展開するとノードが表示される:表示状態が変わっただけか確認し、同じ名前のサブスクリプションを作り直さないでください。
- ノードはあるがテストに失敗する:現在の一覧を残して、接続の問題を別途確認します。遅延テストではサブスクリプションを更新できません。
- 以前のノードは残っているが新しいノードがない:直近の更新が完了したか確認してください。以前の一覧が残っているだけでは、今回のリクエストが成功した証拠にはなりません。
URLを確認:アカウントページではなくサブスクリプションURLをコピー
利用中のサービス提供元のアカウントページに戻り、サブスクリプション用として明記されたコピー機能を使ってください。ブラウザーのアドレスバーにあるアカウントのトップページをコピーしたり、案内文全体を貼り付けたりしないでください。ブラウザーで開けるページでも、ログインページ、案内ページ、エラーページの場合があり、Shadowrocketで解析できるサブスクリプションデータとは限りません。
以下はURLの構造を説明するための架空の例で、利用できるサブスクリプションではありません。URL内のクエリパラメーターが認証に使われている場合があります。パラメーター名は必ずしもtokenとは限らないため、例を参考に実際の値を置き換えないでください。
https://example.com/sub?token=xxxx
- 先頭と末尾を確認:URL全体がコピーされ、前後に空白、改行、引用符、日本語の句読点が入っていないことを確認します。
- 元の文字列を保持:
?、&、=、%以降を変更したり、自分でデコードして再結合したりしないでください。 - コピー元を確認:チャット、メールのプレビュー、画像からの文字認識では、長いURLが途中で切れることがあります。元のページに戻ってコピーし直してください。
- URLの用途を確認:サブスクリプションURLはノード一覧を取得するためのものです。個別ノードの共有情報やConfigの設定ファイルとは入力の種類が異なります。
- 認証情報の状態を確認:サブスクリプションの認証情報をリセットした場合、形式が正しい以前のURLでも無効になっていることがあります。現在有効な自分のURLを取得し直してください。
手順に沿って確認:Homeで手動更新を1回実行
まず既存の項目を残したまま、種類とURLを確認します。Homeではノードとサブスクリプションを管理し、Configではルール設定を管理します。サブスクリプションURLをConfigファイルとして読み込むのは、ノードが空になる問題を調べる正しい方法ではありません。以下ではHomeからサブスクリプションを追加する手順を説明します。保存時のボタン名は現在の画面に表示される内容を確認してください。
-
現在の状態を記録
Homeで対象のグループを展開し、現在のノード数、更新メッセージ、エラーの原文を記録します。使用できる設定がすでにある場合は残し、すべての項目を削除しないでください。
-
種類を確認
元のサブスクリプションの編集画面を確認します。追加し直す必要がある場合は、Home → 右上の「+」→ Type → Subscribeの順に進み、サブスクリプションURLを個別サーバーの設定項目に入力しないようにしてください。
-
URLを確認
自分のサブスクリプションURLを省略せずURL欄に貼り付けます。認証情報を含まない分かりやすいメモを付け、途中で切れていないことを確認して保存してください。
-
手動で更新
Homeに戻り、下に引いて更新を実行し、処理が終わるまで待ちます。サブスクリプションが複数ある場合は、対象グループの結果を確認してください。別のグループで成功しても、このグループの更新が成功したことにはなりません。
-
結果を確認
対象グループをもう一度展開し、ノードが表示されたか、項目に変化があったか確認します。空のままなら、エラーの原文と発生時刻を保存してから、応答内容を調べます。
確認中はネットワークと設定を固定し、URLのリセット、ネットワークの切り替え、ルーティングの変更、再インポートを同時に行わないでください。一度に変更する条件を一つにすれば、URLの修正が有効だったのか、接続経路の変化によるものかを切り分けられます。
サーバー側を確認:HTTPリクエストの成功と解析の成功は別
サブスクリプションの取得とノードへの接続は、別々のネットワーク処理です。URLがHTTPSでも、返される内容がログインフォーム、アクセス確認ページ、または空の本文である可能性があります。HTTPステータスコードはリクエストの処理状況を示しますが、ノードが表示されるかどうかは本文の内容と形式にも左右されます。「URLを開ける」ことだけで、サブスクリプションが正常だと判断しないでください。
以下は標準的なHTTPレスポンスのステータス文です。アプリで確認できるエラー詳細や、利用中のサービス提供元から提示された応答記録と照合するためのものです。Shadowrocketに必ず同じ文言が表示されるとは限りません。一般的な失敗メッセージしか表示されない場合は、推測でステータスコードを補わず、メッセージをそのまま記録してください。
401 Unauthorized
原因と対処:有効な認証情報がリクエストに含まれていないか、認証が拒否されています。利用中のサービス提供元に認証情報が有効か確認し、現在のURLをコピーし直して更新してください。
403 Forbidden
原因と対処:サーバーがリクエストを拒否しています。アカウントの権限やアクセス制限が関係している可能性があります。機密情報を隠した記録を提供元に共有して拒否理由を確認し、ルーティングを切り替えて推測するだけで済ませないでください。
404 Not Found
原因と対処:リクエスト先のリソースが見つかりません。まずURLが途中で切れていないか、以前の入口が無効になっていないか確認し、現在のサブスクリプション用URLを確認してください。
429 Too Many Requests
原因と対処:リクエスト回数がサーバー側の制限に達しています。連続更新を止め、サーバーの案内に従って待ってください。Retry-Afterが示されている場合は、その指示に従って再試行します。
結論:200でも一覧が空なら、まず本文を確認
利用中のサービス提供元に、Shadowrocketで扱える形式のサブスクリプションデータが空でない状態で返されているか確認してください。ウェブページや別形式のデータではないことが分かってから、解析の問題を調べましょう。
ネットワークと解析:リクエストのタイムアウトと形式の不一致を切り分ける
リクエストのタイムアウト、ドメイン名の解決失敗、TLS検証エラーは、解析可能な内容を取得する前に起きています。特定のノードプロトコルが原因とは限りません。まず端末の時刻と、現在のネットワークでウェブ認証が必要かを確認し、自分が利用できる別のネットワークでも一度更新して比較します。証明書エラーを回避するために、検証を無効にしたり、出所不明の証明書をインストールしたりしないでください。
| 確認できる現象 | まず判断すること | 次に行うこと |
|---|---|---|
| 長く待った後にタイムアウトする | リクエスト経路またはサーバー応答が完了していない | URLはそのままにして利用可能な別のネットワークで一度比較し、時刻を記録する |
| ログインページまたは認証ページが表示される | 取得したのはウェブページで、ノードデータではない | サブスクリプションの入口からクライアントが直接取得できるか確認する |
| リクエストは完了したが本文が空 | 現在のアカウントに返却可能な項目がない可能性がある | 利用中のサービス提供元にアカウント状態、利用権限、応答記録を確認してもらう |
| 本文は空ではないが一覧に表示されない | 内容形式または項目のフィールドを確認する必要がある | エクスポート形式がShadowrocketに対応しているか確認し、機密情報を除いたサンプルで調べる |
| 一部の項目だけ表示される | サブスクリプション全体にアクセスできないと即断しない | 不足している項目の種類と必須パラメーターを照合し、件数だけで判断しない |
Global RoutingのProxy、Direct、Config、Sceneはルーティングの選択肢であり、サブスクリプションの形式を変換する設定ではありません。更新時に使われる実際の経路が、すでに使えないプロキシに依存している場合は、リクエストに影響する可能性があります。ただし、どのサブスクリプションも特定の状態で更新しなければならないという意味ではありません。現在の選択状態を記録し、エラー内容と利用可能なネットワークをもとに、条件を一つずつ変えて比較してください。
サブスクリプションのテキストが「エンコードされているように見える」というだけで、破損したと判断しないでください。サブスクリプションによって形式やラッパーが異なる場合があります。Base64をむやみにデコードしたり、行を削除したり、プロトコル名を書き換えて元の内容に上書きしたりしないでください。確認すべきなのは、提供元から正しい形式が返されているか、各項目のパラメーターが揃っているかです。手作業で正常に見える一覧を組み立てることではありません。
更新タイミング:手動更新を確認してから自動更新を調べる
初回の追加、手動更新、その後の自動更新はそれぞれ別の処理です。URLを保存しても、バックグラウンドで取得が直ちに完了するとは限りません。自動更新を有効にしていても、特定の時点でリクエストが必ず成功することの証明にはなりません。まずアプリを前面に表示した状態で結果を確認できる手動更新を一度行い、アプリに用意されているサブスクリプションの自動更新設定と間隔を確認してください。具体的な設定場所や項目は、アプリ内の表示に従ってください。
- アプリを長期間開いていない:Homeを開き直して手動更新を一度行います。設定した間隔だけを根拠に、一覧がすでに変わっているはずだと判断しないでください。
- アカウントが利用可能な状態に戻ったばかり:利用中のサービス提供元に変更が反映されたことを確認してから更新します。端末の表示だけでは、サーバー側の変更完了を確認できません。
- サブスクリプションの認証情報をリセットしたばかり:まず端末に保存したURLを差し替えてから更新します。無効になった認証情報を使い続けても、更新回数を増やすだけでは復旧しません。
- 手動更新は成功するが自動更新では変化が見られない:アプリが前面にあったか、端末のネットワーク、現在の更新設定を記録し、新しい内容がないのか、更新が開始されなかったのか、開始後に失敗したのかを切り分けます。
- 手動更新も自動更新も失敗する:URLと応答内容の確認に戻ります。リクエスト制限を招かないよう、更新間隔を短くするだけの対応は避けてください。
問い合わせ用の情報と復旧後の確認
ここまで確認しても一覧が空の場合は、「追加できない」とだけ伝えるより、再現できる記録を利用中のサービス提供元に送ると原因を特定しやすくなります。サブスクリプションの認証情報をそのまま添付しないでください。アカウントの確認が必要な場合は、提供元が用意している非公開のサポート窓口を利用します。当サイトではノードやサブスクリプションを提供・販売・推奨していません。この記事では、利用者がすでに持っている情報の確認方法を説明しています。
- 現象:グループが空なのか、一部の項目がないのか、ノードはあるが接続に失敗するのかを説明します。
- 発生時刻:サーバー側のリクエスト記録と照合できるよう、日付、時刻、タイムゾーンを記録します。
- 操作:Homeで手動更新した結果と、ネットワークを切り替えたかどうかを説明します。
- エラー:実際に表示されたエラー文をそのまま残します。ステータスコードが表示されていない場合は、推測した値を書き足さないでください。
- 利用環境:端末、システム、アプリ内で確認できるバージョン情報を記録します。URL、パスワード、token、QRコード全体は公開しないでください。
一覧が復旧したら、まず対象グループに項目が表示されていることを確認してから、自分のノードを選んで接続をテストします。特定のノードだけ接続できない場合は、サブスクリプションの再追加を繰り返さず、そのノードの設定値とサービス状態を確認してください。手動更新が成功したら、次回の自動更新も観察し、問題が特定のタイミングでのみ起きるか確認します。
クライアントアプリの買い切り購入と接続サービスのプランは別です。ShadowrocketはAppleプラットフォーム向けの有料アプリで、入手先はApp Storeのみです。アプリを購入しても接続サービスは含まれません。iPhone、iPadなど互換性のあるAppleデバイスのシステム要件は、App Storeの掲載内容をご確認ください。