ss://・vmess://・vless://・trojan://共有リンクの形式とサブスクリプションURLとの違い

ss://、vmess://、vless://、trojan://の共有リンクの構造と項目を解説。単体リンクとサブスクリプションURLの違い、Shadowrocketへの追加方法を紹介します。

この記事の要点

この記事は、自分が利用するサービスの接続情報を持っていて、Shadowrocketに追加し、設定を確認したい方を対象としています。まずリンクのプレフィックスで単体の接続情報とサブスクリプションURLを見分け、サーバー、ポート、認証情報、通信設定を確認します。その後、追加・更新・接続確認の順にチェックします。example.comのURLとサンプル認証情報は書式の説明用であり、接続には使えません。当サイトはノードやサブスクリプションサービスを提供・販売・推奨していません。

1. 共有リンクとサブスクリプションURL:設定情報を含むリンクと一覧を取得するURL

ss://、vmess://、vless://、trojan://は、この記事で取り上げる4種類の共有リンクのプレフィックスです。通常、リンク自体に1つの接続に必要な情報が含まれています。追加すると、アプリが情報を読み取り、サーバー設定を1件作成します。リンク内の備考を変更しても、接続先サーバーの設定は変わりません。

サブスクリプションURLは通常、https://で始まります。たとえば、https://example.com/sub?token=xxxxのような形式です。クライアントはまずこのURLにリクエストを送り、サーバーから返された接続リストを解析します。応答には、複数の共有リンクをエンコードしたテキストや、クライアントが対応する別のサブスクリプション形式が含まれる場合があります。httpsを別のプロトコルのプレフィックスに書き換えるだけで、単一の共有リンクになるわけではありません。

確認項目単体の共有リンクサブスクリプションURL
情報の保存場所主にリンクのテキスト内URLの接続先サーバーから取得
追加時の処理パラメーターを解析し、接続設定を1件保存URLにリクエストを送り、複数の設定を解析・保存
サーバー側の情報が変更された場合通常は再追加するか手動で修正サブスクリプションを更新して同期。内容はサーバーの応答による
機密情報パスワード、UUID、サーバー情報アクセストークン、パスに含まれる認証情報、取得可能な接続情報

https://だけでは、サブスクリプションURLかどうか判断できません。アカウントのログインページ、決済ページ、ヘルプページもHTTPSを使用しています。判断の基準は、利用中のサービス提供元が案内している用途と、リクエスト後にShadowrocketが解析できるサブスクリプションデータが返るかどうかです。ログイン画面や認証コードの入力画面が表示された場合は、コピーしたURLがサブスクリプション用か確認してください。

2. リンクの構造を確認:プレフィックス、認証情報、ホスト、ポート、パラメーター

プロトコルによって項目の並び方は異なりますが、確認する順番は統一できます。まずプレフィックスを確認し、次に認証情報、サーバーアドレスとポート、最後にTLSと通信設定を照合します。備考は通常#以降にあり、設定を見分けるためのもので、認証パスワードではありません。

4種類
この記事で扱うプレフィックス:ss / vmess / vless / trojan
443
後述するTLSの例で使うポートです。すべてのサービスで共通のポートではありません
8388
後述するShadowsocksの例で使うポートです。実際の値はサーバー側で決まります

3. ss://:暗号化方式とパスワードを確認

ss://はShadowsocksに対応します。一般的なSIP002形式では、「暗号化方式:パスワード」をBase64またはURL-safe Base64でエンコードし、その後に@サーバー:ポートを続けます。より長い情報全体をエンコードする旧形式もあるため、リンク内に@が見えるかどうかだけで破損を判断しないでください。

ss://[email protected]:8388#demo-ss

上の例は書式の説明用です。YWVzLTEyOC1nY206ZGVtby1vbmx5をデコードするとaes-128-gcm:demo-onlyになります。暗号化方式はaes-128-gcm、パスワードはdemo-only、サーバーはexample.com、ポートは8388です。エンコードされた文字列全体をパスワード欄に入力しないでください。

  1. 追加後、設定の詳細を開き、Type(タイプ)がShadowsocksになっていることを確認します。
  2. 自分の接続情報と照らし合わせ、暗号化方式、パスワード、サーバー、ポートを確認します。
  3. 元のリンクにpluginパラメーターがある場合は、プラグイン名とオプションも確認してください。基本項目が正しくても、プラグイン設定がすべて揃っているとは限りません。

Base64の末尾では、パディングの=が省略されることがあります。URL-safe形式では-と_も使われます。こうした違いを文字単位の置き換えで「修正」しないでください。まずサービス提供元から受け取った原文を保ち、アプリに読み取らせます。テキストが途中で切れていると確認できた場合に限り、リンク全体をコピーし直してください。

4. vmess://:一般的な形式はBase64でエンコードしたJSON

vmess://はVMessに対応します。一般的な共有形式では、JSONオブジェクトをエンコードし、プレフィックスの後ろに置きます。以下はデコード後の構造で、追加に使える完全な共有リンクではありません。生成元によっては別の形式もあるため、1つの形式での項目の解釈をすべてのリンクに当てはめないでください。

{
  "v": "2",
  "ps": "demo-vmess",
  "add": "example.com",
  "port": "443",
  "id": "00000000-0000-4000-8000-000000000001",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/demo",
  "tls": "tls",
  "sni": "example.com"
}

JSONの構造では、引用符とカンマが正しく揃っている必要があります。メッセージアプリによる改行、コピー時の末尾の欠落、半角引用符から全角引用符への置き換えなどで解析に失敗することがあります。追加後にサーバーアドレスが空欄なら、まず元のリンクが完全か確認してください。先にGlobal Routing(グローバルルーティング)を変更する必要はありません。

5. vless://とtrojan://:似た形式でも認証情報は異なる

vless://とtrojan://の一般的な共有形式は、どちらも「認証情報@サーバー:ポート?パラメーター#備考」に近い形です。前者ではUUID、後者ではパスワードが使われるのが一般的です。形式が似ていてもプレフィックスを置き換えることはできず、通信パラメーターをそのまま共用できるわけでもありません。

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fdemo&sni=example.com#demo-vless

trojan://demo%[email protected]:443?security=tls&type=tcp&sni=example.com#demo-trojan
項目説明確認方法
VLESSの認証情報例ではUUIDを使用各部分を照合し、ハイフンもそのまま保持
Trojanの認証情報例のパスワードはdemo@onlyリンク内の%40は@にデコードされます。区切り記号をパスワードの一部と間違えないでください
security=tlsTLSによる通信のセキュリティ設定を示すSNIと証明書に対応する名前も確認
type=ws / type=tcp通信方式を示すポートがどちらも443という理由だけで相互に置き換えない
path=%2Fdemoデコード後のパスは/demo先頭のスラッシュと大文字・小文字をそのまま保持

VLESSの例にあるencryption=noneは、VLESS自体の暗号化項目を示します。接続全体にTLSがないという意味ではありません。securityパラメーターと合わせて確認してください。ほかのセキュリティ方式では追加パラメーターが必要な場合もあります。この例のTLS設定を自分のサービスにそのまま使わないでください。

サーバーアドレス、SNI、WebSocket Hostは同じ場合も異なる場合もあり、それぞれ役割が異なります。項目を「揃える」ためだけに一律で書き換えないでください。また、アプリによって対応するパラメーターは異なります。設定を保存できたとしても、それは書式が受け付けられたことを示すだけです。詳細を確認し、実際に接続をテストしてください。

6. Shadowrocketに追加:単体設定とサブスクリプショングループを区別

以下ではHome(ホーム)から追加する手順を説明します。Homeではサーバー設定を管理し、Config(設定ファイル)ではルール設定を、Settings(設定)ではアプリのオプションを管理します。通常のサーバー共有リンクやサブスクリプションURLを、ルール設定ファイルとしてConfigに読み込まないでください。

単体の共有リンクを追加する

  1. 手元にあるサービス情報からリンク全体をコピーします。説明文、引用符、文末の句読点は含めず、リンクだけをコピーしてください。
  2. Shadowrocketを開いてHomeに移動します。クリップボードからの追加確認が表示されたら、承認して新しい設定を確認します。表示されない場合は、アプリの追加機能を使うか、リンクから生成したQRコードをスキャンしてください。
  3. 設定の詳細を開き、Type、サーバー、ポート、認証情報、TLSと通信パラメーターを順に確認します。プロトコルによって詳細に表示される項目は異なります。
  4. 設定を保存して選択し、接続を開始します。単体の設定は、サービス提供元の情報が変更されても、サブスクリプション管理の設定に自動で切り替わることはありません。

サブスクリプションを追加・更新する

  1. 自分のサブスクリプションURLをコピーします。たとえばhttps://example.com/sub?token=xxxxのような形式です。ここに示すのはダミーの値であり、接続先ではありません。
  2. Home → + を開き、TypeでSubscribe(サブスクリプション)を選びます。サブスクリプションURL欄にURL全体を入力し、保存して一覧の取得が完了するまで待ちます。
  3. サブスクリプショングループに設定が表示されたことを確認し、使う設定を選択します。サブスクリプションの追加に成功しても、接続設定が自動で選択されるとは限りません。
  4. サービス情報が変更されたら、Homeのサブスクリプショングループの操作から更新を実行します。返された内容と更新結果を確認してから、既存の設定に変更があったか確認してください。

7. 追加後の確認:設定情報を確認してからルーティングを比較

追加に成功したということは、設定情報を解析できたというだけで、サーバーに到達できること、認証情報が有効なこと、ルールが想定どおりであることを保証するものではありません。まず設定を選択して接続を確認し、次にHome → Global Routingを確認します。以下ではShadowrocket内の設定を比較します。プロトコルの速度ランキングではありません。

Config(設定ファイル)

おすすめ

現在の設定ファイルにあるルールに従って接続先を選びます。DOMAIN-SUFFIX、IP-CIDR、GEOIPなどのルールに一致すると、対応するポリシーが適用されます。先行するルールに一致しなければFINALで接続先が決まり、必ず直接接続になるわけではありません。

適した用途:ルール設定があり、接続先ごとに振り分けて普段使いたい場合

Proxy(プロキシ)

アプリが処理する接続にプロキシを適用します。一時的に通常の振り分けルールがテスト対象に与える影響を切り分ける際に使えます。誤ったパスワード、ポート、TLSパラメーターが修正されるわけではありません。

適した用途:プロキシ接続の可否を一時的に確認し、ルールの調査範囲を絞りたい場合

Direct(直接接続)

アプリが処理する接続に直接接続を適用します。ウェブページが開けても、追加したプロキシ設定が使える証明にはなりません。

適した用途:ローカルネットワーク自体が正常か確認したい場合

まとめ:一度に変更する確認項目は1つ

同じテスト対象がProxyでは使えてConfigでは失敗する場合は、接続パラメーターを維持し、マッチするルール、ポリシー、DNSを確認します。どちらでも失敗する場合は、サーバー、ポート、認証情報、TLSを先に確認してください。テスト後は元のルーティング設定に戻し、一時的な設定をそのまま使い続けないようにしましょう。

Global RoutingにはScene(シーン)もあり、動作は既存のシーン設定によって異なります。この記事で変数を切り分けるための固定テスト設定ではありません。Settings → On Demand(オンデマンド接続)は条件に応じて接続を開始する機能で、共有リンクの不足したパラメーターを補うものではありません。調査中に接続状態が自動で変わる場合は、既存のOn Demand設定も確認してください。

8. 共有リンクの追加・サブスクリプション更新でよくある質問

リンクをコピーしたのに自動で追加されないのはなぜ?

まずプレフィックスとリンク全体が正しいか確認し、リンクの前後にある引用符や説明文を取り除きます。次に、システムでクリップボードへのアクセスが許可されているか確認し、Homeに戻って追加機能を使うか、元のリンクから生成したQRコードをスキャンします。認識させるためにhttpsのサブスクリプションURLをssのプレフィックスに書き換えないでください。

サブスクリプションの更新は成功したのに設定が変わらないのは、更新されていないから?

必ずしもそうではありません。更新成功は、今回のデータ取得と解析が完了したことを示します。サーバーから同じ一覧が返されることもあります。グループ内のサーバーやポートが実際に変わったか確認し、コピーしたサブスクリプションURLも照合してください。サーバー側で更新されたか確かめるために、グループを何度も削除して作り直すのは避けてください。

サブスクリプションURLをブラウザーで開けるのに、アプリに追加できないのはなぜ?

ブラウザーでページが表示されても、応答がサブスクリプションデータとは限りません。ログインフォーム、HTMLのエラーページ、アクセス確認画面が表示されたら、サービス提供元が案内するサブスクリプションURLを確認してください。401または403が返る場合はトークンとアカウント権限を確認します。タイムアウトする場合はネットワークへの到達性を確認し、まずプロトコルのパスワードを変更することは避けてください。

リンク全体を誰かに送って確認してもらってもいい?

まず手元のコピーでパスワード、UUID、サブスクリプショントークンなどの認証パラメーターを隠し、確認が必要な項目の構造だけを残してください。QRコードにも元の情報が含まれています。認証情報を公開してしまった場合は、自分のサービスアカウントから該当する情報を無効化または変更し、Homeで設定またはサブスクリプションを更新してください。

確認後は、次の3点をそれぞれ答えられる状態にしましょう。追加したのは単体の接続情報か、サブスクリプションURLか。保存された項目は自分のサービス情報と一致しているか。現在のルーティング設定でこの接続が使われるか。この順序で確認すれば、書式の問題、サービスへの接続性の問題、ルールの問題を混同せずに済みます。

Shadowrocketをダウンロード