Chute Dashboard

Chute Dashboardは無料のmacOSアプリで、動作中のChute — Wi-FiまたはUSBケーブル経由のChute iOS、ネットワークまたは adb 経由のChute Android、あるいは同じMac上のChute Mac — に接続し、そのインスタンスが何をしているかを表示します: すべての接続とそれを決めたルールとポリシー、HTTPS復号の対象ホストでは復号済みのリクエストとレスポンス、DNSの応答、UDPセッション。見ながらトラフィックを変えることもできます: MitMホストリストと、書き換え・モックレスポンスの各ルールファミリーをその場で編集できます。

これはWebコンソールではありません。コンソールはエンジン自身が提供しブラウザで開きますが、Dashboardは独立したアプリで、エンジンのバイナリ制御チャネルを通じて対話します。そのためデバイス側に必要なのは external-http-controller ではなく external-controller-access です。両者は重なる部分もあれば、それぞれにしかないものもあります — Dashboardが届かないものを参照してください。エンジンと同じMac上で動かすDashboardだけは例外で、エンジンが常に開いているローカルソケットに接続するため、設定は一切要りません。

Dashboardのインターフェースは本マニュアルと同じ言語にローカライズされています(アラビア語を除く。アラビア語のシステムでは英語で表示されます)。

Dashboardの接続を許可する

デバイスが許可するまで、何も待ち受けません。

Chute iOS — 設定エディターで 外部コントローラー を開きます:

  1. 外部コントローラーアクセス をオンにします — 脚注に Chute Dashboard/Chute CLIの接続を許可 とあるスイッチです。
  2. ポート と パスワード を設定します。パスワードは空にできず、自分で決めたものでなければなりません。ネットワークから到達できるリスナーは、空またはデフォルトのパスワードでは起動を拒否します。
  3. 必要でない限りWi-Fiからのアクセスを許可 はオフのままにします。オフがデフォルトで、リスナーはスマートフォン自身の中にとどまります — USBケーブルなら届きますが、Wi-Fi上の他のデバイスからは届きません。オンにすると、そのネットワーク上でパスワードを知っている誰もが、この実行が見たすべてを読めるようになります。
  4. 保存して、トンネルを開始(または再起動)します。コントロールパネルに 外部アクセスポート: <ポート> が表示されます — この行がリスナーが立ち上がった確認です。

Chute Mac — 同じ 3 つの値は [General] にあります:

[General]
external-controller-access = password@127.0.0.1:6170

127.0.0.1 は今いるMacだけに限定します。LANのアドレスや 0.0.0.0 にすると他のマシンにも開きます。設定ウィンドウの「一般」セクションに同じキーのフィールドがあります。同じMacで動かすDashboardには、このキーはまったく要りません — 下の ローカルマシンに接続 を参照してください。

Chute Android — 設定エディターで 外部コントローラー を開き、同じ値を 外部アクセス に書きます:

  • USBで接続 なら password@127.0.0.1:6170 で足ります: Dashboardがそのポートに adb forward を実行してケーブル経由で接続するので、リスナーは端末の中に留めておけます。Macに adb が必要です — Dashboardは ANDROID_HOME と ANDROID_SDK_ROOT の下、PATH 上、/usr/local/bin と /opt/homebrew/bin、そして ~/Library/Android/sdk を探します — また、端末でUSBデバッグをオンにし、このMacを許可しておく必要があります。
  • password@0.0.0.0:6170 にすると、リモートマシンに接続 用にネットワークへ開きます。iOSと同じく、ネットワークから到達できるリスナーは、空またはデフォルトのパスワードでは起動を拒否します。

保存してから、VPNを起動(または再起動)します。するとコントロールパネルの 外部アクセス スイッチに待ち受けアドレスが表示され、VPNの動作中はこのスイッチでリスナーをオフにしたりオンに戻したりできます。

接続する

Dashboardは新規ダッシュボード ウィンドウで開きます。接続ごとに 1 つのウィンドウを持つので、複数のデバイスを同時に開けます。入り方は 3 つ:

フィールド どんなとき
ローカルマシンに接続 なし 同じMac上のChute Mac。Dashboardはエンジンのローカルソケットと直接やり取りします — ホストもポートもパスワードも、external-controller-access の行も要りません。
リモートマシンに接続 ホスト、ポート、パスワード デバイスのWi-Fiアドレス(iPhone: 設定 → Wi-Fi → ⓘ)、または別のMacのアドレス。スマートフォン側でWi-Fiからのアクセスを許可 がオンである必要があります。
USBで接続 デバイス、ポート、パスワード iPhoneがケーブルでこのMacに接続され、このMacを信頼していること。または adb から見えるAndroidデバイス。デバイス: で選び、設定したのと同じポートを入力します — ケーブルのチャネルはDashboardが自分で見つけ、Androidでは adb のポートフォワードも自分で実行します。Wi-Fiからのアクセスを許可 がオフでも動作し、端末がWi-Fiに接続している必要すらないので、セルラー回線のトラフィックも見えます。

リモートマシンが記憶されるのは、保存したときだけです: 保存 でホスト、ポート、パスワードを自分で付けた名前のもとに保存し、次回 保存済みのリモートマシン タブに並ぶのはその名前です。

パスワードが違うとウィンドウに パスワードが一致しません と表示されます。USBでもネットワーク経由でも同じです。デバイスに届かない場合もウィンドウは開き、接続中… と表示されます: USBでつないだiPhoneでは、Dashboardが再試行を続ける間この表示のままで、スマートフォンが応答するか 閉じる をクリックするまで続きます。それ以外の接続は最後に 接続が切断されました になります。接続後にデバイスがいなくなると — トンネルが止まった、ケーブルが抜かれた、スマートフォンがネットワークを変えた — Dashboardウィンドウは 接続が切断されました と報告し 再接続 を提示します。

ウィンドウ

ツールバーで 5 つのビュー — 最近、アクティブ、DNS、UDP、MitM — を切り替えます。右端の フィルター フィールドはホストパターンの検索ボックスで、フィルターバーと共有されています。フィルターバー自体は最近とアクティブにだけ現れ、DNS、UDP、MitMでは隠れています。左下のパネルはアップロードとダウンロードのリアルタイム速度で、クリックするとグラフが展開します。

最近 と アクティブ のビューにはそれぞれ 再読み込み ボタンがあり、最近にはリストを空にする クリア もあります。その隣に、動作中のエンジン に作用する 2 つのスイッチがあり、各アプリのスイッチとまったく同じ働きをします:

  • トラフィックキャプチャを有効化 → トラフィックキャプチャを無効化: リクエストとレスポンスのボディの取得(replica 設定)をオンにします。オフでも行は経路情報付きで表示されますが、データのタブは選択できません。デバイスが現在の設定を報告してくるまでは、ボタンの表示は トラフィックキャプチャ です。
  • MitM を有効化(N ルール) → MitM を無効化(N ルール): MitMホストリストにあるN個のホストのHTTPS復号をオンにします。リストが空のときは件数が省かれます。デバイスに信頼されたCAと少なくとも 1 つのホストが無いうちは、このスイッチは実質的に何もしません — HTTPS復号のページを参照してください。

どちらのスイッチも設定ファイルは書き換えません。再起動すればファイルの内容に戻ります。

サイドバーは接続をクライアントごとにまとめます: すべてのクライアント、次にデバイス自身のクライアントの ローカル、このChuteをプロキシとして使う他のマシンの リモート。1 つを選ぶと、すべてのリストがそれに絞られます。デバイスがChute Macのときは、ローカルのクライアントは名前とアイコン付きのアプリケーションで、コンテキストメニューにFinderに表示 があります。

アクティブと最近

アクティブ はいま開いている接続、最近 はデバイスの履歴で、この実行の記録から読み戻され、接続番号の順に並びます — 最新は一番下です。列の見出しをクリックすると、その列で並べ替えられます。両方が同じ列を共有します:

列
ID エンジンの接続番号 — コンソールや各アプリが表示するのと同じ番号
日付、継続時間 いつ始まったか、どれだけ続いているか/続いたか
クライアント プロセス(Chute Mac)、アプリのパッケージ名(Chute Android)、またはローカルアドレス
メソッド、サーバー、ステータス メソッド は接続の種類 — HTTP、HTTPS、SOCK、TCP、UDP のいずれかで、リクエストの動詞ではありません。サーバー は宛先の host:port、ステータス は接続の状態(アクティブ、完了、中断)です
ポリシー ルールが選んだポリシー
アップロード、ダウンロード 各方向のバイト数
フラグ Chuteがその接続に何をしたか — 下の凡例を参照

フラグ 列は、書いたルールが適用されているかを最も手早く知る方法です:

フラグ 意味
M 復号済み(MitM傍受)
H ヘッダーが変更された
B ボディ書き換えのルールかスクリプトがボディを変更した
R 書き換えルールが適用された
K サーバーではなくモックレスポンスルールが応答した

Bはボディの内容が変わったかどうかだけを示します。Chuteがルールと照合するために保持しただけのボディや、内容を変えずにチャンク分割や圧縮をやり直しただけのボディには付きません。

最近は最大 5,000 行を保持します。リスト末尾の さらに読み込む がデバイスから次のページを取得し、リスト自体は数秒ごとに自動更新されます。アクティブのリストが 1 つの制御パケットに収まらないほど長いときは、表の下にエンジンが切り詰めた旨の注記が出ます — その行はデバイス上に存在し、閉じれば最近に現れます。

行を右クリックすると curl コマンドをコピー、選択項目をHARとして書き出す… / CSVとして書き出す…、すべてをHARとして書き出す… / CSVとして書き出す…、<ホスト> でフィルター が使えます。アクティブな行にはさらに 接続を切断 があり、デバイス上でその接続を閉じます。複数行を選択した範囲の中で右クリックすると選択はそのまま残り、選択項目をHARとして書き出す… / CSVとして書き出す… は選択したすべての行を対象にします。1 つの接続に対する項目は、右クリックした行に作用します。さらに 4 つ、そのホストに対するデバイス側のルールに作用する項目があります — いま見ている接続から、それを変えるルールへの最短の道です: MitMルールを追加、MitMを有効化、ヘッダー書き換えを追加、<ホスト> のボディ書き換えを追加。

注意: 1 行は 接続 であって、リクエストではありません。複数のリクエストを運んだ keep-alive 接続も 1 行のままで、取得されたデータにはそれらのメッセージが連続して入っています。表示されるヘッダーはそのうちの 1 つのリクエストのものです。そのため、ブラウザでページを 1 つ開いても、ページのリソース数より少ない行しか生まれません。

フィルターバー

フィルターバーが絞るのは 表示 です。デバイスが何を記録するかは変えません — それにはデバイス側の [Replica] を使います。

コントロール 選択肢
ホスト/URLでフィルター… ホスト、host:port、プロセスやアプリ、ポリシー、ルール、接続の種類に対するテキスト一致 — URLのパスには一致しません
メソッド GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、CONNECT
ステータス 1xx – 5xx
トラフィック アクティブ、完了、中断
種類 JSON、HTML、XML、画像、テキスト、バイナリ — レスポンスのコンテンツタイプから
所要時間 < 100ms、100ms–1s、1s–5s、> 5s
サイズ < 1 KB、1–100 KB、100 KB–1 MB、> 1 MB
MitMのみ 復号された接続のみ
変更済み ルールがヘッダーを変更した接続、またはルールかスクリプトがボディを変更した接続 — H または B。R だけ、K だけの行は通りません。

フィルターをクリア で全件に戻ります。

接続の詳細

行を選択すると、その詳細がリストの下のパネルに開きます。タブは左から:

一般 — リストにあるものを、余裕をもって並べたもの: 接続の種類とステータスコード、アウトバウンドモード、ポリシー、一致したルール、転送量とピーク速度、ローカルとリモートのアドレス、開始時間、SSL/MitMの状態(傍受済み、ヘッダー変更済み、ボディ変更済み、モック済み)、そして 適用されたルール — この接続を変更した書き換え・モックレスポンスルールを、ルール自身の文言で引用したもの。このリストは両端で頭打ちになります: エンジンが 1 接続につき保持するのは最大 16 件、Dashboardが表示するのはそのうち 8 件で、残りは …他 N 件 と添えられます。そのため、チャンクごとに発動するルールがあると他が押し出されます。

タイミング — 接続のセットアップにかかった時間の内訳を、エンジンが測ったまま:

行 計測の始点 → 終点
プロキシ準備時間 クライアントの接続が到着 → Chuteが処理できる状態になる
DNS解決 → 名前が解決される(ルールがアドレスを必要としなかったときは行そのものが出ません)
ルール判定時間 → ルールテーブルが決定する
リモート準備時間 → 選ばれたアウトバウンドが接続され準備完了になる
アクティブ 到着から切断まで、接続の全生存時間

値がゼロの行はゼロと表示されるのではなく省かれます。そのため、ルールがアドレスを必要としなかった接続には DNS解決 の行がそもそもありません。遅いリクエストはたいてい残りのどれか 1 つの行だけが遅く、どの行かがどこを見るべきかを教えてくれます: DNSならDNS セクション、リモート準備ならポリシーやその先のサーバーです。

リクエストヘッダー / レスポンスヘッダー — ヘッダーを表形式で。リクエスト側は クエリパラメータ とCookie、レスポンス側はCookieを分けて表示します。ルールが変更したヘッダーは強調表示されます。選択項目をコピー は選択した行をコピーします。

リクエストデータ / レスポンスデータ — 取得したボディを 16進数、テキスト、JSON(検索付きの展開できるツリー)、画像(フィット / 実際のサイズ)として表示します。ボディが何であっても最初は テキスト で開き、multipart のボディはパートごとに分割されます。bin として書き出す は生のバイト列を保存します。テキスト表示には、Sublime TextやVSCodeがインストールされていれば Sublime Textで開く と VSCodeで開く も出ます。この2つのタブを選択できるのは、取得したデータがあるときだけです: その接続の実行時に記録がオンで、かつホストが [Replica] のフィルターを通過していること。

注意: ボディは取得されたままの姿で表示されます。圧縮されたレスポンス — Content-Encoding: gzip — はここでは展開されないので、そのテキストとJSONの表示はノイズになります。16進数の表示と bin として書き出す でバイト列を取り出し、別の場所で展開してください。デバイスは 2 MiBを超えるボディの引き渡しを拒否し — そのときタブには ボディを読み込めません と表示されます — 16進数の表示は先頭 1 MiBを示します。

DNSとUDP

DNSはデバイスのリゾルバーキャッシュです: 各ドメインとそれが解決されたアドレス、最初に答えたサーバー(Chuteは設定されたすべてのサーバーに同時に問い合わせます — DNS を参照)、TTL、そしてそのレコードの出どころ。最後の列は出どころ — Config、System、Dynamic — であって、DNSのレコードタイプではありません。TTLは最低でも 600 秒として報告されるので、それより短いものも 600 と表示されます。

右クリックで ドメインをコピー、IPをコピー、DNSサーバーをコピー、<ドメイン> でフィルター ができます。動的に解決されたレコードには <ドメイン> のDNSレコードを削除 もあります。下部の DNSキャッシュを消去 はキャッシュそのものを空にします。この 2 つが作用するのはデバイスのキャッシュであって、Dashboardの表示ではありません。

UDPはUDPセッション — ホスト、サーバー、ポリシー、状態 — を一覧します。UDPにボディはありません。

MitMツール

MitMビューはデバイス上の 5 つのルールファミリーを 5 つのパネルで管理します: MitMルール、ヘッダー書き換え、ボディ書き換え、モックレスポンス、URL書き換え。すべてに共通すること:

  • リストは 動作中のエンジン が持つルールのコピーで、出発点は設定ファイルが宣言した内容です。
  • ルールを追加するとデバイスへ送られ、デバイスは設定行を解析するのと同じように解析します。解析できない行は保存されず、エラーとして拒否されます。MitMルール のホストだけは例外です — これはルール行ではなくパターンなので、空でない文字列はすべて入力したまま追加されます。
  • 変更は動作中のエンジンにだけ存在します。設定ファイルには 書き戻されず、リロードや再起動でファイルの内容に戻ります。パネルで効くルールを見つけたら、それを設定に書き込んでください。
  • ルールが適用されているかどうかは、リストの フラグ 列(R、K)と詳細パネルの 適用されたルール に現れます。

MitMルール — 1 ルールにつき 1 つのホストパターン、host[:port][/path]、除外は - 接頭辞: *.google.com、api.example.com:8443、api.example.com/v2/*、-*.apple.com。HTTPS復号ページの hostname キーと同じ文法です。ツールバーのMitMスイッチの数字はこのリストの長さです。

ヘッダー書き換え — フォーム: URL正規表現、リクエスト または レスポンス、追加 / 置換 / 削除 / 置換(正規表現)、ヘッダー名、ヘッダー値。置換(正規表現) では 値の正規表現 も入力し、ヘッダー値の中でそれにマッチした部分が 置換後の値 に置き換わります。設定行はDashboardが組み立てます。文法はヘッダー書き換えのページにあります。

ボディ書き換え — 設定行を 1 行、ファイルに書くとおりに入力します。エンジンが読める書き方ならどれでも構いません: Surgeの http-response url-regex pattern replacement(または http-request)、同じくSurgeの http-response-jq url-regex jq-program(または http-request-jq)、url-regex response regex pattern replacement(または request)、url-regex jsonpath-response jsonpath $.path value(または jsonpath-request)。ボディ書き換えを参照してください。

モックレスポンス — URL正規表現、レスポンスボディ の種類(file(パス。参照… で選択可)、text、base64、または内容の要らない内蔵の1×1透明GIFである tiny-gif)、任意の ステータスコード、任意の レスポンスヘッダー(| で区切った Name: Value)。

注意: file のパスはChuteを動かしているデバイス がリクエスト時に読みます。Dashboardが同じマシンのChute Macに接続しているならMac上のパスに意味がありますが、iPhoneに接続しているなら意味がありません — スマートフォンに /Users/… はありません。リモートのデバイスには text か base64 を選んで内容をルールに含めるか(モックレスポンスを参照)、ファイルをURLで配信してURL書き換えを使ってください。

URL書き換え — URL正規表現、ターゲット、種類: header はリクエストをその場で書き換え(SurgeのMap Remote)、302 と 307 はクライアントをリダイレクトし、reject、reject-200、reject-img、reject-dict、reject-array、reject-tinygif はサーバーに接続せずに応答します。URL書き換えを参照してください。

書き出し

  • HAR — リストの右クリックから: 選択した行またはすべてをHAR 1.2 ファイルとして。ブラウザの開発者ツール(Network → インポート)、Charles、Proxymanで開けます。HTTPリクエストが取得されている行ごとに 1 エントリで、それ以外の行(たとえば素のTCP)は含まれず、ファイルのコメント(comment)に何行省いたかが書かれます。記録がオンだったときはボディも含まれます: Dashboardは先にデバイスからボディを取得し、その間 HARを書き出し中… — キャプチャしたボディをデバイスから取得しています。 — というシートを進捗バーと キャンセル 付きで表示します。キャンセル で書き出しは中止されます。512 KiBを超えるボディはサイズだけが記録され、1 回の書き出しに含まれるボディは最大 64 MiBです。
  • CSV — 表計算ソフト向けの、決まった列の組: ID,Method,URL,Status Code,Status,Duration,Upload,Download,Process,Start Time。リスト自身の列ではなく、Date、Client、Server、Policy、Flagsの列はありません。Methodはリクエストのメソッド、URLは完全なURLで、HARエクスポートと同じです。HTTPプロキシを通り復号されなかったHTTPSではCONNECTとhttps://hostになります。HTTPリクエストがない行 — 素のTCPや、TUNが復号せずに運んだHTTPS — では、代わりに接続の種類とホストが入ります。
  • curl コマンドをコピー — そのリクエストをメソッド、ヘッダー、ボディ付きでMacから再送する curl 呼び出し。ボディは先にデバイスから取得されます。Content-Length はcurlに計算させます。トンネルでしかない行(復号されなかったCONNECTや素のTCP)では、curl とURLだけになります。
  • bin として書き出す — 取得されたままのボディ 1 つ。

DashboardのHARは、リストと、デバイスから取得したボディから組み立てられます。エンジン自身もHARを作れます — エントリごとの _kl オブジェクトに一致したルール、ポリシー、適用された書き換えを収め、送受信のタイミングはキャプチャから取ったもので — コンソールのExport HAR(HARをエクスポート) か GET /api/connections/export?format=har からです。

Dashboardが届かないもの

Dashboardはエンジンのバイナリ制御チャネルで話し、エンジンにできることの一部はHTTPコントロールAPI にしかありません。以下はWebコンソールかAPIを使ってください:

  • 診断バンドル、健全性、拒否カウンター、イベント
  • コンソールのRulesページにあるルールごとの適用回数と、それが答える このルールは一度でも発動したか
  • 上述のエンジン自身のHAR
  • ログ

頼りにする前に知っておきたいことがもう 1 つ:

  • iPhone、Apple TV、Androidでは、HTTPS復号とボディの取得はライセンスが必要な機能です。ライセンスが無くてもDashboardは接続でき、すべての接続をルールとポリシー付きで表示しますが、HTTPSの行は決して復号されず — M フラグは付きません — データのタブも選択できません。iPhoneとAndroidではアプリのMitMスイッチはオンのままにならず、代わりに購入を促す表示が出ます。Apple TVにはコントロール画面にMitMの行そのものがありません。ライセンスと有効化を参照してください。
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。

results matching ""

    No results matching ""