mitmproxyを使ってnodejsの通信を確認する
2024年 02月 27日 火曜日
mitmproxyとは
Proxyのフリをしてhttp, https通信の中身を傍受したり、その通信の中身を編集、再送などできるツール。名前そのまんまやん。
https://github.com/mitmproxy/mitmproxy
モチベーション
nodejsで外部APIへ接続しているnpmパッケージをハック的に上書きしてエンドポイントパスやヘッダ、bodyなどを変更した。この変更が期待通りに動作しているかを確認したい。
node --inspect
を利用して Chrome Dev Tools
で確認できればいいのだが、あいにくネットワークタブが無いためWebページのようにリクエストをリスト形式で確認することができない(実装してほしい)。
https通信のため、Wiresharkなどを利用してもドメイン名までしか判別できない。
そんな願いを叶えてくれそうなのがmitmproxyなのである。
インストール
Macの場合はbrewでインストールできる。Python製なので大体の環境で動くはず。
$ brew install mitmproxy
dockerコンテナもあるけどhttpsを確認したい場合はcertsの共有が面倒なのでbrewで直接入れるのがおすすめ。
使い方
mitmproxyの起動
proxyはデフォルトだとport 8080で実行される。
GUIの場合👇
$ mitmweb
CUIもあるが、使ったことはない。👇(mitmwebはmitmproxyのGUIインターフェイス)
$ mitmproxy
nodejsの起動
環境変数の設定方法は利用しているシェルに合わせる。
mitmproxyを起動していれば ~/.mitmproxy/*
に証明書関係が出力されている。
$ HTTP_PROXY=http://localhost:8080 HTTPS_PROXY=http://localhost:8080 NODE_EXTRA_CA_CERTS=~/.mitmproxy/mitmproxy-ca-cert.pem node
動作確認
http://localhost:8081 でGUIが起動している(mtimwebで起動した場合)。操作は難しくないので省略。
この記事をシェア