ss://・vmess://・vless://・trojan://の形式と使い方|単一サーバー共有リンクとサブスクリプションURLの違い

Shadowrocketの単一サーバー共有リンクとサブスクリプションURLの違いを解説。各リンク形式と読み込み方法を、example.comを使った例で紹介します。

この記事の概要

この記事は、サービス提供元からサブスクリプションまたは接続パラメータを受け取り、Shadowrocketへの追加を準備している方向けです。まずリンクのプレフィックスで種類を見分け、認証・通信方式・TLSの各項目を確認したうえで、単一リンクの読み込みとサブスクリプションの更新の違いを解説します。ドメイン名、パスワード、UUIDは形式の説明用で、実際の接続には使用できません。

1. 単一サーバー共有リンクとサブスクリプションURLの違い

単一サーバー共有リンクには、1つの接続に必要なパラメータがURI形式で記述されています。ss://、vmess://、vless://、trojan://のプレフィックスから、読み込み時に使用する形式を判別できます。読み込み後に追加されるのはサーバー情報であり、新しい内容を継続的に取得するためのURLではありません。

サブスクリプションURLは通常、HTTPSのURLです。ShadowrocketがそのURLにアクセスして応答内容を取得し、含まれているサーバー情報を解析します。更新とは、単一サーバーの共有リンクが自動で変化することではなく、URLに再度アクセスして取得した内容を処理することです。サブスクリプションはサービス提供元から入手してください。URLがhttps://で始まるだけでは、サーバーのサブスクリプション、設定ファイル、通常のWebページのどれが返されるかは判断できません。

4種類
この記事で扱うURIのプレフィックス:ss / vmess / vless / trojan
1件
単一サーバー共有リンクは、通常1件のサーバー情報を表します
443
HTTPSのデフォルトポートです。すべてのプロキシサービスで使われるポートではありません

2. ss://:認証情報・サーバーアドレス・備考

Shadowsocksでよく使われるSIP002形式には、Base64URLでエンコードされた認証情報、サーバーアドレス、ポート、任意の備考が含まれます。以下の例では、認証情報をデコードするとaes-256-gcm:password、アドレスはexample.com、ポートは8388です。これらは説明用の値であり、接続には使用できません。

ss://[email protected]:8388#Example-SS
項目意味確認ポイント
ss://Shadowsocks共有形式を示す識別子Add ServerのTypeがShadowsocksになっていることを確認します。
YWVzLTI1Ni1nY206cGFzc3dvcmQエンコードされた暗号化方式とパスワード暗号化方式とパスワードがサーバー側の設定と一致するか確認します。
example.com:8388サーバーアドレスとポートポートはサービス提供元の指定に従って入力してください。一律に443へ変更してはいけません。
#Example-SS任意の備考サーバー情報を見分けるためのもので、サーバー側の認証には使用されません。

以前から使われている別の形式では、「暗号化方式、パスワード、アドレス、ポート」全体がエンコードされており、見た目に@が含まれない場合があります。リンクを読み込めない場合は、区切り文字をすぐに追加するのではなく、まず使用されている形式を確認してください。プラグインのパラメータを含むリンクもあります。これらを省くと、アドレスやパスワードが正しくても接続できないことがあります。

3. vmess://:Base64内のJSONパラメータ

一般的なVMess共有形式では、vmess://の後にBase64テキストが続きます。デコードすると通常はJSONになり、「ユーザー名@サーバー」の形式ではありません。以下はエンコード前のJSON例です。そのまま貼り付けて読み込める完成済みのリンクではありません。

{
  "v": "2",
  "ps": "Example-VMess",
  "add": "example.com",
  "port": "443",
  "id": "11111111-2222-4333-8444-555555555555",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/connect",
  "tls": "tls",
  "sni": "example.com"
}

書式設定されたメッセージからリンクをコピーすると、改行、スマートクォート、途中で切れたBase64などが原因で解析に失敗することがあります。まず元の完全なテキストをコピーし直し、読み込み結果を確認してください。VMessのJSONをConfigに設定ファイル本文として貼り付けたり、JSON内のportをサブスクリプションURLのポートと取り違えたりしないでください。

4. vless://とtrojan://:読みやすい形式でも各項目の確認が必要

VLESSとTrojanの一般的な共有リンクは、比較的見分けやすいURI形式です。認証情報は@の前にあり、その後にアドレス、ポート、クエリパラメータが続きます。例にある&は、ページ上でリンクパラメータの区切りを表しています。実際にコピーする際は、元のリンク全体を保持してください。

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

trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Example-Trojan
確認項目VLESSの例Trojanの例
認証情報UUIDパスワード demo-password
接続先アドレスexample.com:443example.com:443
通信方式のパラメータtype=wsの場合はHostとPathが必要type=tcp
TLSパラメータsecurity=tlsとsnisecurity=tlsとsni

path=%2Fconnectの%2Fは、スラッシュをパーセントエンコードしたものです。パスワードに@や#などURIで特別な意味を持つ文字が含まれる場合も、正しくエンコードする必要があります。エンコードが不適切だと、パスワードの一部がアドレスや備考として解釈されることがあります。項目の区切りを理解せずにリンク全体を手動でデコードしてから読み込むのは避けてください。

読み込み後は通信方式とTLSの設定を確認

Homeにサーバー情報が表示されても、リンクが解析されたことを示すだけです。接続できない場合は、情報の編集画面を開き、アドレス、ポート、認証情報、通信方式、Host、Path、SNIの順に確認します。パラメータの誤りを隠すために、先に証明書の検証を無効にしないでください。

VLESSの例にあるencryption=noneは、プロトコルに対応するパラメータを示しており、この例にTLSが設定されていないという意味ではありません。共有形式によってパラメータ名の決まりも異なるため、プレフィックスだけを置き換えてVLESSリンクをTrojanリンクに変換することはできません。

5. Shadowrocketの読み込み先:サーバーサブスクリプションとConfigの違い

Homeではサーバー情報の管理と接続先の選択、Configではルール設定の管理、Settingsではアプリの設定を行います。サーバーサブスクリプションはサーバー情報をまとめて管理するためのものです。一方、リモート設定には[General]や[Rule]などのセクションが含まれる場合があります。どちらもHTTPS経由で取得できますが、URLの見た目が似ているからといって、同じ場所に追加しないでください。

Add Server → Type → Subscribe

おすすめ

サーバーサブスクリプションURLをすでに持っている場合の手順です。Homeで追加ボタンをタップしてAdd Serverを開き、TypeでSubscribeを選択します。URLを入力して保存してください。以後は、そのサブスクリプション情報から更新します。

こんな場合に:サーバーサブスクリプションを持っていて、まとめて更新したい

Add Server → 対応するプロトコルのType

手元のパラメータに合わせてShadowsocks、VMess、VLESS、Trojanから選び、アドレス、ポート、認証情報を入力します。単一の共有リンクはクリップボードからの読み込み案内やQRコードからも解析できます。読み込み後に各項目を確認してください。

こんな場合に:単一の共有リンクを持っている、またはサーバー情報を1件ずつ手動で確認したい

Config → リモート設定

ルール設定ファイルを読み込むための項目です。まず取得先から設定内容が返されることを確認し、Configで追加して使用する設定を選択してください。通常のサーバーサブスクリプションURLをルール設定ファイルのURLとして登録しないでください。

こんな場合に:設定セクションを含むリモート設定URLを入手している

クリップボードとカメラへのアクセス権はシステムで管理されます。リンク全体をコピーしてHomeに戻り、表示された読み込み案内に従ってください。QRコードを読み取る場合は、Homeのスキャン機能を使って元のテキストを読み込みます。読み込み案内が表示されない場合は、プレフィックス、空白、改行を確認してください。サブスクリプションURLを単一サーバーのAddress欄に入力しないでください。

手元にある情報の種類別の使い方

単一サーバー共有リンクがある場合
  • プレフィックスとリンク全体を確認してから、クリップボードまたはQRコードで読み込みます。
  • Homeでサーバー情報を開き、アドレス、ポート、通信方式の項目を確認します。
  • サーバー側のパラメータが変更された場合は、新しいリンクを入手して情報を確認し直します。
サーバーサブスクリプションURLがある場合
  • サブスクリプションはサービス提供元から入手し、クエリパラメータを含めてURL全体を保持します。
  • TypeでSubscribeを選ぶ画面からURLを保存します。
  • そのサブスクリプションを更新し、サーバー情報が想定どおり変わったか確認します。

継続的に更新する場合はサブスクリプション情報を保持してください。単一サーバー共有リンクだけでは、自動更新されるサブスクリプションにはなりません。

6. サブスクリプション更新の仕組み・機密情報・確認手順

以下は明らかな説明用のURLです。token=xxxxは認証パラメータの位置を示すもので、実際の認証情報ではありません。サーバーはリクエストを受け取ると、エンコードされたサーバー一覧や、クライアントが認識できる別のサブスクリプション内容を返す場合があります。HTTPSのURLだけでは、応答の形式は分かりません。

https://example.com/sub?token=xxxx
  1. まず、取得する内容の種類を確認します。サービス提供元に、そのURLがサーバーサブスクリプション用かリモート設定用かを確認してください。ログイン画面、エラーメッセージ、空の内容が返された場合、有効なサーバー一覧として扱うことはできません。
  2. 次に、リクエストが成功しているか確認します。タイムアウトの場合は、現在のネットワークからサブスクリプションのドメインにアクセスできるかを確認してください。HTTP 401や403が返された場合は、認証とリンクの状態を確認します。ブラウザーにページが表示されるだけで、サブスクリプションが有効だと判断しないでください。
  3. 続いて、解析結果を確認します。リクエストが成功してもサーバー情報が表示されない場合、取得内容が現在の読み込み先でサポートされていないか、利用可能な情報が含まれていない可能性があります。サブスクリプションを何度も追加するのではなく、対応する形式を確認してください。
  4. 最後に、接続とルールを確認します。更新に成功しても、すべてのサーバー情報に接続できるとは限りません。まずHomeで選択中のサーバー情報を確認し、次にGlobal Routingを確認してください。Configでは設定済みのルールを使用します。Proxyはプロキシ対象の通信をプロキシポリシーに渡し、Directは直接接続し、Sceneは選択したシーンの設定に従って処理します。サーバー共有リンクだけでは、通信を振り分けるルールは設定されません。

7. リンクの読み込みとサブスクリプション更新に関するよくある質問

ss://をSubscribeのURL欄に貼り付けても、更新できないのはなぜですか?

ss://は単一のサーバー情報を表す形式であり、HTTPリクエストで取得するサブスクリプションURLではありません。誤って登録したサブスクリプションを削除し、Homeに戻ってクリップボードまたはQRコードから元の共有リンクを読み込みます。その後、Shadowsocksの暗号化方式、パスワード、ポートを確認してください。

サブスクリプション更新後、手動で変更した名前やパラメータは保持されますか?

サブスクリプションの情報は、取得した内容に基づいて管理されます。更新時にローカルでの変更が置き換わるかどうかは、更新方法や保持設定によって異なります。パラメータを試す場合は、元の値を控えたうえで別のサーバー情報を使ってください。サブスクリプション内の一時的な変更を、長期的に使う設定の保存先にしないでください。

QRコードは読み取れますが接続できません。もう一度スキャンすべきですか?

まず、読み込まれたサーバー情報が完全か確認してください。特にWebSocketのPath、Host、TLSのSNIを確認します。テキストが途中で切れていなければ、再スキャンしてもサーバー側のパラメータは変わりません。次に、サーバーの稼働状況と選択中のサーバー情報を確認してください。解決しない場合はトラブル診断をご覧ください。

サーバーリンクを追加したら、DOMAIN-SUFFIXやFINALも設定する必要がありますか?

サーバー情報は接続先を定義し、ルールはリクエストの経路を定義します。それぞれ役割が異なります。Global Routing → Configを使用する場合は、現在の設定にあるルールの順序とポリシーの接続先を確認してください。DOMAIN-SUFFIXはドメインの末尾に一致するルールで、FINALはそれまでに一致しなかったリクエストを処理します。サーバー情報を読み込んだだけでは、これらのルールは設定されません。

App Storeでダウンロード