V2Rayのサブスクリプション更新に失敗する場合の対処法|リンク切れ・解析エラー・確認リスト

更新後にノードが表示されない、または解析エラーになる場合は、リンクの有効性、ネットワーク接続、形式と文字コード、クライアント設定を順に確認してください。

この記事の概要

v2rayN、v2rayNG、v2flyNGでサブスクリプションをダウンロードできない、取得した内容を認識できない、更新後にノード一覧が空になるといった場合に役立つ確認手順です。まず現在使えるノードを残し、リンク、リクエスト経路、レスポンス本文、サブスクリプショングループを確認します。一度に変更する条件を一つに絞って比較すれば、ダウンロード・解析・表示のどの段階で問題が起きているかを切り分けられ、サブスクリプションの問題をノードの接続障害と誤認せずに済みます。

ダウンロード失敗・解析失敗・一覧が空の状態を切り分ける

サブスクリプションの更新は、ノードへの接続テストではありません。クライアントがサブスクリプションURLにリクエストを送り、返された内容を読み取り、ノード情報を認識してから、該当グループに登録します。どこか一つでも失敗すると画面上は「新しいノードがない」ように見えますが、対処法は原因によって異なります。

サブスクリプションURLを読み取る サブスクリプションサーバーにリクエストする レスポンス本文を受信する ノード情報を解析する サブスクリプショングループに登録する

サブスクリプションURL、アカウント管理ページ、個別ノードの共有リンクはそれぞれ別のものです。サブスクリプションURLは通常 https:// で始まります。vmess:// や vless:// などはノードの共有リンクなので、クライアントの対応するインポート機能から読み込んでください。長い文字列をコピーできたからといって、サブスクリプションURLとは限りません。

  1. 元のURLをコピーする

    サービス提供元のサブスクリプション画面からURLをコピーし直し、説明文や引用符、前後の空白が含まれていないことを確認してください。チャットに省略表示されたリンクはそのまま使えません。

  2. クエリパラメーターを確認する

    疑問符の後ろも含め、URL全体を確認します。サブスクリプションURLのアクセストークン、パラメーターの順序、署名は認証に使われている可能性があります。パラメーターを独自に削除したり、& 以降を切り落としたりしないでください。

  3. 有効な状態か確認する

    アカウントページで、サブスクリプションの利用権限、有効期限、リンクが再発行されていないかを確認してください。リンクを再発行した場合は、新しいURLを元のグループに保存します。古いURLはすぐに無効になることがあります。

  4. 対象のグループだけ更新する

    保存後、対象グループだけを更新して結果を記録してください。複数のサブスクリプションを同時に更新すると、ほかのグループのエラーが同じログに混ざり、原因を特定しにくくなります。

ブラウザーでURLを開けても、確認できるのはブラウザー経由で何らかのレスポンスを受け取れたことだけです。ブラウザーにはログインCookieが付いている場合や、クライアントとは異なるプロキシやDNSが使われている場合があります。そのため「ブラウザーで開ける」だけでは、クライアントが解析可能なサブスクリプション本文を取得できる証拠にはなりません。

手順2:プロキシ経由と直接接続のダウンロードを比較する

「サブスクリプションの更新時にプロキシを使うか」と「ノードにどのルーティングルールを適用するか」は別の設定です。サブスクリプションはクライアント内のHTTPリクエスト機能でダウンロードされる場合があり、プロキシコアのDNS、ルーティング、ルール分岐がそのまま適用されるとは限りません。コアのルーティングモードを切り替えるだけでは、サブスクリプションのリクエスト経路が変わらないことがあります。

Windows版v2rayN 6.xの一般的な画面では、「サブスクリプショングループ」メニューから「すべてのサブスクリプションを更新(プロキシを経由しない)」または「すべてのサブスクリプションを更新(プロキシを経由する)」を選び、結果を比較できます。ほかのバージョンでは、括弧の表記やメニュー名、グループ操作の場所が異なる場合があります。実際のメニューを確認してください。特定バージョンの更新方法がすべてのバージョンで標準とは限りません。

Androidでは、まずv2rayNGまたはv2flyNGの「サブスクリプショングループ設定」で保存済みURLを確認し、メニューから「サブスクリプションを更新」を実行します。メニュー名はバージョンによって異なる場合があります。使用中のバージョンにプロキシ経由で更新する設定があれば、同じように比較してください。その設定がない場合は、デスクトップ版のメニュー手順をAndroidに当てはめないでください。一度のテストで変更するのは、更新経路かネットワークのどちらか一つにします。

ステータスコードから認証・リダイレクト・ブロックを切り分ける

ログにHTTPステータスコードがある場合は、まずコードを確認し、次に本文を確認します。以下の数値はHTTPのステータスであり、速度測定の結果やクライアントのバージョン番号ではありません。200 が返っていても、本文がエラー説明やWebページであることがあります。

200
リクエストは成功。本文も確認する
302
一時的なリダイレクト。最終レスポンスを確認する
403
サーバーがアクセスを拒否
407
プロキシで認証が必要

以下はHTTPステータス行と、リクエスト機能で表示されることのある実際のエラーメッセージです。クライアント、実行環境、画面の言語によって別の説明が付く場合もあります。文言だけで判断せず、どの段階でエラーが発生したかも確認してください。

HTTP 401 Unauthorized

原因と対処:有効な認証情報がリクエストに含まれていないか、トークンの有効期限が切れています。アカウントのサブスクリプション画面からURLをコピーし直し、そのインターフェースがログイン後のWebセッションでしか使えないものではないか確認してください。

HTTP 403 Forbidden

原因と対処:サーバーが現在のリクエストを拒否しています。権限、アクセス制限、保護ルールなどが関係している可能性があります。アカウントの状態を確認し、発生時刻、ステータスコード、アクセス方法をサービス提供元に伝えてください。403だけを根拠にアカウントの期限切れと決めつけないでください。

HTTP 407 Proxy Authentication Required

原因と対処:リクエスト経由のプロキシで認証を求められています。サブスクリプションサービス側の問題とは限りません。システムまたはネットワークプロキシの認証設定を確認するか、プロキシを経由しない更新方法と比較してください。

The operation has timed out.

原因と対処:リクエストが所定の時間内に完了しませんでした。名前解決、接続、読み込みのいずれかで停止している可能性があります。まずネットワークとダウンロード経路を比較し、前後のログも確認してください。タイムアウト時間を延ばすだけでは、無効なURLは直りません。

301 または 302 が返る場合は、最終レスポンスがログインページではないことを確認してください。429 の場合は更新を繰り返さず、サーバーの Retry-After の指示に従って待ちます。復旧を確認するために何度も更新ボタンを押すと、レート制限が長引くことがあります。

手順3:本文の形式と文字コードを確認する

サブスクリプションのダウンロードに成功しても解析エラーになる場合は、「実際に何を受信したか」を確認します。レスポンス内容を調べるのは、自分の端末など管理された環境に限り、ノード設定全体を外部ツールに貼り付けないでください。ノード情報にもアクセス用の認証情報が含まれる場合があるため、サブスクリプションURLと同様に扱う必要があります。

レスポンスの特徴 考えられる内容 次の確認事項
<!DOCTYPE html> または <html で始まる ログインページ、エラーページ、ネットワーク認証ページ サブスクリプションの元のページからURLを取得し直し、最終的なリダイレクト先とアクセス権限を確認する
複数行の vmess://、vless:// などの共有リンク 一般的なノード一覧の形式 使用中のクライアントバージョンが各リンク形式とそのパラメーターに対応しているか確認する
Base64形式のテキストが1つだけ エンコードされたノード一覧の可能性 レスポンスが完全か確認し、まずクライアントで解析する。必要な場合に限り、端末上でデコードして調べる
JSONまたはYAML形式のテキスト 完全な設定ファイル、APIのエラーオブジェクト、または別の形式の可能性 拡張子だけで判断せず、現在のサブスクリプション取り込み機能で使える形式か確認する
本文が空、または案内文だけ 利用できる項目がない、またはサーバーがサービス上のエラーを返している アカウントの権限、ノードの絞り込み条件、サーバー側の案内を確認する

Base64をデコードできても、ノードをインポートできるとは限らない

Base64はエンコード方式であり、サブスクリプションプロトコルではありません。デコードできても、テキストが何らかのエンコード規則に従っているとわかるだけで、中のリンクが有効とは限りません。一般的なVMessの共有形式は、vmess:// に続けてJSONをBase64エンコードします。一方、VLESSの共有リンクでは識別情報、アドレス、通信パラメーターなどをURIに記述するため、同じ項目として扱うことはできません。

手順4:グループ、フィルター、保存結果を確認する

ログにダウンロード完了とノードの認識が記録されている場合は、ネットワークを変更し続けるのではなく、一覧の表示を確認します。v2rayNでは「サブスクリプショングループ」→「サブスクリプショングループ設定」を開き、選択中のグループのURLを確認します。v2rayNGとv2flyNGでは「サブスクリプショングループ設定」で該当項目を確認してください。保存ボタン、フィルター、更新操作はバージョンによって異なります。3つのクライアントで機能が完全に同じとは限りません。

  1. 検索を解除する:ノード検索欄を空にし、対象のサブスクリプショングループまたはすべてのノードを表示して、名前による絞り込みで一覧が空になっていないか確認します。
  2. フィルターを確認する:現在のバージョンにサブスクリプションの正規表現フィルターや、含める・除外する条件がある場合は、元の値を記録してから一時的にフィルターを解除し、更新を一度試してください。
  3. 保存を確認する:URLを変更した後、変更が保存されていることを確認します。編集欄に貼り付けただけで確定していない場合、更新時に古いURLが使われることがあります。
  4. 切り分けてテストする:必要に応じてテスト用グループを新しく作り、このサブスクリプションだけを登録して個別に更新します。まだ使えるノードを上書きしないよう、元のグループは残してください。
  5. 実際に操作しているプログラムを確認する:デスクトップにv2rayNが複数ある場合、どのプログラムと設定フォルダーを操作しているか確認してください。一方を変更して別の方を起動している可能性があります。

「システムプロキシを有効にする」「グローバルルーティング」「サブスクリプション更新時にプロキシを使用する」は、それぞれ別の設定です。最初の設定はシステムプロキシに従うアプリに影響し、2つ目はプロキシコアが受け取った接続の送信先選択に影響します。最後の設定が、サブスクリプションのダウンロード方法に直接関係します。トラブル対処では変更した設定を具体的に記録し、複数の項目をまとめて「プロキシをオンにした」と表現しないでください。

再テストのチェックリストと問い合わせ時の情報

変更後は対象グループだけを一度更新します。復旧したかどうかは、更新ログ、ノード一覧、実際の接続結果を合わせて確認してください。エラーがなくても有効なノードがあるとは限らず、ノードが表示されてもすべてのサーバーに接続できるとは限りません。サブスクリプションが復旧した後も特定のノードがタイムアウトする場合は、別の接続問題として対処してください。

基本的なインポート手順はクイックスタートを参照してください。ローカルの待ち受け、システムプロキシ、ルーティングの問題をさらに切り分けたい場合は、トラブルシューティングガイドをご覧ください。まず問題がどの段階で起きているかを特定し、その段階に関係する設定だけを変更するほうが、サブスクリプションを何度も削除して作り直すより、状況や検証結果を保ちやすくなります。

v2rayN をダウンロード