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

共有リンクは1台分の接続情報、サブスクリプションURLは定期更新できる設定一覧です。4種類の形式とShadowrocketへの取り込み方法を解説します。

この記事の概要

まずリンクの先頭部分を見て、単体の設定かサブスクリプションかを見分けます。次にプロトコルごとに認証情報、サーバーアドレス、ポート、通信パラメータを確認します。利用するサービスの設定情報をすでに持っていて、Shadowrocketへの取り込みを予定している方向けの記事です。読み終えると、テキストを単体設定として取り込むか、Subscribeとして保存するかを判断でき、コピー時の欠落やパラメータ不足にも対処できます。以下の設定例は構文説明用の架空の値であり、接続には使用できません。

共有リンクとサブスクリプションURL:取り込む対象を見分ける

ss://、vmess://、vless://、trojan://では、コロンより前の部分をschemeと呼びます。リンクの形式を示すもので、後続のテキストをインポート機能がどう解釈するかを決めます。サービスが利用可能であること、認証情報が有効であること、回線品質を示すものではありません。共有リンクには通常、1台のサーバーに接続するためのパラメータが含まれ、取り込むと1件の設定になります。

サブスクリプションURLは通常、HTTPS形式のアドレスで、アクセスすると設定一覧が返されます。ShadowrocketにURLを保存すると、再度アクセスして一覧を更新できます。設定が複数含まれるとは限らず、同じプロトコルで統一されているとも限りません。「中身が1件だけ」という理由だけでサブスクリプションではないとは判断できません。

見分けるポイント単体の共有リンクサブスクリプションURL
一般的な先頭部分ss://、vmess://、vless://、trojan://https://。サービス提供元の案内も確認してください
設定の取得元パラメータがリンクに直接含まれるネットワーク経由で設定一覧を取得する
後からの変更元のリンク自体は新しいパラメータに変わらない更新するとサービス提供元が変更した一覧を取得できる
機密情報パスワード、UUID、アドレス、接続パラメータ一覧全体にアクセスできるtokenが含まれる場合がある

たとえば、https://example.com/sub?token=xxxxはサブスクリプションURLの形式を示す例にすぎません。一般のWebページ、アカウント管理ページ、サブスクリプションURLは、いずれもHTTPSで始まることがあります。任意のWebページのURLをSubscribeに貼り付けても、設定が生成されるわけではありません。利用中のサービス提供元から明示的に案内されたサブスクリプションURLを使用してください。本サイトでは接続先やサブスクリプションを提供・販売・推奨していません。

ss://:ユーザー情報のエンコードとリンク全体のエンコードを見分ける

ss://はShadowsocksのリンクです。一般的なSIP002形式では、暗号化方式とパスワードをエンコードし、サーバーアドレスとポートはそのまま記述します。下の例では、YWVzLTEyOC1nY206dGVzdAをデコードするとaes-128-gcm:testになります。コロンの左側がmethod、右側がpasswordです。

ss://[email protected]:8388#Example%20SS

method:password@host:port全体をBase64でエンコードした旧形式のリンクが使われている場合もあります。そのため、「@が見当たらない」だけでリンクが間違っているとは限りません。まずインポート機能で解析し、結果を確認してください。見た目を整えるために@、コロン、スラッシュを手作業で追加しないでください。pluginパラメータを含むリンクには、エンコードされた追加設定が含まれる場合があります。疑問符より前だけを残すのは避けてください。

vmess://:JSONに戻して各フィールドを確認する

一般的なVMess共有リンクは、vmess://に続けてBase64エンコードしたJSONオブジェクトを記述します。以下に示すのはデコード後の内容であり、そのまま貼り付けて取り込める完全な共有リンクではありません。schemeの直後に生のJSONを連結しないでください。また、この例を実際のアカウント設定として使わないでください。

{
  "v": "2",
  "ps": "Example VMess",
  "add": "server.example.invalid",
  "port": "443",
  "id": "11111111-1111-4111-8111-111111111111",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "edge.example.invalid",
  "path": "/example",
  "tls": "tls",
  "sni": "edge.example.invalid"
}

addとportは実際の接続先、idは識別情報、netは通信方式を示します。例ではWebSocketを使用するため、hostとpathが含まれています。TLSを有効にする場合は、tlsとsniも確認してください。ここでのvは共有リンク形式のフィールドであり、Shadowrocketのアプリバージョンではありません。

  1. 完全なvmess://リンクを取り込み、アドレス、ポート、UUIDが含まれていることを確認します。
  2. 通信方式を確認します。サーバー側がWebSocketを要求している場合、設定を「簡単にする」ために通常のTCPへ変更しないでください。
  3. WebSocket Host、パス、TLS Server Nameをそれぞれ確認してください。役割は異なり、値が同じとは限りません。
  4. 取り込み後にフィールドが欠けている場合は、利用中のサービス提供元に元のパラメータを確認してください。ポートを変えたり、検証を無効にしたりして推測しないでください。

共有リンクの形式やパラメータ名には違いがあり、リンクを認識できても、すべての拡張フィールドが正しく割り当てられるとは限りません。特に通信方式、TLS、認証情報は、保存前に一つずつ確認してください。Base64テキストの改行、末尾の文字の欠落、チャットアプリによる句読点の置き換えなどで、JSONを正しく復元できなくなることがあります。

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

VLESSとTrojanの共有リンクは通常、一般的なURLに近い形式です。@より前にユーザー情報、後ろにサーバーがあり、疑問符の後に接続オプション、#の後に備考が続きます。見た目は似ていますが、認証情報は互換ではありません。VLESSは通常UUID、Trojanはパスワードを使用します。

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.invalid&path=%2Fexample&sni=edge.example.invalid#Example%20VLESS

trojan://[email protected]:443?security=tls&type=tcp&sni=edge.example.invalid#Example%20Trojan
フィールド意味と確認方法
encryption=noneVLESSのプロトコルパラメータです。外側のTLSが無効であることを示すものではありません。
security=tlsTLSを使用する設定例です。Server Nameと証明書の検証も確認してください。
type=ws / type=tcp通信方式を示します。サーバー側の設定と一致させてください。
hostとpathWebSocketのHostとパスです。%2Fexampleはデコードすると/exampleになります。
sniTLS Server Nameです。接続先が特定のアドレスだからといって、機械的に同じ値へ置き換えないでください。
#以降のテキスト通常は表示名であり、認証方式や通信方式を決めるものではありません。

パスワードや備考に@、#、&などの予約文字が含まれる場合は、位置に応じて正しくパーセントエンコードしてください。たとえば、ユーザー情報内の@は%40と表せます。リンク全体を何度もエンコードまたはデコードしないでください。パスワードに含まれる文字が区切り文字として誤認されることがあります。

4種類
この記事で解説するscheme:ss / vmess / vless / trojan
443
この記事のTLS例で使うポートです。すべての設定で固定されているわけではありません。
%2F
URL内のスラッシュ / を表すパーセントエンコード

まとめ:schemeだけで設定全体を推測せず、各パラメータを確認する

vless://やtrojan://を見ても、通信方式、TLS Server Name、サーバーポートの確認が必要です。例で443が使われているからといって、自分の設定も一律に443へ変更しないでください。

Shadowrocketへの取り込み手順:単体設定とSubscribeを分けて操作する

以下ではiPhone / iPadでの操作手順を説明します。利用中のサービス提供元から完全なリンクをコピーし、説明文、引用符、末尾の句点が混ざっていないことを確認してください。ss://、vmess://、vless://、trojan://は単体設定として取り込みます。HTTPSのサブスクリプションURLはSubscribeとして保存し、特定のプロキシプロトコルを手動で選択しないでください。

  1. 単体設定を取り込む:共有リンク全体をコピーしてShadowrocketを開き、クリップボードからの取り込み案内が表示されたら確定します。ペーストの許可を求められた場合は、アプリがリンクを取得できるよう、今回の読み取りを許可してください。
  2. 案内が表示されない場合:Homeで右上の+をタップしてAdd Serverを開き、画面に表示されるURLからの取り込み機能を使います。手動入力する場合は、Typeで該当するプロトコルを選び、元の設定を確認しながら各項目を入力してください。
  3. サブスクリプションを取り込む:Home → + → TypeでSubscribeを選び、URLにサブスクリプションURLを入力します。見分けやすい備考を設定して保存し、サブスクリプションを更新します。
  4. 保存後の確認:Homeに戻り、単体設定またはサブスクリプショングループが表示されていることを確認します。項目を開いてアドレス、ポート、認証情報、通信パラメータを照合してください。表示名だけで正しいかどうかを判断しないでください。
  5. 更新対象を区別する:Subscribeを更新すると、リモートの一覧が再取得されます。個別に保存した単体設定は、サブスクリプションを更新しても新しいパスワードやサーバーアドレスに自動で更新されません。

QRコードはテキストを格納する方法にすぎず、内容が単体設定かサブスクリプションかを決めるものではありません。読み取り前後にデコードされた内容のschemeを確認してください。QRコードにアカウントのWebページのURLが含まれている場合、サーバー設定としては使えません。初回接続時にシステムからVPN構成の追加許可を求められたら、操作中のアプリがShadowrocketであることを確認してから許可してください。

取り込み後に接続できない場合:Global Routingでルールと接続を切り分ける

「Homeに表示された」ことは設定が保存された証拠であり、認証、TLS、接続先へのアクセスが正常であることを示すものではありません。確認するサーバーを選択してConnectivity Testを実行し、実際のWebページへのリクエスト結果も確認してください。テストで一度応答があっても、すべてのアプリ、ドメイン、通信方式で正常に動作するとは限りません。

Global Routing → Config

推奨

現在のConfigのルールに従って通信を振り分けます。ルールに一致しない通信の行き先はFINALなどのフォールバックルールで決まり、すべてが標準で直接接続されるわけではありません。ルールと選択中のサーバーを確認してから、この設定に戻し、通常利用してください。

適した用途:ルールを確認し、接続先に応じて通信を振り分ける日常設定

Global Routing → Proxy

クライアントの処理対象となる通信をプロキシ経由にします。Configの振り分けが原因かを一時的に切り分ける際に使用できます。切り替えても失敗する場合は、認証情報、サーバー、通信方式、TLSのパラメータを引き続き確認してください。

適した用途:ルールの影響を短時間で確認し、完了後に元の設定へ戻す

Global Routing → Direct

クライアントの処理対象となる通信を直接接続します。この状態でWebページが開いても、取り込んだサーバーに接続できる証拠にはなりません。共有リンクを確認する際、直接接続の結果をプロキシのテスト結果と混同しないでください。

適した用途:基本ネットワークの状態確認。サーバーの認証確認には使えません

設定は一度に1項目だけ変更し、変更前後の状態を記録してください。たとえば、「Configでは特定のドメインに接続できないが、Proxyに切り替えるとアクセスできる」場合、そのドメインに適用されるルールを確認します。「どちらの設定でも失敗する」場合は、接続パラメータ、基本ネットワーク、接続先サービスの問題を切り分けます。TLS検証エラーが発生したら、Server Name、証明書の有効性、システム時刻を確認してください。通常の対処として検証を無効にするのは避けてください。

よくある問題:リンクの欠落、二重登録、更新内容の違い

貼り付けると形式エラーになります。プロトコルに対応していないのでしょうか?

まず、vmess://が欠けているなど、先頭部分が完全か確認してください。次に末尾に日本語の句点や改行が混ざっていないかを確認します。元の配布元からリンク全体をコピーし直してください。チャット画面に見えている1行だけをコピーしないでください。形式エラーが出た場合は、まずテキストが欠けていないか確認しましょう。プロトコルが使えないとは限りません。

サブスクリプションを更新したのに、手動で追加した設定のパスワードが古いままなのはなぜですか?

サブスクリプショングループと個別の設定は別の項目です。まずHomeでどのグループを表示しているか確認し、サブスクリプションの更新結果を確認してください。手動で追加した設定は、利用中のサービス提供元から新しいパラメータを入手して個別に編集するか、新しい単体リンクを取り込み直す必要があります。

サーバー名とアドレスが表示されているのに、接続できないのはなぜですか?

該当項目の編集画面を開き、ポート、パスワードまたはUUID、通信方式、TLS Server Name、WebSocket Host、パスを順に確認してください。名前は備考にすぎません。アドレスが正しくてもパスが合わないと、ハンドシェイクに失敗することがあります。確認後にConnectivity Testを実行し、実際のアクセスもテストしてください。

完全なリンクを公開の掲示板に投稿して、確認してもらってもよいですか?

完全なリンク、QRコード、サブスクリプションtokenを公開しないでください。問い合わせ時はscheme、通信方式、認証情報を伏せたエラー内容、再現手順を伝えれば十分です。認証情報を公開してしまった場合は、利用中のサービス提供元が用意するアカウント管理方法でリセットまたは無効化し、ローカルの設定も更新してください。

設定を整理するときは、現在使える項目を残したまま新しく取り込んだ設定を検証し、確認後に重複した項目を削除してください。同じ名前でも設定が異なる場合があります。また、同じサーバーアドレスでもポート、アカウント、通信パラメータが異なることがあります。重複かどうかは備考の名前だけでなく、設定全体を比較して判断してください。

Shadowrocketを全プラットフォーム向けにダウンロード