クライアントレビュー · Clash 技術ブログ

iOS で Stash、Shadowrocket、Surge を選ぶには?

三つのアプリはいずれもプロキシルールを扱えますが、適する利用者は異なります。サブスクリプションを読み込むだけか、ルールを頻繁に変更するか、スクリプトによる自動化が必要かによって、Shadowrocket、Stash、Surge のどれを選ぶべきかが決まります。

  • iOS
  • Stash
  • Shadowrocket
  • Surge
目次

まず iPhone で実際に行いたいことに合わせて選ぶ

Clash に近い形式の設定を引き続き使いたい場合は Stash、ノードのインポートと基本的な振り分けだけが必要なら Shadowrocket を検討できます。リクエスト、スクリプト、モジュールを日常的にデバッグする場合に、Surge を検討してください。

設定の互換性、ルール編集、LAN 共有、購入方法、移行コストも比較する必要があります。三つのアプリケーションはいずれもプロキシとして機能しますが、使い方は同じではありません。

用途別の推奨

主な用途優先候補適さないケース
Clash 形式のポリシーグループとルールを引き続き使うStash単一ノードだけを使い、ルールをまったく管理しない場合は機能過多に感じる可能性がある
一般的なノードのインポート、基本的な振り分け、価格を重視ShadowrocketSurge の完全なモジュールワークフローやチームでのデバッグが必要な場合は、統一性に欠ける
ネットワークのデバッグ、スクリプト、モジュール、MITM を日常的に使用するSurgeサブスクリプションの更新とノードの切り替えだけが目的なら、コストと学習量が大きすぎる

「Clash 対応」と記載されていても、元の設定をそのままインポートできるとは限りません

Stash は、Clash Premium に近い機能を Apple プラットフォームへ提供する製品と公式に位置付けられています。そのため、proxy-groups、rules、Rule Provider をすでに使用している場合は、従来の構成を引き継ぎやすい傾向があります。ただし、実際のインポート結果は確認してください。スクリプト、TUN、DNS、一部の Mihomo の新しいフィールドが一対一で対応するとは限りません。

Shadowrocket は独立したルールベースのプロキシツールです。公式 App Store の説明には、ドメイン、CIDR、GeoIP ルール、リモートルールファイル、DNS、スクリプトフィルター、多段転送が記載されていますが、Mihomo のグラフィカルフロントエンドではありません。ノードのインポートに成功しても、以前の Clash のポリシーグループとオーバーライドが同じ構造を維持するとは限りません。

Surge は独自の Profile と Module の仕組みを使用します。Module は Profile より高い優先度でオーバーライドされるため、レビュー可能なローカルパッチの管理に適しています。Clash のサブスクリプションしかなく、ルールを作り直す予定もない場合は、Surge の機能が多いという理由だけで移行コストが最も低いと考えるべきではありません。

日々変更する内容によって、実際の違いが生まれます

最初のインポートはいったん脇へ置き、今後どのページを最も頻繁に開くか考えてください。その答えは、機能一覧よりも、長期利用に適したアプリケーションを明確に示すことがよくあります。

Stash
Clash 形式のポリシーグループ選択、オーバーライド、ルールセットの管理を中心に使う場合に適しています。iOS、tvOS、macOS、visionOS にも対応します。
Shadowrocket
一般的なノードとルールをすばやく追加でき、iPhone、iPad、Mac、Apple TV で使用できます。現在の機能と購入可能な地域は App Store ページで確認してください。
Surge
接続の確認、モジュールの管理、スクリプトの実行、HTTP トラフィックのデバッグに適しています。公式ドキュメントには Module、MITM、スクリプトに関する包括的な体系があります。
Stash の設定ページ。設定ファイルの入口はページ上部にあります
Stash では設定ファイルの管理を設定ページから行います。スクリーンショットは当サイトの Stash 実機チュートリアルから引用しています。バージョンによって入口の名前が異なる場合があります。Stash の画像付きチュートリアルを見る
Shadowrocket のホーム画面。右上のプラスボタンからサブスクリプションまたはノードを追加できます
Shadowrocket はインポート画面へ直接移動できます。スクリーンショットは当サイトの Shadowrocket 実機チュートリアルから引用し、ノード情報は処理済みです。Shadowrocket の画像付きチュートリアルを見る

LAN 内のデバイスへ共有する必要がある場合は、明確なプロキシ入口があるか先に確認する

LAN で共有する方法

アプリケーション確認できる方法選択時の注意点
Stash公式ドキュメントでは、iOS で HTTP プロキシと SOCKS プロキシを提供できることが明記されています。「LAN 接続を許可」を有効にした後、iPhone の LAN IP とポート 7890 を使用しますこれは手動プロキシによる共有です。iPhone が完全な透過ゲートウェイになるわけではありません
ShadowrocketApp Store の説明にはローカルトラフィックの処理と多段転送が記載されていますが、LAN 共有は主要機能として明記されていません現在のバージョンの設定に共有用リスナーが明示されていない場合は、サードパーティーが公開した古いスクリーンショットから推測しないでください
Surge公式の仕組みに関するドキュメントでは、iOS のローカルプロキシサービスで別のデバイスからのリクエストを処理できると説明されています接続先デバイスでは引き続きプロキシを手動入力する必要があります。具体的なリッスンアドレスと権限は、現在の Profile とバージョンに従ってください

どのアプリケーションを使用する場合でも、共有前に iOS の「ローカルネットワーク」権限を許可し、二台のデバイスを同じ Wi-Fi またはインターネット共有へ接続します。まず別のデバイスでテスト用 Web ページを一つ開き、iPhone のリクエスト記録から、想定したポリシーへ実際に入ったことを確認してください。使用しないときはリスナーを無効にし、公衆 Wi-Fi では認証のないプロキシを公開しないでください。

スクリプトと MITM は、明確な用途がある場合に限って有効にする

三つのツールはいずれも、書き換え、スクリプト、HTTPS 復号に関する機能を備えている場合があります。ただし、通常のサブスクリプション接続にルート証明書のインストールは不要です。MITM ではアプリケーションがローカルで証明書を再発行するため、証明書ピンニングを採用する一部の App は接続を拒否します。

Module またはリモートスクリプトをインストールする場合は、まずソースファイルを読み、変更対象のホスト、リクエストヘッダー、レスポンス内容を確認してください。Surge の公式ドキュメントには、Module が Rule、Script、URL Rewrite、MITM の設定をオーバーライドできることが明記されています。これは強力な機能であると同時に、入手元が不明なモジュールをテーマパックのように安易にインポートすべきでない理由でもあります。

購入前に現在の App Store ページを開く

価格、配信地域、ファミリー共有、対応デバイスは変更される場合があります。現在の米国向け App Store ページでは、Shadowrocket は買い切り型の有料アプリケーションとして表示され、プロキシサービスは付属しないと明記されています。Stash と Surge についても、購入アカウントの地域に対応するストアページと公式説明を確認してください。

今後 Apple TV、Mac、家族のデバイスでも使用する場合は、同じ購入でダウンロードできるか、設定をどのように同期するか、スクリプトと証明書も移行されるかを先に確認します。これらを含めた費用が、実際の価格です。

移行時は、サブスクリプション、ルール、実際に必要な設定だけを移す

切り替えを決めても、以前のアプリケーションにあるキャッシュと証明書をすべて移さないでください。まず新しいアプリケーションで最小限の接続を確立し、その後、自分で実際に管理してきた内容だけを一項目ずつ戻します。

移行手順

  • 元のサブスクリプションアドレスと、現在利用できるポリシーグループ名を保存する
  • 自分で作成したルール、モジュール、スクリプトを列挙し、不明なキャッシュはコピーしない
  • 新しいアプリケーションの初回テストでは、サブスクリプション、固定ノード、画面ロック、ネットワーク切り替えだけを検証する
  • 高度なルールは一項目ずつ作り直し、追加するたびに接続を一度確認する
  • 新しいアプリケーションが数日間安定してから、以前の設定と証明書を削除する

参考資料