Mac でのデバッグ
Mac では Chute と見たいトラフィックが同じマシンにあるため、iPhone のガイドが何ステップも費やすもの — ケーブル、リスナー、パスワード — は不要です。代わりに別の問いが立ちます:そもそもトラフィックが Chute に届いているか。macOS ではアプリがプロキシを無視することを選べるからです。
1. トラフィックを Chute に通す
2 つの仕組みがあり、互いに独立しています。メニューにはどちらも並んでいます:
- システムプロキシ — メニュー最上部のトグル。Chute をシステムの HTTP/SOCKS プロキシとして登録します。システムのプロキシ設定を読むアプリ(ブラウザ、多くの GUI アプリ)は Chute を通り、読まないアプリは影響を受けません。
- Enhanced Mode(⌘E)— ネットワーク層でトラフィックを捕捉するので、アプリがプロキシをどう思っているかは関係なくなります。プロキシに一切対応していないアプリにはこれが必要です。承認の流れと 2 つの実装タイプは拡張モードを参照してください。
意外なのはターミナルのツールです。curl、git、npm などはシステム設定ではなく環境変数 HTTP_PROXY/HTTPS_PROXY を読みます。メニューの Copy Shell Export Command(⌘C)が正しい 1 行をクリップボードに入れてくれます —
export HTTPS_PROXY=http://127.0.0.1:8118;export HTTP_PROXY=http://127.0.0.1:8118;export NO_PROXY=127.0.0.1,localhost,.example.com
— ポートは実際の HTTP リスナーのもの、NO_PROXY は skip-proxy のリストから作られるので、コマンドラインツールはシステムプロキシとまったく同じものを迂回します。テストしたいシェルに貼り付けてください。効くのはそのシェルだけです。
見えるはずのもの:アプリを操作するにつれ、メインウィンドウの Traffic タブに行が増えていきます。1 行も出ないならトラフィックは Chute に届いていません — 復号の問題を探す前に、このステップに戻ってください。
2. Traffic タブを読む
Traffic は稼働中の接続を検索フィールドと件数(N active)付きで一覧します。Show columns ▾ でレイアウトを切り替えます:
- Double-row(既定) — 1 接続 2 行。眺めるのに向いています。
- Wide table — 1 接続 1 行で全列を並べます:ホスト、Process、ルール、ポリシー、Proto、アップロード、ダウンロード、Totals、状態。ヘッダーのクリックで並べ替えできます。
- Group by app — 接続を開いたアプリごとにまとめ、名前とアイコンを表示します。「このプロセスは誰と話しているのか」に最速で答えます。
行を右クリックすると Show Details、Copy Host、Copy Details、Filter Logs(ログ タブにこの接続で絞り込んだ状態で移動)、Close Connection が出ます。
Show Details はウィンドウを開き、その接続のホスト、Process、プロトコル、リモート、ルール、ポリシー、書き換え、アップロード、ダウンロード、状態を表示します — どう経路が決まったかはすべてここにあります。
Traffic タブはリクエストとレスポンスのボディを表示しません。それが詳細ウィンドウの リクエストと履歴 ボタンの役目で、押すと Web コンソールが開きます。開くのはコンソールのホームページで、その接続そのものではありません。
3. リクエストを送らずにルールを試す
ルール タブに Test Rule... ボタンがあります。URL かホスト名だけを入力して Test を押すと、Chute が解釈したホストとポート、DNS の結果、マッチしたルール、そのルールが選んだポリシー、そして注記を返します。
「なぜこれが直接接続になったのか」「2 つのルールのどちらが勝つのか」が問いのときに使ってください。動作中のルールセットを参照するので、編集した設定が実際に読み込まれているものかどうかも同時に分かります。答えが古そうなら設定を再読み込み(⌘R)してください。同じ問いを API で行うなら POST /api/rules/match です。
4. 記録と復号をオンにする
どちらもメニューにあり、どちらも動作中のカーネルに作用します:
- Traffic Capture(⌘B)— リクエストとレスポンスのボディを保持します。つまり
replica設定です。既定はオフで、オンにするまで何にもボディはありません。 - Enable MitM(⌘M)—
[MITM]のhostnameリストにあるホストの復号をオンにします。
どちらも設定ファイルには書き戻されません。Reload Configuration や再起動のあとは、ファイルの replica と [MITM] enable が優先されます。
CA は macOS では 1 ステップです。設定ウィンドウで MitM を開きます:
- 新しい証明書を生成(または PKCS#12 ファイルから証明書をインポート)。
- 証明書をシステムにインストール — macOS が管理者パスワードを求め、信頼されたルート証明書としてシステムキーチェーンに追加します。iOS のような別途の「信頼」手順はありません。
- 証明書をエクスポート で
.pemを書き出せます。同じ CA をスマートフォンや Apple TV、コンテナに入れる手段はこれです。
5. 1 つのプロセスに絞る
macOS は、Chute がどのアプリケーションが接続を開いたかを知っているプラットフォームで、ルールもそれを使えます:
[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy
PROCESS-NAME、PROCESS-PATH、PROCESS-NAME-REGEX はプロセスルールを参照してください。Traffic タブの Group by app と組み合わせれば、1 つのアプリだけをプロキシ — あるいはモック — に通し、マシンの他はいつも通りにできます。
6. Mac でしか成り立たないこと
- Map Local の
data=のファイルパス。 ファイルは Chute を動かしているデバイスがリクエスト時に読みます。Mac ではそれが編集しているマシン自身なので実パスが使え、ファイルを直せば次のレスポンスから変わります(再読み込み不要)。スマートフォンでは同じパスに意味がありません — iPhone のガイドがbase64=を使うのはそのためです。 - ディスク上のファイル。 ログのシャード、実行マーカー、取得したデータは
~/Chute/Share/<run id>/にあります。ファイルの場所(macOS)を参照。共有シートを経由せず、そのままバグ報告に添付できます。 - 他のデバイスへの提供。
allow-wifi-accessをオンにすると、ネットワーク上の他のマシンがプロキシ設定をこの Mac に向けられます。そのトラフィックは同じビューに現れ、Dashboard のクライアントサイドバーでは リモート に入ります — Chute が動いていないデバイス、Windows のノート PC やスマートテレビを調べる方法がこれです。
7. Traffic タブで足りないとき
- Web コンソール — メニューバー → Web コンソールを開く。ボディ、HAR の書き出し、どの書き換えが実際に効いたかを示すルールページ、診断プローブがあります。
[General]のexternal-http-controllerが必要です。 - Chute Dashboard — 別の無料アプリ。ローカルのカーネルに対しては
[General]にexternal-controller-access = <パスワード>@127.0.0.1:6170を書き、Dashboard の リモート タブでそのポートとパスワードを使って127.0.0.1に接続します。MitM ツールのパネルと、右クリックの HAR / curl 書き出しのために入れる価値があります。 - ログタブ — まず
loglevel = verboseでレベルを上げ、終わったら戻してください。接続行の Filter Logs はタブをその接続だけに絞ります。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。