Clash サブスクリプションリンクの導入方法とは?主要フォーマットと設定手順を解説
サブスクリプションリンクは、Clash系クライアントがノード一覧を取得する入口です。本記事ではサブスクリプションリンクの取得場所、Base64とYAMLという2つの主要フォーマットの違い、各プラットフォームでの導入手順、サブスクリプション変換と更新失敗時のトラブルシューティングについて解説します。
サブスクリプションリンクとは
サブスクリプションリンクは、サービス提供者が生成する1つのURLです。クライアントは定期的にこのURLへリクエストを送り、サーバーアドレス・ポート・暗号化方式・プロトコル種別といったノード情報を数十〜数百件まとめて取得します。単一ノードの共有リンク(ss://、vmess://、trojan://)とは異なり、サブスクリプションリンクは常時変化し続けるノード群を指し示すもので、固定の1台のサーバーを指すものではありません。
URLには通常、ユーザー識別用の文字列(トークン)が含まれています。サービス提供者はこのトークンでアカウントを識別し、対応するプランのノードを返します。あわせてレスポンスヘッダー subscription-userinfo に、使用済みトラフィック・総トラフィック・有効期限を格納します。クライアント画面に表示される残りトラフィックは、このヘッダー情報に基づいています。
サブスクリプションリンクと単一ノードリンクの違い:
- 対応範囲:単一ノードリンクは1台のサーバーのみを指しますが、サブスクリプションリンクは一度にノード一覧全体を配信します。
- 更新方法:単一ノードはパラメータが変わると手動で書き換える必要がありますが、サブスクリプションリンクはクライアントが再取得するだけで、ノードの追加・削除が自動的に反映されます。
- 内容の範囲:Clash形式のサブスクリプションにはプロキシグループや振り分けルールも含まれますが、単一ノードリンクには接続パラメータしかありません。
主要なサブスクリプションフォーマット:Base64とYAML
同じサブスクリプションURLでも、サーバー側から返される内容の形式は異なります。よく見られるのは、Base64エンコードされた共有リンクの一覧と、Clashネイティブ形式のYAML設定の2種類です。導入前に、まず自分が取得したのがどちらの形式かを確認しましょう。
Base64サブスクリプション(汎用サブスクリプション)
ss://、vmess://、trojan:// といった複数の共有リンクを改行区切りで連結し、全体をまとめてBase64エンコードしたものです。これはv2ray系クライアントで使われてきた慣習で、多くのサービス提供者はこれを汎用サブスクリプションと呼んでいます。デコードすると、以下のような内容になります:
ss://[email protected]:8388#HK-01
trojan://[email protected]:443#JP-02
vmess://eyJ2IjoiMiIsInBzIjoiQ04tMDMifQ==
エンコード後は改行のない1本の文字列になります。最初のノードがss://リンクの場合、エンコード結果はc3M6Ly9から始まります。Base64サブスクリプションにはノード情報のみが含まれ、プロキシグループや振り分けルールは含まれません。mihomoカーネルを採用するクライアントの多くはこの形式を認識できますが、グループやルールはクライアント側の標準テンプレートによって生成されます。
Clash YAMLサブスクリプション
サーバー側から直接Clash設定ファイルが返されるもので、proxies(ノード)、proxy-groups(グループ)、rules(振り分けルール)の3つのセクションを含みます。これはClashおよびClash Meta(mihomo)カーネルのネイティブ形式で、構造は以下の通りです:
proxies:
- name: "HK-01"
type: ss
server: 203.0.113.10
port: 8388
cipher: aes-256-gcm
password: "pass"
proxy-groups:
- name: "PROXY"
type: select
proxies:
- "HK-01"
- "DIRECT"
rules:
- "DOMAIN-SUFFIX,example.com,PROXY"
- "MATCH,DIRECT"
サービス提供者から返されるのは通常、完全な設定ファイルです。ノード一覧に加え、整備済みの振り分けルールも含まれており、クライアントに導入すればそのまま使用できます。一部のパネルでは、proxy-providersなどの高度な用途で参照するための、proxiesセクションのみを含むノード専用YAMLも提供されています。
| フォーマット | 内容形式 | グループ・ルール | 主な提供元 | mihomo対応状況 |
|---|---|---|---|---|
| Base64リスト | 複数行の共有リンクを一括エンコード | 含まない | v2ray系パネル、汎用サブスクリプションと明記されたサービス | 多くのクライアントで認識可能 |
| Clash YAML完全設定 | proxies + proxy-groups + rules | 含む | Clashサブスクリプションと明記されたサービス | ネイティブ対応 |
| proxiesのみのYAML | ノードセクションのみ | 含まない | サブスクリプション変換の出力、proxy-providers参照用 | ネイティブ対応(ノード source として) |
サブスクリプションリンクの導入手順(共通の流れ)
クライアントごとに画面は異なりますが、流れは共通です:リンクをコピーし、リモート設定を新規作成し、貼り付けてダウンロードし、現在の設定として選択します。クライアントを未インストールの場合は、まずダウンロードページでお使いのプラットフォームを選んでください。
- リンクを取得する。サービス提供者の管理画面にログインし、「Clashサブスクリプション」や「サブスクリプションアドレスをコピー」といったボタンを探します。汎用サブスクリプションとClashサブスクリプションの両方が用意されている場合は、Clashサブスクリプションを優先してコピーしてください。
- 設定管理画面を開く。Clash Verge Revは左サイドバーの「サブスクリプション」ページ、FlClashは「プロファイル」ページ、Clash Plus(iOS)は「プロファイル」タブにあります。入口の名称は「新規作成」「インポート」「+」ボタンなどが多いです。
- リモート設定を新規作成する。種類は「URL」または「リモート」を選び、サブスクリプションリンクを貼り付け、わかりやすい名前を付けて保存します。クライアントはすぐにダウンロードして一度解析を行います。
- 現在の設定として選択する。設定一覧からインポートした項目を選び、有効化します。
- 接続を確認する。メイン画面に戻り、ルールモードとノードを1つ選択し、システムプロキシまたはTUN(概念については用語集を参照)を有効にして、IP確認サイトにアクセスし出口が切り替わっていることを確認します。
各プラットフォームの入口早見表
- Windows / macOS(Clash Verge Rev):「サブスクリプション」ページ → 「新規作成」 → URLを貼り付け → 保存;設定カード上の更新ボタンでサブスクリプションを更新できます。
- Android(FlClash):「プロファイル」ページ → 右下の新規作成ボタン → 「URLからインポート」。
- iOS(Clash Plus):「プロファイル」 → 「リモート設定を新規作成」 → URLを貼り付け → ダウンロード。
サブスクリプション変換:必要になる場面とそのコスト
サブスクリプション変換とは、あるサブスクリプション形式を別の形式に変換することです。代表的なケースはBase64の汎用サブスクリプションをClash YAMLに変換する場合で、代表的なツールはsubconverterです。変換用リンクは、元のサブスクリプションアドレスをパラメータとして変換サービスのURLに埋め込む形になります。
変換が必要になるケース:
- サービス提供者が汎用サブスクリプションしか提供していないが、クライアントがClash設定しか受け付けない場合。
- グループ構成やルールテンプレートを独自にカスタマイズしたいが、サービス提供者側のデフォルト出力では要件を満たせない場合。
変換にかかるコスト:
- 変換サービスはトークンを含むサブスクリプションの内容すべてを閲覧できてしまいます。サブスクリプションの認証情報が第三者を1つ経由するたびに、漏えいリスクは高まります。
- 変換結果に含まれるルールテンプレートは変換サービス側が管理しているため、振り分けの挙動が想定と異なる場合があります。導入後は重要なルールを一度確認しておくべきです。
- 優先順位:サービス提供者が用意しているClashサブスクリプション接続 > 自前で構築した変換プログラム > 公開の変換サイト。
サブスクリプションの更新:手動・自動・失敗時の対処
ノード一覧はサービス提供者側の調整に応じて変化するため、サブスクリプションは定期的に更新する必要があります。
- 手動更新:設定カード上の「更新」または再読み込みボタンを使います。ノード一覧を再取得し、グループで選択中のノードは名前でマッチングされ、通常はそのまま維持されます。
- 自動更新:多くのクライアントは時間単位での自動更新に対応しています。ノード一覧は頻繁に変化するものではないため、12〜24時間に1回程度で十分で、それより短い間隔にしても実質的なメリットはありません。
- トラフィックと有効期限:サーバー側が
subscription-userinfoレスポンスヘッダーを返す場合、クライアントには残りトラフィックと有効期限が表示されます。返されない場合は表示されませんが、これは正常な状態です。
更新失敗のトラブルシューティング
- 通信経路:サブスクリプションサーバーに直接アクセスできるか確認する。サブスクリプションのドメインがプロキシルールでブロックされていないか確認する。
- リンク自体:リンクが既にリセットされていないか。コピー時に余分な空白や改行が混入していないか。
- アカウント状態:プランが期限切れになっていないか、トラフィックを使い切っていないか。一部のサービス提供者はこの状態で空の内容やエラーページを返します。
- フォーマットの一致:ブラウザで直接サブスクリプションリンクを開き、返ってきた内容がBase64の文字列かYAMLテキストかを確認し、クライアントが期待する形式と一致しているか照合します。
よくある質問
導入は成功したのにノード一覧が空になる
多くの場合、返される形式がクライアントと一致していない、またはアカウントに利用可能なノードがないことが原因です。ブラウザでサブスクリプションリンクを開いて実際の返却内容を確認するのが、最も手早い確認方法です。
1つのサブスクリプションを複数台の端末で使える?
同じリンクを複数の端末に導入すること自体は通常問題ありませんが、サービス提供者側で同時オンライン端末数やIP数に制限を設けている場合があり、上限を超えると切断されます。詳細はサービス提供者の告知に従ってください。
サブスクリプションリンクが漏えいしてしまった場合は?
サービス提供者の管理画面で「サブスクリプションリンクをリセット」を実行してください。旧リンクは即時失効し、すべての端末で新しいリンクを使って再度導入する必要があります。すでにクライアント側にダウンロードされているノード情報自体には影響しませんが、それ以上の更新はできなくなります。
ノード名が文字化けしたり重複したりする
ノードの命名はサービス提供者側の設定によります。一部のクライアントは正規表現によるノードのフィルタリングやリネームに対応していますが、この機能がないクライアントの場合は、サービス提供者側での修正を待つしかありません。
クライアントをダウンロードして、最初のサブスクリプションを導入する
各プラットフォーム向けClashクライアントのバージョンとインストーラーは、ダウンロードページにまとめてあります。初回設定はサブスクリプションの導入から始まり、使用ガイドに沿って進めれば完了します。