v2rayNのサブスクリプション更新に失敗・解析結果が空になる原因と確認手順

v2rayNのサブスクリプションが空になる原因は、リンク切れや形式不一致、Base64の問題、更新時のプロキシ設定などです。簡単な項目から順に確認しましょう。

この記事の要点

「更新に失敗しました」「利用可能なサーバーがありません」と表示される場合や、更新後にグループが空になるv2rayNユーザー向けです。既存の設定を残したうえで、リンク、接続経路、応答内容、解析結果の順に確認します。最後にグループを1つだけ更新して復旧を確認し、プロキシやサブスクリプション、コアを同時に変更して原因が分からなくなるのを防ぎましょう。

まず確認:リクエスト失敗か、解析結果が空か

サブスクリプションの更新は、ノードへの接続テストではありません。クライアントはまずサブスクリプションURLにリクエストを送り、テキストを取得してから、サーバー項目として解析しグループに登録します。URLにアクセスできても、記載されたノードが使えるとは限りません。ノードに接続できても、サブスクリプションが有効とは限りません。ダウンロードの問題をプロトコルの問題と取り違えないよう、最初にどの段階で失敗したかを特定しましょう。

サブスクリプションURLを読み込む ネットワーク接続を確立する 応答テキストを取得する ノード情報を解析する サブスクリプショングループに登録する

まずメイン画面のログまたは情報出力欄を開き、更新時刻、エラーの原文、対象グループを記録してください。デスクトップ版によってパネルの位置やメニュー名が多少異なる場合があります。以下では中国語UIで一般的な項目名を使っています。「サブスクリプショングループ設定」「プロキシ経由で更新」に相当する機能を探してください。

第1段階:設定を残してサブスクリプションURLを確認

グループ全体をすぐに削除しないでください。更新に失敗しても既存項目が残る場合がある一方、置き換え操作によってリストが空になることもあります。既存の利用可能なノードは、プロキシ経由で更新する際にも必要です。バックアップファイルやエクスポートした共有リンクには接続情報が含まれます。信頼できるローカル環境だけに保存してください。

  1. 既存の設定を残す

    メイン画面でまだ使えるサーバーを選び、右クリックメニューから共有リンクをエクスポートしてコピーを保存します。設定フォルダー全体をバックアップする場合は、クライアントを終了してから、現在のインスタンスが実際に使用しているデータフォルダーをコピーしてください。プログラムファイルだけでは不十分です。

  2. グループを確認する

    「サブスクリプショングループ」→「サブスクリプショングループ設定」を開き、問題のあるグループを選択します。URLが現在のアカウントに対応しているか、更新が有効になっているかを確認してください。似た名前のグループが複数ある場合は、備考とURLを照合し、別のグループを更新しないよう注意しましょう。

  3. URLをコピーし直す

    サービス提供元のサブスクリプションページから、v2rayN用のURLをコピーし直して、古いURLと置き換えます。先頭がhttps://か、空白や改行、全角引用符が混入していないか、クエリパラメーターがすべて残っているかを確認してください。

  4. グループを1つだけ更新して再確認

    保存後、対象のグループだけを更新し、ログと項目数を記録します。すべてのグループを作り直したり、ノードをまとめて変更したりすると、どの操作で状態が変わったのか判断しにくくなります。

第2段階:直接接続とプロキシ経由の更新を切り分ける

ブラウザーでサブスクリプションURLを開けても、確認できるのはブラウザーが使った通信経路です。ブラウザーはシステムプロキシを使う一方、クライアントの「プロキシを使わずに更新」は別の経路を使う場合があります。システムプロキシのオン・オフを切り替えただけでは、サブスクリプションの取得経路が変わるとは限りません。サブスクリプションのメニューから、対応する更新方法を選んでください。

プロキシ経由で更新する場合は、「設定」→「パラメーター設定」でローカルのリスナー設定を確認し、実際に使用中のポートを基準にしてください。ポートの競合、コアの未起動、クライアントが古いリスナーアドレスを参照していることなどが、ローカル接続の拒否につながります。他のPCのポート番号をそのまま使わないでください。また、このPCでの更新を直すために、リスナーアドレスをすべてのネットワークインターフェースに公開しないでください。

第3段階:ステータスコードとエラーの原文を確認

「失敗」という表示だけより、ステータスコードのほうが具体的な手掛かりになります。次の数値はHTTPのステータスを表すもので、テストの成功率ではありません。200はリクエストが正常に応答したことを示すだけなので、本文が本当にサブスクリプションかどうかも確認してください。

200
リクエストは成功。応答内容の確認が必要
401
有効な認証情報がない
403
サーバーがアクセスを拒否

The operation has timed out.

原因と対処:制限時間内にリクエストが完了していません。直接接続が遮断されているか、プロキシが使えない可能性があります。同じURLのまま直接接続と利用可能なプロキシ経由の両方を試し、ログを比較してください。

Connection refused

原因と対処:接続先が接続を受け付けていません。エラーに表示された接続先がローカルのプロキシポートか、サブスクリプションサーバーかを確認します。ローカルアドレスならコアのプロセスとリスナーポートを、遠隔サーバーならサービスの稼働状況を確認してください。

Response status code does not indicate success: 403 (Forbidden).

原因と対処:サーバーがリクエストを拒否しています。token、アカウントの状態、アクセス元の制限、認証ページなどが原因として考えられます。サブスクリプションURLを取得し直し、提供元に制限を確認してください。このログだけでアカウントの期限切れと判断しないでください。

エラーメッセージはOSの言語設定やクライアントのバージョンによって変わることがあります。ステータスコードと接続先をあわせて判断してください。404ならパスが無効になっていないか確認します。429なら連続更新を止め、サーバーの再試行指示に従ってください。5xxなら時刻を記録してサービス提供元に問い合わせます。証明書エラーの場合は、システムの日付と時刻、証明書の信頼チェーンを確認してください。証明書検証を無効にして恒久的に回避するのは避けましょう。

第4段階:応答形式とBase64の内容を確認

「取得は成功したのに解析結果が空」になるよくある原因は、サーバーからログインページ、アカウント期限切れの案内、認証ページが返されていることです。こうしたページでもステータスコードが200になる場合があります。応答の原文を確認する場合は、信頼できるツールをローカルで使ってください。ブラウザー上の見た目とクライアントが受け取った本文は同じとは限りません。最終的にはクライアントのリクエスト結果を基準に判断してください。

応答の特徴考えられる原因次に行うこと
<!DOCTYPE html>または<htmlで始まるログインページ、リダイレクト先、認証ページクライアント専用のサブスクリプションURLをコピーし直し、サーバー側のアクセス制限を確認する
本文が空、またはアカウントに関する案内だけが表示されるAPIから返せるノードがない、またはアカウントの状態が条件を満たしていないプランの有効期限、残りの通信量、ノードの割り当て状況を確認する
複数行のvmess://、vless://などのリンク一般的な共有リンクの一覧リンクを1つローカルで選び、インポートを試します。単一リンクの問題か、一括解析の問題かを切り分けてください。
長いエンコード済みテキストリスト全体がBase64でエンコードされている可能性があるローカルで一度デコードし、結果がウェブページや案内文ではなくノードリンクか確認する
proxies:などのフィールドで構成されたYAMLテキスト別の設定形式であり、汎用の共有リンク一覧ではない提供元のページで、v2rayN用と明記されたサブスクリプション形式を選択する

Base64はエンコード方式であり、ノードのプロトコルでも暗号化でもありません。一般的なサブスクリプションでは、複数の共有リンクをまとめたテキスト全体をエンコードします。また、VMessの共有リンク自体にも、エンコードされたノード設定が含まれている場合があります。そのため、外側のデータをデコードした結果がvmess://リンクでも正常です。すべての内容を何度もデコードして、サブスクリプション設定に貼り直す必要はありません。

第5段階:解析失敗とリストの表示問題を切り分ける

ログにノードの取得・処理が完了したと表示されているのに、メイン画面が空白の場合は、まず現在のグループと検索条件を確認します。検索キーワード、グループの切り替え、サブスクリプション設定のフィルターによって、登録済みの項目が一時的に見えなくなることがあります。この場合、更新を繰り返しても解決しません。

  1. メイン画面の検索欄を空にし、更新したグループに切り替えてから、すべてのサーバーが表示対象になっているか確認してください。
  2. 「サブスクリプショングループ」→「サブスクリプショングループ設定」に戻り、対象グループにフィルターが設定されていないか確認します。元の設定を記録してから一時的に解除し、グループを1つだけ更新してください。
  3. 一部のリンクだけインポートできない場合は、リンクのプロトコル、トランスポート設定、必須項目を確認してください。サブスクリプション全体が無効だと決めつける必要はありません。
  4. 形式に問題がなく、古いクライアントで認識されない場合は、バックアップを取ってからv2rayNを更新し、同じ内容を使って再確認します。サブスクリプションの配布元とクライアントのバージョンを同時に変更しないでください。

復旧の確認と問い合わせ時の情報整理

復旧は2つに分けて確認します。サブスクリプションが安定して更新できること、そしてインポートしたノードのうち少なくとも1つで想定どおり接続できることです。まず対象グループに妥当な数の項目が表示されるか確認してから、ノードを1つ選んで接続をテストします。すべてのノードが使えない場合は、サーバーアドレス、ポート、プロトコル、トランスポート設定を調べてください。サブスクリプションURLを変更し続けても解決しません。

作業中は「一度に変更するのは1項目だけ」を基本にしましょう。まずURL、次に接続経路、その後に応答内容を確認し、最後にクライアントの互換性を調べます。すぐに復旧しなくても、漠然とした「サブスクリプションの失敗」を検証可能な段階まで絞り込み、無駄な操作を減らせます。

v2rayN / v2rayNG ダウンロード