プロキシのサブスクリプションとは、プロキシプロバイダが発行する、サーバの一覧を返す専用の URL です。 プロキシアプリはこれをダウンロードしてすべてのサーバを一度に読み込み、後で再びダウンロードすることで、新しいサーバや変更されたサーバを自動的に反映します。Clash のサブスクリプションリンクも考え方は同じですが、URL が返すのはサーバだけでなく、プロキシグループやルールも含んだ完全な Clash 構成です。

この記事では、サブスクリプションの中身、よく使われる 3 つの形式、アプリによる取得と更新の仕組み、そして URL を安全に管理する方法を解説します。

プロキシのサブスクリプションとは?

1 台のサーバなら、ss://… や vless://… のような共有リンク 1 本で共有できます。自分で運用するサーバが 1 台だけなら、それで十分です。しかしプロバイダは通常、さまざまな地域にある多数のサーバを提供しており、アドレス、ポート、キーもときどき変わります。そのたびに新しいリンクを送っていては対応しきれません。

そこでプロバイダは、たとえば次のような 1 本の URL を渡します。

https://sub.example.com/api/v1/client/subscribe?token=abc123

この URL の先には、サーバの一覧を記したドキュメントがあります。token の部分でアカウントが識別されるため、同じ URL でも返ってくるのは自分のサーバだけです。アプリに一度ペーストすれば、あとはアプリが同期を保ってくれます。

共有リンク サブスクリプション URL
含まれるもの サーバ 1 台 サーバの一覧(グループやルールを含むことも多い)
見た目 ss://、vless://、trojan:// など https://…
変更 されない(新しいサーバには新しいリンク) プロバイダが返す内容を更新する
アプリでの更新 なし あり(定期的、または手動で)

よく使われるサブスクリプションの形式

統一された標準はありませんが、ほとんどのプロバイダは次の 3 つの形式のいずれかを使っています。

Base64 形式のサブスクリプション(V2Ray、Xray、Shadowsocks)

最も古くシンプルな形式は、共有リンクを 1 行に 1 つずつ並べ、Base64 でエンコードしたものです。デコードすると次のようになります。

ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Tokyo
vless://3971e1b2-18a3-4f83-8fa6-bf9b142ee258@vless.example.com:443?security=tls&sni=vless.example.com#Singapore
trojan://secret@trojan.example.com:443?sni=trojan.example.com#Frankfurt

どのアプリでも簡単に読み込めますが、含まれるのはサーバの一覧だけです。グループもルールもないため、通信の振り分け方はアプリ側で決めることになります。

Clash・Mihomo の YAML

Clash のサブスクリプションは YAML 形式の構成を返します。現在の Clash 系アプリの多くが採用しているエンジン Mihomo も、同じ形式をより多くのプロトコルとともに読み込めます。簡略化した例です。

proxies:
  - name: Tokyo
    type: ss
    server: ss.example.com
    port: 8388
    cipher: aes-256-gcm
    password: secret
proxy-groups:
  - name: Auto
    type: url-test
    proxies: [Tokyo]
    url: https://www.gstatic.com/generate_204
    interval: 300
rules:
  - DOMAIN-SUFFIX,example.org,DIRECT
  - MATCH,Auto

Clash の構成には、proxies のほかに、proxy-groups(手動、最速、フォールバックの選択)、プロキシ経由にする通信を決める rules、別の URL から追加の一覧を取り込む rule-providers と proxy-providers、そして dns の設定を含めることができます。Clash のサブスクリプションが提供されていればそちらが好まれるのはこのためで、サーバだけでなく、すぐに使えるルーティング設定まで手に入ります。

Surge のプロファイル

Surge は、[Proxy]、[Proxy Group]、[Rule] などのセクションを持つ INI 形式のテキストファイルを使います。これを提供しているプロバイダも多くあります。Surge 以外のアプリでも共通部分は読み込めますが、スクリプトや URL リライトなど Surge 専用のセクションには、他のアプリに相当する機能がありません。

アプリがサブスクリプションを取得する仕組み

アプリはサブスクリプションをダウンロードするとき、通常の HTTPS リクエストを送ります。ここで重要な点が 2 つあります。

User-Agent で形式が決まる

多くのプロバイダのパネルは、どのアプリからのリクエストかによって異なる形式を返し、その判別に User-Agent ヘッダーを使います。Clash クライアントを名乗るリクエストには YAML を返し、それ以外には Base64 の一覧を返す、といった具合です。URL に追加のパラメータを付けて形式を選べるパネルもあるので、プロバイダの案内を確認してください。

Potatso はサブスクリプションをダウンロードするとき、clash.meta を名乗ります。そのため、アプリによって形式を変えるパネルからは、グループやルールを含む Clash / Mihomo の構成が Potatso にも届きます。

ヘッダーでデータ通信量がわかる

多くのパネルは、レスポンスに subscription-userinfo ヘッダーを追加します。

subscription-userinfo: upload=1234; download=5678; total=107374182400; expire=1798761600

upload と download は使用済みのバイト数、total はプランのデータ容量、expire はプランの終了日時を表す Unix タイムスタンプです。このヘッダーを読み取るアプリなら、プロバイダの Web サイトにログインしなくても、使用データ量と有効期限を表示できます。また、ファイル名を含む Content-Disposition ヘッダーが、プロファイル名として使われることもよくあります。

使用データ量、有効期限、最終更新日時、次回の更新、「今すぐ更新」が表示された Potatso のサブスクリプションプロファイル

自動更新

サブスクリプションは、最新の状態に保たれてこそ役に立ちます。アプリは定期的に(一般的には 1 日 1 回)ダウンロードし直し、古いサーバ一覧を新しいものに置き換えます。サーバが使えなくなったときのために、手動で更新できるアプリがほとんどです。

優れたアプリは、ユーザ自身の変更も保持します。グループの名前を変えたりルールを追加したりしたのに、次の更新で元に戻ってしまっては困ります。たとえば Potatso は、ユーザの編集をオーバーライドとして記録し、更新のたびに元のサブスクリプションには手を加えずに再適用します。

サブスクリプション URL は非公開に

サブスクリプション URL は、実質的にパスワードと同じです。

  • URL を知っている人は誰でもアカウントを使えます。 サーバを読み込まれ、データ通信量を使い切られてしまいます。
  • 公開しないでください。 スクリーンショット、QR コード、バグ報告、グループチャットへの投稿も含みます。
  • HTTPS を使いましょう。 平文の http:// で取得したサブスクリプションは、途中で盗み見られたり改ざんされたりするおそれがあります。Potatso は、構成が平文の HTTP で届いた場合に通知を表示します。
  • 漏れたらリセットしましょう。 ほとんどのプロバイダのダッシュボードには、サブスクリプションリンクをリセットするボタンがあります。リセット後は新しい URL を読み込んでください。
  • オンラインの変換サービスに注意。 第三者の変換サイトに URL を貼り付けると、そのサイトにサーバ情報を渡すことになります。

サブスクリプションとプロトコル

サブスクリプションは単なる入れ物です。中のサーバは Shadowsocks、VLESS、Trojan、Hysteria 2、AnyTLS などのプロトコルを使っており、それぞれを使うにはアプリがそのプロトコルに対応している必要があります。通常、アプリは使えないサーバをスキップし、その理由を表示します。各プロトコルの違いは プロキシプロトコル比較 を、最も一般的なプロトコルについては Shadowsocks とは? をご覧ください。

iPhone でサブスクリプションを使う

iPhone・iPad 向けの無料プロキシクライアント Potatso は、Clash / Mihomo の YAML、Base64 形式のサブスクリプション、V2Ray / Xray の JSON、Surge のプロファイル、Shadowsocks SIP008 を読み込めます。読み込み前にプレビューを表示し、使用データ量と有効期限を表示し、デフォルトでは毎日更新します。

手順は iPhone に Clash サブスクリプションを読み込む方法 で詳しく解説しています。対応形式の一覧は サブスクリプションと構成を読み込む をご覧ください。

よくある質問

Clash のサブスクリプションリンクとは何ですか?
プロキシプロバイダが発行する URL で、Clash または Mihomo の YAML 構成を返します。ファイルにはサーバの一覧と、たいていはプロキシグループやルールも含まれており、アプリが定期的にダウンロードし直すことで常に最新の状態に保たれます。
サブスクリプション URL と共有リンクは同じものですか?
いいえ。ss:// や vless:// のような共有リンクは 1 台のサーバを表し、内容が変わることはありません。サブスクリプション URL はプロバイダのサーバ上にある一覧を指しており、プロバイダはサーバを追加・削除・変更できます。アプリがそれを取得し直すことで、変更が反映されます。
ブラウザでサブスクリプションを開くと、意味不明な文字列が表示されるのはなぜですか?
V2Ray や Shadowsocks のサブスクリプションの多くは、共有リンクの一覧を Base64 でエンコードしたものです。プロキシアプリがこれをデコードします。また、どのアプリからのリクエストかによって異なる形式を返すプロバイダもあるため、ブラウザで見える内容とアプリが受け取る内容が違うことがあります。
サブスクリプション URL が他人に知られるとどうなりますか?
URL には通常、パスワードのように機能するトークンが含まれているため、相手があなたのサーバを読み込み、データ通信量を使えてしまいます。漏れた場合は、プロバイダのダッシュボードでサブスクリプションリンクをリセットし、新しいリンクを読み込み直してください。

他の言語: English · 简体中文 · 繁體中文 · Русский