サブスクリプションリンクとは何か

サブスクリプションリンク(subscription URL)はHTTPSのアドレスで、返ってくるのはWebページではなく設定ファイルです。クライアントはこのファイルを受け取って初めて、どのサーバーに接続し、どのプロトコルを使い、どの振り分けルールを通すのかを把握します。ノードは個々のサーバーパラメータ、サブスクリプションリンクはその一群を取得する入口であり、この2つは混同しないでください。

単体ノードのリンクとの違いは、数とメンテナンス方法にあります。ss://、vmess://、vless://、trojan:// で始まる文字列は1本につき1ノードしか表さず、10本コピーすれば10ノードです。サブスクリプションリンクはURLが1本だけで、その中にノード群がまとまっています。サーバー側で回線を追加したり、メンテナンスのためノードを停止したり、入口を調整したりしても、クライアントがサブスクリプションを再取得すれば同期され、1本ずつ差し替える必要はありません。

返却される形式はクライアントによって異なります。Clash・mihomo系はYAML、sing-boxはJSON、v2rayNとv2rayNGはBase64でエンコードされたノードリンク一覧、Shadowrocketはどちらも読めます。そのためパネルにはコピーボタンが複数用意されているのが普通で、形式を間違えたときの典型的な症状は「インポートは成功したのにノード一覧が空」です。

サブスクリプションにはノードのほか、通常は振り分けルール(どのドメインを直結し、どれをプロキシ経由にするか)とDNS設定、そして subscription-userinfo というレスポンスヘッダーが含まれます。中身は使用済み通信量・総通信量・有効期限で、クライアントはこれをもとに残量を画面に表示します。パネルの数字とクライアントの数字が合わないときは、まず手動で一度更新してみてください。

本サービスを例にすると、1本のサブスクリプションリンクの背後には次のような構成があります。

100+ 対応国・地域
230+ 選択可能な回線
台数無制限 1つのアカウントで複数端末が同じサブスクリプションを共有
14日間 理由を問わない返金対応

ユーザーパネルでサブスクリプションリンクを取得する場所

サブスクリプションリンクはログイン後のユーザーパネルにしか表示されず、販売ページには載りません。取得は次の5ステップです。

  1. パネルの入口を開き、ユーザー名とパスワードでログインします。本サービスは登録にメールアドレスが不要で、ユーザー名+パスワードだけで済むため、このリンクは実質的にアカウントの資格情報そのものです。リンクを手に入れることは、設定を手に入れることと同じだと考えてください。
  2. ログイン後、概要ページで「サブスクリプション」セクションを開きます。ここに現在のプランの通信量と有効期限が表示されます。
  3. クライアントに合わせて形式を選びます。Clash・mihomo・Clash Verge RevはYAMLサブスクリプション、v2rayN・v2rayNG・Shadowrocketは汎用(Base64)サブスクリプションを選びます。
  4. 「サブスクリプションリンクをコピー」を押し、プレーンテキストエディタに貼り付けて確認します。リンクが途中で改行されていないか、空白が混ざっていないか、末尾の token パラメータが欠けていないかをチェックしてください。
  5. すぐにインポートして一度接続し、使えることを確認してからパネルを閉じます。インポートに失敗したらパネルに戻ってコピーし直しましょう。クライアントの設定を何度もいじるのは逆効果です。

サブスクリプションリンクの例は https://example.com/sub?token=xxxx です。この token はアカウント資格情報の一部であり、ランダムな飾りではありません。パスワードと同じ扱いで管理し、グループチャットに送らない、公開リポジトリに貼らない、スクリーンショットを外に出さないを守ってください。

5つのプラットフォームでのインポート手順

5つのプラットフォームは操作経路が異なるだけで、やることは同じです。1本のURLをクライアントに渡し、クライアントが取得しに行きます。下表は主なクライアントの入口です。

各プラットフォームの主なクライアントとサブスクリプションのインポート入口
プラットフォーム 主なクライアント インポート入口 つまずきやすい点
Windows Clash Verge Rev、v2rayN 設定 → URLからインポート;v2rayNはサブスクリプショングループ設定 → 追加 インポート後に設定を「使用中」にしていない
Android Clash Meta for Android、v2rayNG 設定 → 新規作成 → URLからインポート;v2rayNGは追加後にメイン画面へ戻って更新 OSの省電力設定にバックグラウンドプロセスを止められる
iOS Shadowrocket、Stash ホーム画面右上の+ → 種類でSubscribeを選択 → 貼り付けて保存 保存後に更新が走らず、一覧にノードが出ない
macOS ClashX Meta、Stash メニューバーのアイコン → 設定 → リモート設定 → リモート設定を追加 初回接続時にネットワーク権限の許可が必要
Linux Clash Verge Rev、mihomoコア GUIは上記と同じ;コマンドラインではcurlで取得してコアを再読み込み コアはCPUアーキテクチャに合わせてパッケージを選ぶ

デスクトップ:WindowsとmacOS

Clash Verge Revは「設定」ページで新規設定を作成し、「URLからインポート」を選んで貼り付け、インポート後に一覧からその設定を選択します。v2rayNは先に「サブスクリプショングループ設定」でアドレスを追加し、メイン画面に戻って「サブスクリプションを更新」を押す2段階で、どちらか一方だけでは完了しません。macOSのClashX Metaはメニューバーのアイコン → 設定 → リモート設定 → リモート設定を追加で、初回接続時はシステム設定でネットワーク権限を許可する必要があります。デスクトップで最も多い失敗は、インポート後に新しい設定を「使用中」にしておらず、メイン画面が古いノードを表示したままになるケースです。

モバイル:AndroidとiOS

v2rayNGはサイドメニューの「サブスクリプショングループ設定」で右上の追加を押し、貼り付けてからメイン画面に戻って「サブスクリプションを更新」を押します。Clash Meta for Androidは「設定」→「新規設定」→「URLからインポート」です。Androidではシステム設定でバックグラウンド常駐を許可しないと、バックグラウンドに回ってしばらくすると接続が切れます。iOSのShadowrocketはホーム画面右上の+から種類でSubscribeを選び、貼り付けて保存したあとホームに戻り、サブスクリプション項目で一度更新を実行して初めてノードが一覧に現れます。「保存したのにノードがない」はほぼこの手順の漏れです。

Linux:コマンドラインで取得

GUIがない場合は、curlでサブスクリプションの中身をコアの設定ファイルに直接書き込み、コアを再読み込みします。

curl -fsSL "https://example.com/sub?token=xxxx" -o ~/.config/mihomo/config.yaml
chmod 600 ~/.config/mihomo/config.yaml

取得が終わったらサービスを再起動するか、クライアントの「設定を再読み込み」を押すと新しいノードが反映されます。ファイル権限を600にするのは、同じマシン上の別アカウントに中のtokenを読まれないようにするためです。Clash Verge RevのGUIを使う場合、手順はWindowsと同じです。

クライアントがサブスクリプションを取得できないときは、まず別のネットワーク環境で再試行し(例:Wi-Fiからモバイルデータへ切り替え)、次にリンクがチャットアプリで途中改行されたり空白が入ったりしていないか確認します。この2つを除外してから、クライアントのバージョンを疑ってください。

更新はどのくらいの頻度で必要か

サブスクリプションの中身はリアルタイムには変わりません。サーバー側で新しい回線が追加されたとき、メンテナンスでノードが停止したとき、振り分けルールが調整されたときにだけ変わり、1日の間に一度も変わらないこともあります。多くのクライアントは既定で1日1回自動更新する設定になっており、日常利用にはこの頻度で十分です。手動更新の入口は通常、設定一覧のプルダウンか「サブスクリプションを更新」ボタンにあります。

すぐ手動更新が必要になるのは4つの場面です。パネルでプランを変更して通信量や権限が変わったとき、サブスクリプションリンクをリセットしたとき、ある地域のノードが一覧から消えたことに気づいたとき、接続品質が明らかに落ちたとき。逆に、接続のたびに更新するのは無意味です。リクエストが1回増えるだけで、回線が速くなるわけではありません。

更新の向きは一方向です。クライアントはサーバーが返した内容に従います。つまり、ローカルで変更したルール・DNS・ポートは、次の更新で丸ごと置き換えられます。

自分の変更を長期的に残したい場合は、クライアントの上書き・拡張機構(Clash VergeのMerge、mihomoのproxy-providersとrule-providers)を使い、手を入れた内容をオーバーレイ側に置きます。サブスクリプションが生成した設定を直接編集すると、更新のたびに書き直すことになります。

結論:日常はクライアントの毎日自動更新に任せ、週に1回の手動更新を保険として行う。本当に「すぐ更新」が必要なのは、プラン変更とリンクのリセットの2つだけです。

リンク漏洩後の対処手順

サブスクリプションリンク内のtokenはアカウントの資格情報そのもので、リンクを入手した人は設定一式を持ち出し、通信量を消費できてしまいます。漏洩に気づいたときは、何をするかより順序が重要です。

  1. まずリセット。パネルでサブスクリプションリンクをリセットし、古いtokenを即座に無効化します。これが最優先で、止血が先、他は後です。
  2. 次に端末ごとに差し替え。各端末で古い設定を削除し、新しいリンクをインポートします。1台だけ替えても、残りの端末は無効になったアドレスを使い続けています。
  3. そのあと複製を掃除。チャット履歴、クラウドノート、スクリーンショット、公開リポジトリにある古いリンクをまとめて削除します。この時点で古いリンクは無効ですが、掃除は次回の誤用を防ぐためです。
  4. 通信量を確認。パネルで使用済み通信量と実際の使用量が一致するかを見て、明らかなずれがあればサポート窓口に連絡します。
  5. 最後にアカウント。パスワードも一緒に漏れていた場合は、パスワードを変更し、すべての端末でログインし直します。

順序は逆にできません。先にリセットしてから端末ごとに差し替えれば、漏れたリンクは最初の手順で無効になります。逆に端末を消してからリセットすると、その間も古いリンクは使えるままです。

サブスクリプションリンクをリセットすると、すべての端末の古い設定が一斉に無効になります。それが代償であり、役割でもあります。だからこそ普段から外に漏らさず、事故が起きてから慌てないようにしてください。

インポート後のチェックリスト

インポート完了は設定が正しいことを意味しません。次の7項目は「取得できる・接続できる・正しく名前解決できる」の3層に分けて並べています。順に確認すれば、問題がどの層にあるか概ね特定できます。

  • ✅ クライアントにノード一覧が完全に表示され、数がパネルの表示と一致している。
  • ✅ ノードを1つ選んで海外サイトを開くと、タイトルだけでなくページ全体が読み込まれる。
  • ✅ クライアントに表示される残量がパネルと一致する(サブスクリプション内の通信量情報が読めている証拠)。
  • ✅ 振り分けルールが効いている。国内サイトは直結、高速化が必要なドメインはプロキシ経由になっている。
  • ❌ ノード一覧が空:サブスクリプションの形式を間違えている可能性が高いので、パネルに戻って別の形式でコピーし直す。
  • ❌ 401・403または「サブスクリプションの有効期限切れ」と表示される:tokenが無効です。コピーし直すか、リセット後に再インポートしてください。
  • ❌ 接続はできるのにWebページが開かない:まずシステムの時刻が正確か確認し、次にクライアントのDNS設定がローカルネットワークに上書きされていないか見る。

ノード一覧が空なのは取得段階の問題、「接続できるのに開けない」は接続確立後の名前解決の問題で、原因の層が違います。取得に失敗するならリンク自体を、接続に失敗するなら時刻とDNSを先に確認する。切り分けてから調べるほうが、ノードを何度も替えるよりずっと速く解決します。