2026-09-15 · トラブル対処 · 約9分

Shadowrocketのサブスクリプションが空、解析に失敗する場合の対処法|URL形式・提供元の状態・更新タイミングを確認

Shadowrocketのサブスクリプションが空、または解析に失敗する場合は、URL、応答内容、提供元の状態、更新タイミングを順に確認しましょう。

この記事の要点

既存のサブスクリプションと利用可能な項目は残したまま、「リクエストが完了しない」「取得した内容を解析できない」「有効な項目が返されない」のどれに当たるかを切り分けましょう。この記事では、すでに利用中のサービス提供元のサブスクリプションをお持ちの方に向けて、Home の Subscribe への登録、URLの確認、HTTP応答、更新時のネットワーク、再試行のタイミングを順に確認します。最初に Config をリセットしたり、サブスクリプションを何度も削除して作り直したりする必要はありません。

まず確認:サブスクリプションが空・解析失敗・接続失敗の違い

Shadowrocketのサブスクリプション更新は、登録済みのサブスクリプションURLから内容を取得し、項目を作成する処理です。一方、接続テストでは項目を使って接続します。更新に成功しても接続できるとは限らず、接続に失敗してもURLが無効とは限りません。まず問題がどの段階で起きているかを確認し、すべてを「ノードが使えない」とひとまとめにしないでください。

Home は主に項目と接続の管理、Config は構成ファイル、Settings は各種設定に使います。Config の DOMAIN-SUFFIX や FINAL を変更しても、ログインページがサブスクリプション内容に変わることはありません。既存の設定はそのままにし、サブスクリプションだけを最小限の範囲で確認すると、操作ごとの結果を判断しやすくなります。

URL形式:Subscribe から完全なアドレスを確認

手作業で欠けたURLを修正するより、利用中のサービス提供元のサブスクリプション管理ページからアドレスをコピーし直すほうが確実です。コピーするのがサブスクリプションURLであり、アカウントのトップページ、ログインページ、請求ページではないことを確認してください。URLのクエリパラメータは認証に使われることが多く、1文字欠けただけでもサーバーの応答が変わる場合があります。

  1. 現在の情報を記録

    Home で現在のサブスクリプション名、項目数、今回表示されたエラーを記録します。利用可能な項目が残っているサブスクリプションは削除せず、既存の Config も上書きしないでください。

  2. URLをすべてコピー

    利用中のサービス提供元のページからサブスクリプションURLをすべてコピーし、プロトコル、ドメイン、パス、疑問符以降の全パラメータを確認します。コピー時に混入した前後の空白は削除し、パラメータをむやみに書き換えないでください。

  3. 登録タイプを確認

    新規作成する場合は、Home 右上の「+」から Add Server を開き、Type を Subscribe に設定して、URL にアドレスを貼り付けます。既存のサブスクリプションがある場合は、該当する編集画面で URL を確認し、同じグループを重複して作成しないようにしましょう。

  4. 保存して更新

    保存して Home に戻り、下に引いて更新します。リクエストの完了を待ってから、グループ内の項目数と表示内容を確認してください。処理中に何度も更新を実行しないでください。

  5. 結果を記録

    更新した時刻、使用したネットワーク、表示されたメッセージを記録します。次回は、ネットワークを切り替えるなど、条件を1つだけ変えると違いの原因を特定しやすくなります。

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

上記のアドレスはURLの構造を説明するためのもので、利用可能なサブスクリプションではありません。?以降のパラメータ、パラメータ間の&、パーセントエンコードされた文字列も、元のアドレスの一部である可能性があります。チャットツール上の省略記号をURLの一部と見なさず、自分でデコードしてつなぎ直すことも避けてください。ウェブページのソースから文字列としての&をコピーした場合は、推測でトークンを書き換えず、ページ上のコピー機能からURLを取得し直してください。

[Check]

ss://、vmess://、vless://、trojan://は通常、単一項目の共有情報を示すもので、定期的に取得するHTTPSサブスクリプションURLとは異なります。単一項目は対応するインポート方法で扱ってください。プレフィックスをHTTPSに変えるだけでは、サブスクリプションの更新機能は得られません。

応答内容:HTTPの成功は解析の成功を意味しない

リクエストがサーバーに届いた後は、サーバーが実際に何を返したかも確認する必要があります。HTTPステータスコードはリクエストの処理結果を示しますが、サブスクリプションを解析できるかどうかは、応答本文が認識可能な項目情報かどうかにも左右されます。そのため、ブラウザでURLを開けても、応答があったと分かるだけで、ページが表示されたことだけを根拠にサブスクリプションが有効とは判断できません。

200
HTTPリクエストが成功しても、本文がサブスクリプション内容か確認する
401
HTTP認証に失敗した場合は、トークンと認証状態を確認
429
HTTPリクエストが多すぎる場合は、サーバーの指示に従って待ってから再試行

要点:まず本文を確認し、その後に解析の問題を判断

ログインページ、認証ページ、メンテナンス案内が返された場合は、まず利用中のサービス提供元にサブスクリプションAPIの状態と対応形式を確認してください。サーバーから返されたページに対処するために、ローカルのルールを何度も変更しないでください。

サブスクリプションによっては項目一覧をエンコードして返し、別のものはそのまま読めるテキストを返します。「長い文字列に見える」というだけで破損とは判断できません。反対に、整ったHTMLページがHTTP 200で返されても、インポート可能な項目が含まれていないことがあります。利用中のサービス提供元に、APIがウェブ閲覧用の説明ではなく、Shadowrocketで認識できるサブスクリプション内容を返しているか確認してください。

サービス提供元の状態:応答の原文に基づいて対応し、原因を決めつけない

以下のカードは標準HTTPステータスの説明であり、Shadowrocketに同じ文言が必ず表示されるという意味ではありません。アプリのメッセージ、リクエスト診断の結果、または利用中のサービス提供元の記録で該当するステータスコードを確認できた場合に限り、対応する項目を参考にしてください。「解析失敗」とだけ表示されている場合、認証失敗やアクセス制限とは断定できません。

HTTP 401 Unauthorized

原因と対処:認証に失敗しています。利用中のサービス提供元のページから有効なサブスクリプションURLを取得し直し、トークン全体と認証状態を確認してから更新してください。

HTTP 403 Forbidden

原因と対処:サーバーがリクエストを拒否しました。具体的な制限はサーバー側に確認する必要があります。ステータスコードと発生時刻を伝えてアクセス制御を確認してもらい、コードだけでアカウントの期限切れと判断しないでください。

HTTP 404 Not Found

原因と対処:リクエストされたリソースが見つかりません。ドメインとパスが完全か確認し、サービス提供元がサブスクリプションのURLを変更していないか確認してください。新しいパスを推測して入力しないでください。

HTTP 429 Too Many Requests

原因と対処:リクエスト頻度の制限に達しています。連続更新を止め、応答に Retry-After が含まれていれば指示に従って待ちます。指定がなければ、許容される再試行間隔をサービス提供元に確認してください。

HTTP 503 Service Unavailable

原因と対処:サーバーが現在リクエストを処理できません。既存の項目を残し、復旧状況をサービス提供元に確認して、サービスが復旧してから更新を1回実行してください。

サービス提供元からAPIの復旧が報告されているのにクライアント側が空の場合は、「更新時に新しい内容を取得できなかった」のか「取得した内容が空だった」のかを切り分けます。更新時刻、ステータスコード、項目数の変化、表示されたメッセージを伝えると、原因を特定しやすくなります。スクリーンショットやログに含まれるサブスクリプショントークン、パスワード、UUIDなどの認証情報は必ず隠し、公開の場に完全なURLを投稿しないでください。

更新タイミング:ネットワーク経路、プロキシ経由の更新、自動接続

サブスクリプションを更新するにはサブスクリプションのドメインにアクセスできる必要があり、項目で接続するには項目のサーバーにアクセスする必要があります。ドメインやネットワーク経路は異なる場合があります。項目で接続できても、サブスクリプションのドメインに直接アクセスできるとは限りません。また、サブスクリプションのドメインにアクセスできても、すべての項目のサーバーが正常とは限りません。

直接接続のリクエストがタイムアウトし、既存の項目は引き続き使える場合は、まず利用可能な接続を確立してから Settings → Subscribe で Update via Proxy を確認し、必要に応じて有効にして Home に戻り、更新します。この設定はサブスクリプションリクエストのアクセス方法を変えるもので、無効なトークン、空の応答、サーバー側の形式の問題は解決しません。利用可能な接続がない場合、これを有効にするだけで更新経路が自動的に確立されるわけではありません。

サブスクリプションの更新エラーに対処するために、証明書の検証を無効にしないでください。TLSに関するメッセージが表示された場合は、まずデバイスの日付と時刻、サブスクリプションのドメインが正しいかを確認し、証明書と証明書チェーンをサービス提供元に調べてもらいます。特定のネットワークだけで失敗する場合は、安全確認を省略するより、そのネットワークで表示されたメッセージを診断用に保存するほうが原因の特定に役立ちます。

よくある質問:データを残して最後の確認をする

ブラウザではURLを開けるのに、Home が空なのはなぜですか?

まずブラウザに表示されているのが項目の内容であり、アカウントページや認証ページではないことを確認します。ブラウザのログイン状態はサブスクリプションリクエストの認証条件と同じではありません。利用中のサービス提供元のページからクライアント用サブスクリプションURLをコピーし直し、Home の Subscribe 編集画面で URL を確認してから更新してください。

更新に失敗したら、サブスクリプションをすべて削除するべきですか?

まず削除せず、元の項目数、表示されたメッセージ、最終更新時刻を記録し、使える項目を残してください。インポートし直すことは、APIのエラーを直すために必須ではありません。作り直す必要がある場合は、URLが有効であることを確認し、必要な元の情報を適切に保存してください。

Update via Proxy を有効にしてもタイムアウトする場合は?

まず既存の項目で実際に接続できることを確認し、次に現在の接続からサブスクリプションのドメインにアクセスできるか確認してください。接続自体が使えない場合は、そのドメインにアクセスできるネットワークで試します。そのAPIだけが失敗する場合は、発生時刻と表示されたメッセージを利用中のサービス提供元に伝えて確認してもらってください。

サブスクリプションの更新に成功したのに、選択した項目で接続できないのはなぜですか?

更新の成功が意味するのは、サブスクリプション内容を取得して処理できたことだけです。該当項目の編集画面でプロトコル、アドレス、ポート、認証パラメータを確認し、サーバーの状態も確認してください。たとえば Trojan の TLS パラメータは利用中のサービス提供元の情報と一致している必要があります。パラメータの確認を更新の再実行で代用しないでください。

最後に「完全なURL → Subscribe タイプ → 応答本文 → サーバーの状態 → 更新時のネットワーク → 再試行のタイミング」の順に確認します。変更する条件は毎回1つにし、リクエストを1回完了させてから結果を記録してください。問い合わせる場合は、次の項目を伝えれば状況を説明でき、認証情報全体の開示も避けられます。

  1. 初回インポート時から空なのか、既存のサブスクリプション更新に失敗したのか、更新後に一部の項目が表示されないのかを説明します。
  2. 発生時刻、Wi-Fiやモバイルネットワークなどの接続条件、Update via Proxy を使用したかどうかを伝えます。
  3. 表示されたメッセージの原文と確認できるHTTPステータスコードを記録します。コードがない場合は推測せず「取得できず」と明記します。
  4. 更新前後の項目数と、サービス提供元が有効な項目があるはずだと確認しているかを伝えます。
  5. 必要な情報は利用中のサービス提供元に非公開のサポート窓口からのみ提供し、公開するスクリーンショットではトークンなどの認証情報を隠します。
App Storeで正規版を確認