V2Rayのサブスクリプション解析に失敗する原因と確認項目:URL・エンコード・クライアントのバージョン

サブスクリプション更新後にノード一覧が空になったり解析エラーが表示されたりする場合、URLの無効化、Base64以外のレスポンス、プロキシによる購読リクエストの遮断、クライアントの旧バージョンが主な原因です。確認手順と対処法をまとめます。

この記事の要点

まずダウンロード失敗と内容の解析失敗を切り分け、購読URL、HTTPレスポンス、エンコード形式、プロキシ経路、クライアントのバージョンを順に確認します。v2rayN、v2rayNG、v2flyNGで更新後に一覧が空になる、ノードが一部欠落する、形式エラーが出る場合に役立ちます。

まず失敗した段階を特定する

サブスクリプションの更新は単独の操作ではなく、一連の処理で構成されています。クライアントは保存済みURLを読み込み、直接接続またはローカルプロキシ経由でHTTPSリクエストを送信します。サーバーから本文を受け取ると、Base64、共有リンク一覧、構造化設定のいずれかとして認識し、最後にVMessやVLESSなどの項目を該当する購読グループへ書き込みます。どこか一つでも失敗すると、画面には「更新失敗」またはノード数0としか表示されないことがあります。

購読URLを読み込むネットワークリクエストを送信レスポンス本文を受信内容形式を判定ノード一覧へ書き込む

調査の初めから全設定を削除しないでください。まず更新時刻、レスポンス状態、ログのキーワードを確認し、「リクエストで内容を取得できなかった」のか「取得できたが解析できなかった」のかを判断します。前者は通常、DNS、プロキシ、証明書、アクセス権、HTTPステータスに関係します。後者では、レスポンスがウェブページだった、エンコードが壊れていた、現在のバージョンが対応していないプロトコル項目だった、というケースがよくあります。

画面上の現象 優先して確認する項目 よくある判断
すぐに接続失敗と表示される DNS、プロキシ経路、ポート リクエストで購読本文をまだ取得できていない
数秒後に403または404が表示される URLの有効期限とアクセス権 サーバーによる拒否またはリソースの無効化
更新は成功したがノード数が0 レスポンス内容とエンコード 本文が空、ウェブページ、または認識可能な項目がない
一部のノードだけインポートされる クライアントのバージョンとフィールド対応状況 一部のプロトコルパラメータを現在のクライアントが認識できない

結論:まずリクエストエラーと解析エラーを切り分ける

ログにHTTPステータス、タイムアウト、DNS解決に関する表示がある場合は、まずネットワークリクエストを直します。Base64、JSON、URI、フィールドのエラーが出ている場合に本文形式を確認してください。順番を逆にすると無駄な操作が増えます。

6段階の確認を順番に行う

以下では、リスクの低い確認から順に進めます。既存のノードを先に上書きすることはありません。v2rayN 7.14.3のメニュー構成を基準にしていますが、細かなバージョンによって表示位置は変わる場合があります。ただし、購読グループ、ログ、パラメータ設定の3種類の入口は基本的に共通しています。Androidでは、v2rayNGまたはv2flyNGの購読設定とログ画面から同様に確認できます。

  1. 現在の設定をバックアップする

    既存の購読グループと利用可能なノードを残し、最初に一覧を消去しないでください。失敗したグループ名、前回正常に更新できた時刻、今回のエラー全文を記録し、修正前後の変化を比較できるようにします。

  2. 完全なURLを確認する

    v2rayNで「購読グループ」→「購読グループ設定」を開き、URLの先頭、ドメイン、パス、クエリパラメータが提供元の内容と完全に一致しているか確認します。特に、疑問符以降のトークンを省略しないでください。

  3. まず直接接続で更新する

    「購読グループ」→「すべての購読を更新(プロキシを使用しない)」を選択します。直接接続で成功するなら、購読形式は認識できています。問題はローカルプロキシのポート、現在のノード、またはルーティングルールに絞られます。

  4. 次にプロキシ経由で更新する

    通常の更新方法に戻します。プロキシ経由でのみ成功する場合は、システムネットワークから購読ドメインへ直接アクセスできるか確認します。直接接続でのみ成功する場合は、プロキシの出口と購読ドメインの振り分けを確認してください。

  5. ログ全文を確認する

    メインウィンドウ下部のログ領域を開き、更新を実行した時刻付近で403、404、timeout、Base64、JSON、URIなどのキーワードを探します。上部に表示される短い通知だけで判断しないでください。

  6. クライアントを更新して再テストする

    グループ設定を残したまま、ダウンロードページに掲載されている現行バージョンへアップデートします。クライアントを再起動後、問題のあるグループだけを更新し、ノード数とログに変化があるか比較します。

一つのグループだけ失敗し、他のグループが正常なら、通常は全体のネットワーク設定を変更する必要はありません。まずそのURLの有効期限、権限、レスポンス形式を確認します。すべてのグループが同時に失敗する場合は、ネットワーク、システム時刻、ローカルプロキシのポート、ファイアウォールによる通信ブロックを優先して確認してください。

購読URLとHTTPレスポンスを確認する

購読URLには、アカウントを識別するパスやクエリパラメータが含まれていることがよくあります。コピー時に1文字欠ける、末尾の空白まで保存する、改行位置までしかコピーしないといった操作で、サーバーのレスポンスは変わります。有効期限や端末制限があるURLでは、ドメインにアクセスできても、古いURLに対して401、403、404や案内ページが返されることがあります。

ブラウザでURLを開けても、クライアントで更新できるとは限りません。ブラウザはログイン状態を保存していたり、別のシステムプロキシを使っていたりする可能性があります。一方、クライアントは通常URLへ直接リクエストを送り、本文を購読形式として解析します。逆に、ブラウザに長い文字列が表示されても内容が正しいとは限らず、サーバーがテキストを返したことしか分かりません。

エラー:Response status code does not indicate success: 403 (Forbidden)

原因と対処:トークンが無効、アクセス権が変更された、またはリクエスト元がルールに適合していない可能性があります。現在の購読URLを再取得し、古いURL全体を置き換えてください。一部の文字だけを修正しないでください。

エラー:Response status code does not indicate success: 404 (Not Found)

原因と対処:購読パスが削除、移転されたか、コピーが不完全です。購読提供ページからURLをもう一度コピーし、パス末尾とクエリパラメータが揃っているか確認してください。

エラー:The operation has timed out

原因と対処:規定時間内に完全なレスポンスを受信できませんでした。直接接続とプロキシ経由の更新をそれぞれ試し、DNS、現在の出口、サーバーへの接続性を確認してください。

エラー:The remote name could not be resolved

原因と対処:購読ドメインから有効なDNS結果を取得できません。ドメイン名の綴りを確認し、利用可能なDNSへ切り替えてネットワークに再接続してから、グループ単位で更新を試してください。

さらに確認する必要がある場合は、信頼できる環境でレスポンスのステータス、本文の先頭、バイト数を確認します。通常の購読はステータス200を返し、本文にはデコード可能なテキスト、プロトコル接頭辞で始まる複数行のリンク、またはクライアントが明確に対応する構造化データが含まれます。本文の先頭がHTMLタグ、ログイン案内、認証コードの説明、ゲートウェイエラーの場合、問題はサーバーのレスポンスにあり、VMessやVLESSのノードパラメータではありません。

Base64、共有リンク、形式の不一致を見分ける

従来型の購読では、複数行の共有リンク全体をBase64エンコードすることがあります。クライアントは本文を取得してデコードし、行ごとにvmess://vless://などの項目を認識します。一方、エンコードされていない共有リンク一覧を直接返す購読もあります。そのため「Base64ではない」こと自体は必ずしもエラーではなく、重要なのはクライアントが実際のレスポンス形式を認識できるかどうかです。

VMessの単一ノードリンクと購読全体には、それぞれ別のエンコード層が含まれる場合があります。旧式のVMessリンクでは、プロトコル接頭辞の後にエンコード済みJSONが置かれることがあります。VLESSは通常、URIのクエリパラメータで通信方式、暗号化層、サーバー名を表します。提供元が不完全なエスケープや途中で切れたエンコード文字列を生成した場合、または現在のクライアントが新しいフィールドに対応していない場合、一部のノードだけが失われることも、購読全体の解析が止まることもあります。

dmxlc3M6Ly9leGFtcGxl
vless://[email protected]:443?type=ws&security=tls
<html>Access denied</html>

上記の3種類の先頭部分は、それぞれBase64らしきテキスト、平文の共有リンク、エラーを返すウェブページを示します。実際の確認では形式の特徴だけを見て、アクセス用トークンを含む購読本文全体を公開デコードサイトへ送信しないでください。購読URL自体にノード一覧を読み取る権限があるため、アカウント情報として扱う必要があります。

本文の特徴 考えられる形式 対処方法
連続した英字・数字と少数の等号 全体がBase64エンコードされている 途中で切れていないか、空白が混入していないか、互換性のない文字が使われていないか確認する
各行がプロトコル接頭辞で始まる 平文の共有リンク一覧 クライアントのバージョンが該当プロトコルとクエリフィールドに対応しているか確認する
左中括弧または左角括弧で始まる JSONまたは構造化された一覧 その構造がクライアント対応の購読形式か確認する
html、title、Access denied が含まれる ウェブページまたはゲートウェイエラー リンクの権限、ネットワーク入口、サーバーのレスポンスを修正する
本文が空 空のレスポンス 購読を再生成し、アカウントに利用可能な項目があることを確認する

エラー:The input is not a valid Base-64 string

原因と対処:本文がBase64として処理されていますが、ウェブページの案内、空白、不正な文字が混入しているか、内容が途中で切れています。まずHTTPレスポンスの実本文を確認し、完全な購読を再取得してください。

エラー:Unexpected character encountered while parsing value: <

原因と対処:解析器はJSONを想定していましたが、先頭でウェブページのタグを読み取りました。ログインページ、アクセス制限、ゲートウェイエラー、リダイレクト先を確認し、ノードのフィールドを変更し続けないでください。

エラー:Invalid URI: The format of the URI could not be determined

原因と対処:デコード後の行の一つが完全な共有リンクではありません。改行の誤り、プロトコル接頭辞の欠落、パラメータのエスケープ不備がよくある原因です。購読を再生成し、新しいクライアントでインポートしてください。

結論:まず本文の形式を確認し、その後でノードパラメータを確認する

レスポンスがウェブページ、空のテキスト、アクセス案内である限り、UUID、ポート、通信パラメータを変更しても購読は直りません。まずクライアントが正しい一覧を取得できる状態にしてください。

プロキシ、DNS、ローカルポートを確認する

購読リクエストは直接接続でも、現在のプロキシ出口経由でも送信できます。プロキシ経由で更新する場合、クライアントには起動して通信できる既存ノードが必要です。現在のノードが無効だと購読リクエストも止まり、「接続するには更新が必要だが、更新には現在の接続が必要」という循環に陥ります。この場合は、プロキシを使わない更新入口で確認するのが最も簡単です。

ローカルポートはクライアントの実際の設定を基準にしてください。v2rayNでは10808がよく使われますが、設定変更、構成の移行、複数インスタンスの同時実行によって変わることがあります。システムプロキシに127.0.0.1:10808と残っているからといって、クライアントが現在もそのポートを待ち受けているとは限りません。

ルーティングルールによって購読ドメインが利用できない出口へ送られることもあります。たとえばドメイン一致後に削除済みの出口タグが指定されていると、通常のウェブページは開けても、そのドメインへのリクエストだけが失敗し続けます。直接接続で一時的に更新できた場合は、ルーティング設定に戻り、ドメインルール、ルールの順序、出口タグを確認してください。何度も切り替えて使い続けるのは避けます。

Androidでも確認の考え方は同じです。v2rayNGはXrayコア、v2flyNGはv2flyコアを使用します。購読のダウンロードはクライアントが行い、ノード接続の段階で該当コアが処理します。購読の取得時点ですでに403やエラーページが返されている場合、Coreタイプを切り替えてもサーバーのレスポンスは変わりません。

クライアントのバージョンとコアの種類を判断する

クライアントが古い場合、すべての購読が失敗するとは限りません。新形式のノードが欠落したり、一部のクエリパラメータが無視されたり、インポート後に有効な設定を生成できなかったりします。購読提供元がフィールド名、通信方式の組み合わせ、出力構造を変更すると、旧バージョンの解析器が対応できないことがあります。アップデート後も元のグループを残し、同じURLを対象に再更新して、ノード数とログの変化で判断してください。

現象 可能性の高い箇所 推奨する対応
すべてのURLをダウンロードできない ネットワークまたはクライアントのリクエスト層 直接接続、プロキシ、DNS、システム時刻、ファイアウォールを確認する
同じ購読を新しいバージョンではインポートできる 旧バージョンの解析器の互換性 クライアントを更新し、そのグループを再更新する
インポートできるがコアの起動に失敗する ノードのフィールドまたはコアの対応状況 コアのログを確認し、Coreタイプを確認する
一部のVLESS項目だけ失敗する 通信方式、セキュリティパラメータ、またはフィールドの組み合わせ 失敗した項目と利用可能な項目のクエリパラメータを比較する
ノード数は正常だが通信できない 購読段階ではなく接続段階の問題 サーバーアドレス、ポート、ルーティング、現在の出口を確認する

v2rayNの「設定」→「パラメータ設定」→「Core タイプ」は、特定のプロトコル設定をどの種類のコアで実行するかを決める項目です。ノードの起動や設定生成には影響しますが、すべての購読解析エラーを直す共通スイッチではありません。ログにレスポンス状態、ダウンロードのタイムアウト、Base64失敗が明確に出ている場合は、まず上流側の問題を処理してください。

Androidでは、v2rayNGとv2flyNGでコアの系統が異なる点に注意してください。どちらも一般的な共有リンクを読み込めますが、新しく追加されたフィールドへの対応時期は異なる場合があります。購読を移行する際は、一覧に含まれるプロトコルと通信パラメータを確認してから、適合するクライアントを選びます。URLを保存できるかどうかだけで互換性を判断しないでください。

エラー:Failed to parse subscription content

原因と対処:クライアントは本文を取得しましたが、有効な購読項目を認識できませんでした。本文の形式を確認してクライアントを更新します。新しいバージョンでも失敗する場合は、購読提供元に互換性のある形式で再生成してもらってください。

エラー:Unsupported protocol

原因と対処:購読に、現在のクライアントまたはコアが対応していないプロトコル識別子が含まれています。項目がVMess、VLESSなど対応する種類であることを確認し、その形式に対応したクライアントへ更新してください。

修正後の結果を確認する方法

一度の更新で「成功」と表示されただけでは、問題が完全に解決したとは限りません。グループの更新時刻、ノード数、ノードのフィールド、実際の接続を同時に確認します。元々24個のノードが更新後に3個しか残っていない場合、購読側で一覧が変更された可能性も、解析器が残り21個をスキップした可能性もあります。この場合は、成功通知よりログに記録された項目ごとの警告が重要です。

  1. 対象の購読グループの更新時刻が変わったことを確認します。同名の別グループを更新していないか注意してください。
  2. 更新前後のノード数を記録します。たとえば0から24に戻った、または24から異常に3へ減った、といった変化です。
  3. VMessとVLESSを一つずつ無作為に確認し、アドレス、ポート、通信方式、サーバー名のフィールドを確認します。
  4. いずれかのノードを起動し、コアのログに設定生成エラーや未対応フィールドのエラーがないことを確認します。
  5. クライアントを終了して再起動し、単独のグループをもう一度更新して、同じ結果を再現できるか確認します。

ネットワークを変更するとすぐ復旧し、元のネットワークでは失敗し続ける場合は、DNS、アクセス方針、出口ルートを重点的に確認します。URLを再生成して復旧した場合は、古いトークンまたはパスが無効になっています。クライアントのアップデート後だけ復旧した場合は新しいバージョンを維持し、他の購読グループにも旧解析器がスキップした項目がないか確認してください。

更新に成功したのに一覧が空のままの場合は?

まず、現在表示されている購読グループを更新したか確認します。次に、レスポンス本文が空でないか、ウェブページではないか、グループの絞り込み条件が新しい項目を隠していないか確認してください。ログにプロトコルリンクが一つも解析されていない場合は、購読を再取得します。

ブラウザでは開けるのに、なぜv2rayNでは失敗と表示されるのですか?

ブラウザとクライアントでは、プロキシ経路、DNS、ログイン状態が異なる可能性があります。ページが開くかどうかだけでなく、クライアントログのHTTPステータスとブラウザの最終レスポンスを比較してください。

成功するまで更新ボタンを何度も押してもよいですか?

連続してリクエストするのはおすすめしません。サーバーが429を返している場合や頻度制限がある場合、繰り返し更新すると待ち時間が長くなります。エラー全文を一度記録し、ネットワークまたはURLを修正してから再テストする方が効果的です。

コアを切り替えるとBase64エラーを直せますか?

通常は直りません。Base64エラーは購読本文の解析段階で発生し、ノードがコアへ渡されて実行される前の問題です。まずレスポンス内容が完全か、ウェブページのテキストが混入していないか、クライアントの解析器が最新か確認してください。

最終判断:再現可能な結果で調査を終える

同じグループを2回連続で更新してノード数が一致し、再起動後も更新でき、少なくとも一つのノードで正常な設定を生成できて初めて、URL、解析、実行の一連の経路が復旧したと判断できます。

v2rayN をダウンロード 4プラットフォーム対応クライアントを見る