「サブスクリプションの更新に失敗」「インポート後にノードが表示されない」「更新できたのに一覧が空」といった症状の確認に役立ちます。URL、応答内容、エンコード、通信経路の順に調べ、ダウンロードの失敗と解析の失敗を切り分けてから、v2rayNとv2rayNGで確認しましょう。使用中の設定は残し、サブスクリプションを何度も削除して試すのは避けてください。
まず「リクエスト失敗」と「解析結果が空」を切り分ける
サブスクリプションの更新は、ノードへの接続テストではありません。クライアントはサブスクリプションサーバーに内容をリクエストし、返されたテキストを設定として解析してから、該当するグループに登録します。ノードに接続できてもサブスクリプションのURLが有効とは限らず、更新に成功しても新しいノードの通信方式や認証パラメーターが使えるとは限りません。
更新時刻、グループ名、ログに最初に記録されたエラーを控えておきます。ログの場所はバージョンによって異なるため、メイン画面のログ欄またはログウィンドウを確認してください。後から表示される「使用可能な設定がありません」は、先行するリクエスト失敗の結果かもしれません。まず最初のエラーに対処しましょう。
- タイムアウト、ドメイン名の解決失敗、接続拒否:有効な応答を受信できていません。Base64を変更する前に、通信経路を確認してください。
- 応答を受信したが、形式エラーまたはインポート数が0と表示される:返された内容がサブスクリプションか、クライアントがその形式に対応しているかを確認します。
- 更新成功と表示されるのに項目がない:対象グループに切り替え、検索語とフィルターを解除してから、応答にノードが含まれているか確認してください。
URLの確認:アカウントページではなくサブスクリプションURLを使う
よくある間違いは、アカウント画面や購入ページのURL、ブラウザーでログイン後に遷移したURLをコピーしてしまうことです。これらのURLを開けても、通常はクライアントが必要とするサブスクリプションではなくWebページが返されます。サービス提供元のサブスクリプション欄から、使用中のクライアントに対応するURLをすべてコピーしてください。
-
既存の設定を残す
現在のグループと更新結果を先に記録します。バックアップが必要な場合は、クライアントのエクスポート機能を使い、ファイルをローカルに保存してください。使えているノードを先に削除しないでください。
-
グループ設定を開く
v2rayNのメイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」を開き、問題のグループを選択します。ノード個別のサーバーアドレスではなく、サブスクリプションURL欄を確認してください。
-
URLをコピーし直す
提供元のページからサブスクリプションURLをもう一度コピーします。先頭のプロトコル、末尾のトークン、途中にチャットアプリによる改行が挿入されていないかを確認してください。誤って含まれた引用符や前後の空白は取り除き、URL内部の文字は変更しないでください。
-
対象グループだけを更新する
保存後、このグループだけを更新してログを確認します。画面によっては、グループを選択するか右クリックメニューから更新します。複数のサブスクリプションのエラーが混在しないよう、まず問題のグループだけに絞ってください。
URL内のクエリパラメーターは、認証に使われることがあります。&はパラメーターの区切り文字で、%2FなどはURLエンコードされた文字列です。推測で削除・変更しないでください。ページのソースから文字列として&をコピーすると、パラメーターが壊れることがあります。手作業で部分的に修正するのではなく、ページのコピー用ボタンから元のURLを取得してください。
応答の確認:HTTPの成功は形式の正しさを意味しない
HTTPステータスコードは、サーバーがリクエストを受け付けたかを判断する手がかりです。ただし、内容をインポートできることまでは保証しません。以下は標準的な応答ステータスの例であり、本サイトの実測値やノードの遅延時間ではありません。
ローカルのブラウザーでサブスクリプションを確認すると、プレーンテキスト、ダウンロード画面、ログインページなどが表示されることがあります。ブラウザーにはアカウントのCookieがあっても、クライアントにはない場合があります。そのため「ブラウザーで開ける」ことは手がかりにすぎず、クライアントからのリクエストが成功した証拠にはなりません。ブラウザーのログイン状態をサブスクリプションの認証と混同しないでください。
| 表示された内容 | 考えられる原因 | 次の確認事項 |
|---|---|---|
<!DOCTYPE html>またはログインフォーム | Webページ、認証ページ、エラーページを取得している | クライアント用のサブスクリプションURLを再取得し、アカウントの状態とアクセス制限を確認する |
| 本文が空 | サブスクリプションにノードが割り当てられていない、またはサーバーが空の内容を返している | アカウントの有効期限、プランの状態、提供元の管理画面にあるノード一覧を確認する |
複数行のvmess://、vless://形式のテキスト | 共有リンクを1行ずつ並べたサブスクリプションの可能性がある | クライアントが該当プロトコルとリンクパラメーターに対応しているか確認する |
| 長いエンコード済みテキスト | Base64形式のサブスクリプションか、別の内容の可能性がある | ローカル環境だけでデコードし、認識可能な共有リンクが得られるか確認する |
| YAML、JSON、または構造化されたエラーメッセージ | サブスクリプション形式の選択ミス、またはAPIのエラー応答 | 提供元のページで、使用中のクライアントに対応する出力形式を選択する |
拡張子が.txtだから形式が正しいとは限らず、URLに拡張子がないから無効とも限りません。インポート結果を決めるのは、応答本文とクライアントの解析機能です。リクエストヘッダーに応じてサーバーが異なる形式を返す場合もありますが、ヘッダーを手動で偽装するのは第一選択の対処法ではありません。
エンコードの確認:形式を確かめてからBase64を調べる
一般的なサブスクリプション形式には、共有リンクを1行ずつ並べたものと、リンク一覧全体をBase64エンコードしたテキストがあります。Base64はエンコード方式であり、暗号化ではありません。一部のvmess://共有リンクにもBase64が使われますが、サブスクリプション全体にかかる外側のエンコードとは別の層です。
- サブスクリプション全体:デコードすると、通常は共有リンクが1つ以上表示されます。各行に完全なプロトコルプレフィックスがあるか確認してください。
- VMessリンクの内部:一般的にはJSONをエンコードした形式です。内部の内容が途中で切れていると、外側のサブスクリプションをデコードできてもインポートに失敗することがあります。
- VLESSリンク:通常はURI形式で、クエリパラメーターに通信方式やセキュリティ設定が記述されています。リンク全体を無理にBase64としてデコードしないでください。
- パディング文字:末尾に
=がなくても、必ずしも破損しているとは限りません。実装によってはパディングの省略に対応しています。この点だけを理由に元の内容を変更しないでください。
コピー時の欠落、+が空白に置き換わること、全角の句読点が入ることなどで、エンコードが壊れる場合があります。改行を許容するかどうかはパーサーによって異なります。手作業でつなぎ合わせるより、元の内容をコピーし直すほうが確実です。ローカルでデコードした結果がさらに別のエンコード形式でも、サブスクリプションを「直す」ために何度もエンコードを重ねないでください。提供元に、クライアントが対応する標準形式で出力してもらいましょう。
ネットワークの確認:直接接続とプロキシ経由の更新を別々に試す
サブスクリプション更新の通信経路は、通常のWebページへのアクセス経路と異なる場合があります。v2rayNのサブスクリプションメニューには、プロキシを使わない更新と、プロキシ経由の更新があります。表記はバージョンによって異なります。システムプロキシを切り替えても、クライアント自身のサブスクリプション取得方法が変わるとは限りません。また、TUNが有効だと、直接接続を意図したリクエストにも影響することがあります。
- まずプロキシなしで試す:v2rayNの「サブスクリプショングループ」メニューから「すべてのサブスクリプションを更新(プロキシを使用しない)」、または対象グループの直接接続での更新を選び、結果を記録します。TUNを使用中の場合は、そのリクエストがTUN経由になっていないか確認してください。
- 次にプロキシ経由で試す:既存のノードで正常にインターネットへ接続できる場合に限り、「すべてのサブスクリプションを更新(プロキシを使用)」または対象グループの更新を選びます。古いノードがすべて使えない場合、この経路には利用可能な出口がない可能性があります。
- ローカルの待ち受けを確認する:「設定」→「パラメーター設定」を開き、実際のローカル待ち受けポートを確認します。ログにローカルループバックアドレスへの接続拒否が表示される場合は、コアが正常に動作しているか、ポートを変更していないか、ほかのプログラムが使用していないか確認してください。
- 別のネットワークで再確認する:可能であれば別のネットワークに切り替え、この条件だけを変更して試します。同じURLが別のネットワークで成功する場合は、元のネットワークのDNS、アクセス制限、接続品質を優先して確認してください。
証明書のエラーは別途対処が必要です。まずシステム時刻の自動同期を有効にし、サブスクリプションのドメイン名に誤りがないか、証明書の有効期限が切れていないか、現在のネットワークにログイン認証ページがないかを確認してください。TLS検証の無効化を恒久的な対処法にしないでください。URLの失効は解決できず、サブスクリプション内容の通信保護も弱まります。
エラー:401 Unauthorized
原因:リクエストの認証情報が不足している、期限切れ、またはサーバーに受け付けられていません。対処法:提供元の管理画面からサブスクリプションURLを再取得し、トークンが完全に含まれているか確認してください。古いリンクを繰り返し試すだけでは解決しません。
エラー:403 Forbidden
原因:サーバーがアクセスを拒否しています。アカウントの状態、アクセス元の制限、認証ページなどが関係している可能性があります。対処法:管理画面の状態を確認し、直接接続とプロキシ経由の結果を比較したうえで、制限について提供元に問い合わせてください。
エラー:404 Not Found
原因:リクエスト先のパスが存在しないか、サーバーが無効なURLを隠すためにこのステータスを返しています。対処法:現在のサブスクリプションURLをコピーし直し、古いドメインやパスを使っていないか、URLが途中で切れていないか確認してください。
上記は一般的なHTTPエラーの原文です。クライアントのログには、ステータスコードやローカライズされた説明が追加される場合があります。サーバーから返されたエラーページをBase64デコーダーに入力しないでください。解析できるサブスクリプション本文を受け取るには、まずリクエストのエラーを解決する必要があります。
クライアントで再確認:一度に変更する条件は1つだけ
v2rayNはデスクトップクライアント、v2rayNGはXrayコアを使用するAndroidクライアントです。サブスクリプションの取得と解析は主にクライアントが行うため、コアの変更はサブスクリプションエラー全般に有効な解決策ではありません。ログに特定の設定やコアの機能が関係していると明記されている場合に限り、互換性を確認してください。
- v2rayN:「サブスクリプショングループ」→「サブスクリプショングループ設定」で対象のグループとURLを確認します。保存して更新したら、対象グループに戻り、検索条件を解除してください。更新前後の項目数を比較し、完了メッセージだけで判断しないようにしましょう。
- v2rayNG:メイン画面右上のメニューから「サブスクリプショングループ設定」を開き、グループのURLを確認します。メイン画面に戻り、メニューから「サブスクリプションを更新」を実行してください。メニュー名はバージョンによって変わることがあるため、現在の画面表示に従ってください。
- 複数の端末で比較する:有効な同じサブスクリプションURLを使い、クライアントのバージョン、更新時刻、接続中のネットワークを記録します。クライアントによって対応する出力形式が異なる場合があるため、別の端末で成功しただけで、この端末のネットワークに問題がないとは判断できません。
- 設定を戻す順序:まず通常どおり更新できる状態に戻し、次に個々のノードが使えるか確認します。その後、必要なシステムプロキシ、TUN、ルーティング設定を戻してください。URL、DNS、コア、ルーティングを同時に変更しないでください。
よくある質問:更新完了後もノードが表示されない
更新成功と表示されるのに、一覧が空なのはなぜ?
更新したサブスクリプショングループを選択し、検索語とフィルターを解除してから、ログに記録されたインポート数を確認します。リクエストが成功しても、本文が空、形式が不一致、または項目がすべてフィルターされていれば、ノードは表示されません。応答本文と照らし合わせて判断してください。
ブラウザーでは開けるのに、クライアントでエラーになるのはなぜ?
ブラウザーにはログインCookieが保存されていたり、異なるプロキシ経路が使われていたりすることがあります。表示されたのがアカウントページではなくサブスクリプション本文かを確認し、クライアントの直接接続とプロキシ経由の更新をそれぞれ試してください。ブラウザーのログインURLをサブスクリプション欄に入力しないでください。
古いノードがすべて使えない場合、プロキシ経由で更新できる?
利用可能なプロキシ出口がない場合、プロキシ経由での更新では通常解決できません。まず直接接続を試すか、サブスクリプションURLにアクセスできる別のネットワークから更新してください。それでも失敗する場合は、URLへの接続可否とアカウントの状態を提供元に確認してもらいましょう。
サービス提供元への問い合わせには、どんな情報が役立つ?
クライアント名とバージョン、発生時刻、HTTPステータスコード、直接接続とプロキシ経由それぞれの結果、機密情報を隠したエラーログを伝えてください。サブスクリプションURL全体は、相手が指定する非公開の連絡手段でのみ共有し、公開の掲示板には投稿しないでください。
原因は大きく3点に絞れます。URLがまだ有効か、応答がクライアント対応のサブスクリプション形式か、リクエストの通信経路が到達可能か、です。この3点を分けて確認するほうが、更新を繰り返したりクライアントを再インストールしたりするより、問題を特定しやすくなります。クライアントのバージョンが古いと確認できた場合は、ダウンロードページから適切なインストーラーを選び、元の設定をバックアップしておきましょう。