まず「接続パラメータ」と「リストを取得するURL」を区別しましょう。ss://、vmess://、vless://、trojan://は通常、1つの接続に必要な情報を含みます。一方、サブスクリプションURLはリストの取得や更新に使います。ここでは、すでにご自身のサービス設定をお持ちの方向けに、項目やエンコード方式、Shadowrocketでの読み込み先、更新できる範囲を解説します。例は実際の接続には使用できないサンプルデータであり、サービスを提供するものではありません。
まず接頭辞を確認:プロトコルリンクとサブスクリプションURLは別物
Shadowrocketでリンクを受け取ったら、接続そのものを記述したものか、リモートから内容を取得する方法を示すものかを確認します。プロトコルリンクには通常、サーバーアドレス、ポート、認証情報、通信オプションが1つのテキストに含まれます。サブスクリプションURLは通常HTTPSで、アプリがURLにアクセスしてから項目のリストを取得します。どちらもQRコードやクリップボードで共有できるため、スキャンして取得したというだけでは種類を判断できません。
サブスクリプションURLは、次のような形式です。tokenはクエリパラメータ名で、アクセス認証に使われる場合があります。実際のURLのパスやパラメータは、お使いのサービスによって異なります。HTTPSで始まっていても、単なるWebページの場合があります。アプリが対応する形式の内容が返されて初めて、サブスクリプションとして解析できます。
https://example.com/sub?token=xxxx
- プロトコル接頭辞:後続のパラメータを解析する方法を示すもので、サーバーの利用可能性を保証するものではありません。
- QRコード:テキストを格納する手段です。単一のプロトコルリンクも、サブスクリプションURLも格納できます。
- サブスクリプションの応答:複数のリンクが含まれ、Base64でエンコードされている場合もあります。すべてのサブスクリプションが同じ形式で返されるとは限りません。
- Config:設定ファイルを管理する項目で、Homeのサーバー項目とは別のものです。ルールを含む設定ファイルも、サーバーのサブスクリプションと同じものではありません。
ss://:暗号化方式を確認してから、パスワードとアドレスを確認
ss://はShadowsocksを示します。一般的なSIP002形式では、「暗号化方式:パスワード」をエンコードして@の前に置き、その後にサーバーアドレスとポートを記述します。次のサンプルリンクでは、認証情報の部分をデコードするとaes-128-gcm:passwordとなり、サーバーはサンプル用ドメイン、ポートは8388です。
ss://[email protected]:8388#SS-demo
| 位置 | 意味 | 確認方法 |
|---|---|---|
ss:// | Shadowsocks共有形式の識別子 | 読み込み後にTypeを確認 |
@より前 | 暗号化方式とパスワードのエンコード済みデータ | 方式とパスワードがサーバー側の設定と一致していること |
edge.example.com:8388 | サーバーアドレスとポート | ポートをアドレス欄に入力しない |
#SS-demo | 表示名 | 表示名を変更しても、通常は接続パラメータに影響しません |
過去の形式には、さらに多くの内容をまとめてBase64エンコードするものもあります。明文の@があるかどうかだけで判別しないでください。プラグインを使うリンクには、pluginクエリパラメータが含まれる場合もあります。コピー時にパラメータが欠けると、サーバー、ポート、パスワードが揃っていても接続情報は完全とは限りません。
vmess://:一般的なペイロードはエンコード済みJSON
vmess://はVMessを示します。一般的な共有形式では、接頭辞の後にBase64エンコードされたJSONが続き、「ユーザー名@ホスト」の形式にはなりません。そのため、サーバーアドレスが平文で見えなくても、リンクが空とは限りません。以下はデコード後のサンプルペイロードで、読み込みに使える完全なリンクではありません。
{
"v": "2",
"ps": "VMess-demo",
"add": "edge.example.com",
"port": "443",
"id": "00000000-0000-4000-8000-000000000000",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "edge.example.com",
"path": "/demo",
"tls": "tls",
"sni": "edge.example.com"
}
add、port、idは、それぞれサーバー、ポート、ユーザーUUIDを格納します。UUIDは表示名ではありません。psは表示名、vは共有ペイロードの形式を示す項目で、Shadowrocketのアプリバージョンではありません。net=wsはWebSocket通信を示します。hostとpathはその通信に関するパラメータなので、任意に削除しないでください。tlsとsniはTLSに関係します。サンプルではアドレス、Host、SNIが同じですが、実際のサービスでは個別に指定される場合があります。aidは旧形式との互換性に関する項目です。トラブルシューティングで値を推測して変更せず、実際のサービス設定を確認してください。
読み込みに成功したことが示すのは、アプリがデータを認識したということだけです。ネットワークに接続できること、認証情報が有効であること、TLSパラメータが一致していることを意味しません。「リストには項目があるのに接続できない」場合は、同じリンクを何度も読み込まず、項目の編集画面で各設定を確認してください。
vless://とtrojan://:似た形式でも認証項目は異なる
どちらのリンクも「認証情報@サーバー:ポート」という形式が一般的で、クエリパラメータで通信設定を指定します。VLESSの認証情報は通常UUID、Trojanではパスワードです。以下の2つの例は構造の確認用で、サンプルのUUID、パスワード、ドメインはいずれも実際のサービスには対応していません。
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.com&path=%2Fdemo&sni=edge.example.com#VLESS-demo
trojan://[email protected]:443?security=tls&sni=edge.example.com#Trojan-demo
| 項目 | VLESS | Trojan |
|---|---|---|
@より前 | 通常はUUID | パスワード |
security=tls | TLSを使用することを示す一般的なパラメータ | 一般的な共有形式で使われるTLSパラメータ |
type=ws | 例ではWebSocketを使用 | 追加の通信方式を使うかどうかは、実際のリンクで確認 |
sni | TLSで使用するサーバー名 | TLSで使用するサーバー名 |
#より後 | 表示名 | 表示名 |
encryption=noneを「接続全体に保護がない」と解釈しないでください。これはVLESS自体の項目に関するもので、外側でTLSを使用するかどうかはセキュリティ設定を別途確認します。反対に、ポートが443だからといってTLSが正しく有効になっているとは限りません。ポートは接続先の一要素にすぎません。
クエリパラメータの%2Fは、スラッシュをパーセントエンコードしたものです。パスワード、表示名、パスに含まれる特殊文字もエンコードされる場合があります。リンク全体を何度もデコードしてからコピーしないでください。パスワードに含まれる@、#、&が、構造を区切る文字として誤認されるおそれがあります。拡張パラメータの仕様は共有形式によって異なるため、読み込み後もアプリに保存された項目を確認してください。
Shadowrocketで読み込み先と更新方法を選ぶ
まず手元のデータの種類を確認してから、読み込み先を選びます。Homeはサーバーやサブスクリプション項目の管理、Configは設定ファイル、Settingsはアプリの設定に使います。HTTPSのURLだからといってConfigにルール設定として入力したり、単一のプロトコルリンクを自動更新できるサブスクリプションURLとして扱ったりしないでください。
Subscribe:既存のサブスクリプションを管理
リスト更新リストを継続的に同期する既存のサブスクリプションは、Homeで「+」をタップしてAdd Serverを開き、TypeをSubscribeに設定します。サブスクリプションURLをすべて入力して保存してください。以降はサブスクリプションを更新すると、リモートからリストを再取得できます。
適しているケース:サブスクリプションURLをすでに持っていて、リストの変更を同期したい
クリップボードまたはQRコード:単一のパラメータを読み込む
完全なプロトコルリンクをコピーしてアプリに戻ると、クリップボードの内容を認識する案内から追加できます。HomeのQRコード読み取り機能も利用できます。システムからペーストの許可を求められた場合は、今回の読み取りを許可してください。読み込み後はTypeとサーバー項目を確認します。
適しているケース:完全な共有リンク、または対応するQRコードを持っている
Add Server:項目を手動で入力
Homeで「+」をタップしてAdd Serverを開き、該当するTypeを選択します。手元のパラメータに従ってアドレス、ポート、認証情報を入力し、必要なTLSと通信オプションを設定してください。手動で追加しても、リモートのサブスクリプションとは自動で連携されません。
適しているケース:項目の一覧だけがある、または読み込み時に不足したパラメータを確認したい
結論:リストを更新するには、サブスクリプション連携を維持
単一のプロトコルリンクを使う場合、パラメータが変更されたら通常はリンクを再読み込みするか、項目を編集します。サブスクリプションURLを使う場合は、該当するサブスクリプションを更新してください。古いリンクを貼り直しても、リモートから新しいパラメータは取得できません。
- 読み込み前:ご自身がすでに利用している設定であることを確認し、復元できるよう元の記録を保管します。まだ使える項目は先に削除しないでください。
- 保存後:Type、サーバー、ポート、表示名を確認します。名前だけで正しく読み込めたと判断しないでください。
- テスト前:TLS、SNI、Host、Pathなど必要な項目を確認します。表示項目はプロトコルによって異なり、すべての接続で全項目を入力する必要はありません。
- 更新後:サブスクリプショングループ内の項目が変わったか確認します。リモート更新で手動変更した項目が置き換わる場合があるため、重要な変更は別途記録してください。
よくある質問:認識・更新・接続を個別に確認
トラブルシューティングでは、問題を3段階に分けて確認します。テキストを解析できるか、サブスクリプションから内容を取得できるか、保存後の接続が使えるかです。Global Routingはトラフィックのルーティング方法を決めるもので、不完全な共有テキストを修復する機能ではありません。ProxyやConfigを切り替えても、パスワードが欠けたリンクが完全になるわけではありません。
リンクをコピーしても、追加の案内が表示されないのはなぜですか?
テキストがss://、vmess://、vless://、trojan://のいずれかで始まっているか確認します。チャットアプリが付けた説明文やコードフェンスを取り除き、リンク全体をコピーし直してください。今回のペーストをShadowrocketが読み取れるよう、システムの許可も確認します。項目の一覧しかない場合は、Home →「+」→ Add Serverから手動で入力してください。
HTTPSのURLをブラウザで開けるのに、サブスクリプションとして使えないのはなぜですか?
ログイン画面、説明ページ、エラーページが表示されても、リストを取得できたことにはなりません。URLが完全か、特に「?」以降のtokenパラメータが含まれているか確認し、URLの用途はご自身が利用しているサービスの提供元に問い合わせてください。認証情報を含むURLを第三者のWebサイトで検査しないでください。
サブスクリプションを更新したのに、手動で追加した項目が変わらないのはなぜですか?
手動で追加した項目は、該当するサブスクリプションに含まれているとは限りません。Homeに戻り、項目のグループと取得元を確認してから、該当するサブスクリプションを更新してください。単一のプロトコルリンクから追加した項目は、新しいリンクを取得して再度読み込むか、新しいパラメータに合わせて編集する必要があります。
ポートが443なのに接続できないのはなぜですか?
項目の編集画面で、アドレス、ポート、認証情報に加えて、TLS、SNI、通信パラメータを確認してください。443はポート番号にすぎず、これらの設定を自動で補うものではありません。証明書に問題がある場合は、サーバー名と証明書の設定を確認してください。一般的な対処法として証明書検証を無効にしないでください。
トラブルシューティング用のスクリーンショットを共有するとき、何を隠せばよいですか?
パスワード、UUID、完全なサブスクリプションURL、token、QRコードを隠し、ほかの認証情報も見えないようにしてください。判断に必要なType、ポート、通信方式、エラーメッセージは残せます。認証情報をすでに公開してしまった場合は、利用中のサービスの手順に従って該当する情報を変更してください。
項目を確認した後は、サーバーへの接続性とルールの動作を分けて確認します。接続パラメータは接続方法を決め、Config内のルールはリクエストごとにどのポリシーを適用するかを決めます。サブスクリプションの更新成功、接続テストの成功、リクエストの意図した振り分けは、それぞれ個別に確認が必要です。