ss:// vmess:// vless:// trojan:// の共有リンク形式を解説|Subscribeとの違い

4種類の共有リンクの構造とエンコード方式を解説。単体リンクとSubscribeの違い、Shadowrocketへの取り込み方も紹介します。

この記事の概要

この記事は、サービス提供元から接続情報を入手し、取り込み方法を確認したい方向けです。リンクのプレフィックスと内容を確認して、単体のサーバー情報と更新可能なSubscribeを区別し、最後にHomeで取り込み結果を確認します。本文中のドメイン、認証情報、ポートは形式の説明用であり、接続には使用できません。実際のSubscribeやサーバー情報はサービス提供元から入手してください。

共有リンク・Subscribe URL・Configの違い

ss://、vmess://、vless://、trojan://は、接続情報の形式を識別するためのschemeです。一般的な単体の共有リンクには、サーバーアドレスや認証情報、通信パラメーターが含まれています。取り込むと、サーバー情報が1件作成されます。プレフィックスは内容の解釈方法を示すもので、サーバーが現在利用できることや、振り分けルールが設定済みであることを意味しません。

Subscribe URLは通常、HTTPS形式のアドレスです。Shadowrocketがこのアドレスにアクセスすると、サーバー一覧などのSubscribeデータを取得します。複数行の共有リンクが返される場合もあれば、Base64エンコードされた一覧が返される場合もあります。正しく認識されるかどうかは、サービス提供元が出力する形式にも左右されます。URLがhttps://で始まるというだけで、Subscribeと決めつけることはできません。

情報の種類主な内容その後の変更
単体の共有リンク1台のサーバーのプロトコル、アドレス、認証パラメーター通常は再取り込みまたは編集が必要
Subscribe1つのURLから取得するサーバー一覧Subscribeを更新すると一覧を再取得
Configルール、ポリシー、DNSなどの設定内容選択中のConfigと更新方法に応じて管理

たとえばhttps://example.com/sub?token=xxxxはSubscribe URLのダミー例です。クエリパラメーターがアクセス認証情報として使われる場合があるため、パスワードと同様に管理してください。単体のサーバーリンクにDOMAIN-SUFFIX、GEOIP、FINALなどのルールが自動で含まれるわけではありません。これらはConfig側の設定です。

ss://:Shadowsocksの認証情報のエンコード方式

Shadowsocksの共有リンクには、よく使われる形式が2種類あります。従来の形式では「暗号化方式、パスワード、アドレス、ポート」をまとめてBase64エンコードします。SIP002形式では通常、ユーザー情報にあたるmethod:passwordだけをURL-safe Base64でエンコードし、サーバーアドレスとポートは読める形で残します。形式によって構造が異なるため、同じ位置を固定的に分割しないでください。

ss://BASE64URL(method:password)@server.example.com:8388#Office
ss://BASE64(method:[email protected]:8388)#Office

上記のBASE64URL(...)とBASE64(...)は、エンコード方法を示す表記であり、そのまま取り込める文字列ではありません。8388は説明用のポート番号で、既定値ではありません。暗号化方式はサーバー側の設定と一致させてください。名称が似ているという理由で置き換えることはできません。

  • 通常、@以降はサーバーアドレスです。IPv6のリテラルアドレスは角括弧で囲み、その後にポートを指定します。
  • #Officeは備考で、通常は認証に使われません。日本語などの備考はパーセントエンコードされている場合があります。
  • ?plugin=にはプラグインのパラメーターが含まれる場合があります。利用できるかどうかは、プラグインとクライアントの対応状況によります。
  • パスワードにコロン、スラッシュ、特殊文字が含まれる場合は、元のエンコード構造を踏まえて確認してください。コロンごとに機械的に分割することはできません。

Base64はエンコード方式であり、暗号化ではありません。完全な共有リンクを入手した人は、通常、その中の認証情報を復元できます。形式確認のために出所不明のオンラインデコードツールを使うと、クリップボード内にとどめていた認証情報を別の相手に渡すことになります。まずは端末内で確認し、サービス提供元へ問い合わせる際はパスワードとリンク全体を伏せてください。

vmess://:JSONを復元してフィールドを確認

一般的なVMess共有形式では、vmess://の後にBase64エンコードされたJSONが続きます。アドレス、ポート、UUID、通信方式などはJSONのフィールドに含まれ、通常のURLのホスト名やクエリパラメーターとして直接表示されるわけではありません。以下はデコード後の説明用サンプルで、そのまま貼り付けて取り込める共有リンクではありません。

{
  "v": "2",
  "ps": "Example VMess",
  "add": "server.example.com",
  "port": "443",
  "id": "00000000-0000-4000-8000-000000000001",
  "aid": "0",
  "net": "ws",
  "type": "none",
  "host": "edge.example.com",
  "path": "/connect",
  "tls": "tls",
  "sni": "edge.example.com"
}
  • addとportは接続先を示し、idは認証用UUIDです。サンプルのUUIDはダミーです。
  • netがwsの場合は、WebSocketのhostとpathも確認してください。
  • tlsとsniはTLS関連の設定を示します。ポートが443だからといって、TLSが有効とは限りません。
  • aidは従来形式のAlterIdフィールドであり、ポート番号や接続数ではありません。サービス提供元から指定された値を推測で変更しないでください。

サンプルの"v": "2"は共有形式のフィールドで、Shadowrocketのアプリバージョンではありません。情報の提供元によってはフィールドが省略されていたり、エクスポート形式が異なったりします。「名前は認識されるが接続できない」場合は、UUIDだけでなく、取り込み後の通信方式、TLS、パスも確認してください。

vless://とtrojan://:URL形式でも認証方式は異なる

一般的なVLESS共有形式ではUUIDをユーザー情報として使い、Trojanではパスワードを使います。どちらもクエリパラメーターに通信設定やTLS設定を含められます。リンクの見た目が似ていても、プレフィックスを相互に置き換えられるわけではありません。また、すべてのエクスポート形式でパラメーター名が完全に一致するとも限りません。

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

「接続先」と「ハンドシェイク設定」を分けて確認

接続先と認証情報
  • アドレスは実際に接続するサーバーを示します。
  • ポートはサーバー側の待ち受けポートと一致させてください。
  • VLESSではUUID、Trojanではパスワードを確認します。
TLSと通信方式
  • sniはTLSハンドシェイクで使用するサーバー名を指定します。
  • type=wsの場合はHostとパスを確認します。
  • securityなどのパラメーターは、元の接続情報に従って入力してください。

アドレス、SNI、WebSocket Hostが異なる場合もありますが、その組み合わせでサーバーが設定されている場合に限り有効です。各フィールドを一致させるために、独自に変更しないでください。

path=%2Fconnectをデコードすると/connectになります。パスワードに@、#、?が含まれる場合は、正しくパーセントエンコードする必要があります。誤った形式では、パスワードの一部がアドレス、備考、クエリパラメーターとして解釈されることがあります。サービス提供元が発行した完全なリンクを使い、チャットアプリ上で手作業による再構成は避けてください。

VLESSのencryption=noneはプロトコル層のフィールドを示すもので、接続全体が必ず平文になるという意味ではありません。TLSの有無は、別途、通信のセキュリティ設定を確認してください。Trojanは通常TLSを使用します。証明書の検証に失敗した場合は、まず時刻、SNI、証明書の設定を確認し、検証を無効にすることを通常の取り込み手順にしないでください。

Shadowrocketへの取り込み:手元の情報に合った方法を選ぶ

まず、手元にある情報が完全な共有リンク、QRコード、サービス提供元のSubscribe URLのどれかを確認します。共有リンクは特定のサーバーを1件取り込む場合に適しています。サーバー一覧を継続的に同期する場合は、Subscribeとして登録してください。以下ではShadowrocketでの取り込み方法を比較しており、接続先の品質を評価するものではありません。

Type → Subscribe

おすすめ

Subscribe URLを入手済みの場合は、Subscribeとして保存します。以後は同じSubscribeを更新することで一覧を同期でき、サーバー情報を1件ずつコピーし直す必要はありません。

適しているユーザー:Subscribeを利用してサーバー一覧を同期したい方

クリップボードから取り込む

完全なプロトコル共有リンクをコピーすると、Shadowrocketが認識してサーバー情報を作成します。取り込み後、Typeと主要なパラメーターを確認してください。

適しているケース:サーバーを1件だけ追加する、または個別の接続情報を確認する場合

QRコードをスキャン

QRコード内のテキストを読み取り、内容に応じて処理します。QRコードには共有リンクもSubscribe URLも含められます。

適しているケース:別の画面に表示された接続情報を読み取る場合

単体の共有リンクを取り込む手順

  1. サービス提供元から完全なリンクを入手します。コピーする際は、引用符、箇条書き記号、説明文を一緒に選択しないでください。
  2. Shadowrocketを開き、Homeでクリップボードの認識通知に従って追加します。ペーストの許可を求められた場合は、直前に自分でコピーした情報か確認してください。
  3. 認識通知が表示されない場合は、サービス提供元のQRコードをスキャンして取り込むか、Home → +を開いてTypeを選び、元のパラメーターを手動で入力します。
  4. 取り込んだサーバー情報を開き、Type、アドレス、ポート、認証フィールド、TLS、SNI、通信設定を確認します。その後、保存して対象の情報を選択してください。

Subscribe URLを登録する手順

  1. Home → +を開き、TypeでSubscribeを選択します。
  2. 完全なSubscribe URLをURL欄に入力し、必要に応じて備考を追加して保存します。通常のサーバーアドレスとして誤って入力しないでください。
  3. Subscribeの取得が完了したら、HomeでそのSubscribeに含まれるサーバー情報を確認します。変更を同期する場合は、該当するSubscribeを更新してください。
  4. 更新後、現在選択されているサーバー情報を確認します。サービス提供元が既存の情報を削除または置き換えた場合は、選択を変更する必要があります。

まとめ:一覧を同期するならSubscribeで登録

情報の提供元がSubscribe URLの場合は、Subscribeとして保存してください。Subscribeから共有リンクを1件だけコピーして、その単体情報が自動で更新されることを期待しないでください。

取り込み後は、解析・接続・ルールを分けて確認

「取り込み成功」は、テキストがサーバー情報として認識されたことを示すだけです。サーバーに到達できること、認証が通ること、すべてのサイトが想定どおりに振り分けられることを保証するものではありません。原因を段階ごとに切り分け、ルールの動作を共有リンクの誤りと混同したり、1度の接続失敗で複数のフィールドを繰り返し変更したりしないようにしてください。

  1. 解析結果を確認:Typeがリンクのプレフィックスに対応しているか、アドレスの末尾に余分な空白がないか、ポートが欠けていないか、備考が誤って認証フィールドに入力されていないかを確認します。
  2. 接続条件を確認:サービス提供元の情報に沿って、パスワードまたはUUID、TLS、SNI、Host、パスを確認します。タイムアウト、認証エラー、証明書エラーはそれぞれ別の問題です。いずれもポート変更で解決しようとしないでください。
  3. Global Routingを確認:Directは直接接続、Proxyはプロキシ経由の接続、Configは現在の設定ルールに従った処理、Sceneは選択中のシーンの設定に従います。トラブルシューティングでは、現在どの方式を使っているか確認してください。
  4. Configを確認:たとえばDOMAIN-SUFFIX,example.com,DIRECTに一致するリクエストはDIRECTで接続されます。Homeでサーバーを選択していても、このルールの動作は変わりません。

Subscribeの更新とサーバーへの接続は別の処理です。Subscribeの更新に成功しても、個々のサーバーが一時的に利用できないことがあります。サーバーに接続できても、認証情報の期限切れなどでSubscribeを更新できない場合もあります。対処する前に、失敗したのが「一覧の取得」か「一覧内のサーバー情報の利用」かを確認してください。

共有リンクやSubscribeの取り込みでよくある質問

vmess://をコピーしても認識されないのはなぜ?

リンクが完全か、改行、日本語の引用符、末尾の句読点が混入していないか確認してください。Base64部分が1文字欠けるだけでも、JSONを復元できないことがあります。サービス提供元から元のリンクをもう一度コピーするか、提供されたQRコードをスキャンしてください。文字を推測で補わないでください。

QRコードを読み取ったらhttps://で始まりました。違うものを読み取りましたか?

QRコードはテキストを格納するためのものです。サービス提供元がSubscribe URLだと案内している場合は、Home → + → Type → Subscribeを開き、URL欄に保存してください。WebページのURLの場合は用途をサービス提供元に確認し、QRコードの見た目だけで判断しないでください。

単体のリンクでは接続できるのに、Subscribeを更新できないのはなぜ?

まずSubscribeのURLが途中で切れていないか、特にクエスチョンマーク以降のtokenを確認してください。次にSubscribeの認証情報が有効か確認します。サーバーのパスワードでSubscribe tokenを置き換えないでください。通常、この2つは別の認証情報です。

リンク末尾の備考を変更すると接続に影響しますか?

通常、#以降の備考を変更しても表示名が変わるだけです。ただし、編集時に前のクエリパラメーターを誤って削除したり、パスワードの特殊文字を区切り文字に置き換えたりすると、解析に影響します。取り込み後に備考を編集し、元の接続情報はそのまま残してください。

App Storeで正規版を確認