
GoベースのMITM HTTP/HTTPSプロキシ。HTTP/2およびHTTP/1.1の傍受、ローカルCA/ホスト単位の証明書生成、CONNECT/WebSocketトンネリング、ディスクキャッシュ、管理ダッシュボード、トラフィックキャプチャ、ブロックポリシー、そして任意で利用可能なAI支援の脅威スキャン(編集、隔離、監査ログ付き)を備えています。
Goで書かれた、軽量で開発者に優しい中間者(MITM)HTTP/HTTPSプロキシです。HTTP/1.1およびHTTP/2、CONNECTトンネリング、WebSocketトンネリング(ws/wss)、柔軟なフィルタを備えたディスク上のレスポンスキャッシュ、設定のライブリロードをサポートします。

Go MITM Proxyは、デバッグ、テスト、学習、およびHTTP(S)トラフィックの制御された傍受を目的としたインターセプトプロキシです。MITMが有効な場合、ローカルCAによって署名されたホストごとのリーフ証明書を動的に生成し、プロキシがHTTPSトラフィックを復号化して検査できるようにします。また、MITMが無効な場合、または除外されたドメイン/ポートに対しては、透過的TCPトンネルとしても機能します。
重要: このアプリケーションは、HTTPSトラフィックを復号化するためのTLS証明書の生成と使用を含む、能動的なMan-in-the-Middle(中間者)傍受を実行します。お住まいの法域やネットワーク環境によっては、影響を受けるすべてのユーザーから明確な事前同意を得ずにトラフィックを傍受することは違法となる可能性があり、プライバシー、職場のポリシー、または規制要件に違反する恐れがあります。
このソフトウェアを、ご自身のローカルマシン以外の環境で使用する前に:
このプロキシがトラフィックを傍受する可能性のあるネットワークのすべてのユーザーは、HTTP(S)の傍受と検査が行われることを明確に通知されなければなりません。同意は明示的であり、可能であれば文書化されるべきです。
所有も管理もしておらず、テストまたは監視する明示的な許可を得ていないネットワーク上でこのソフトウェアを実行しないでください。
多くの地域では、ユーザーデータの傍受、ログ記録、保存を規制する厳格な法律(例:GDPR、CCPA、盗聴法)があります。使用が適用されるすべての規制に準拠していることを確認する責任はあなたにあります。
生成されたCA秘密鍵(通常は ca-key.pem)により、保持者は対応する証明書を信頼するユーザーに対してあらゆるドメインを偽装できます。
このプロキシは開発、デバッグ、制御されたテスト、または教育目的のために設計されています。隠密な監視や不正な監視のためではありません。
このソフトウェアを使用することにより、お客様の使用が合法的かつ倫理的であり、影響を受けるすべてのユーザーに適切に伝えられていることを確認する完全な責任を認め、受け入れるものとします。
前提条件:
クローンしてビルド: ```bash git clone https://github.com/Welfordian/mitm-proxy.git cd mitm-proxy go build ./
これにより、プロジェクトルートに mitm-proxy (Windows では mitm-proxy.exe) バイナリが生成されます。
## クイックスタート
1) デフォルト設定でプロキシを実行します (:8080 で待ち受けます): ```bash
./mitm-proxy
初回起動時に、ローカル CA が作成され、ca-cert.pem と ca-key.pem に保存されます。
ブラウザまたは curl が http://localhost:8080 のプロキシを使用するように設定してください。
HTTPS インターセプトを許可するには、生成された CA 証明書 (ca-cert.pem) を OS/ブラウザで信頼してください。Trusting the Local CA を参照してください。
プロキシ経由で HTTPS サイトにアクセスし、ログを確認してください。より詳細な情報を得るには、verbose モードを使用してください: ```bash ./mitm-proxy --verbose
## 使い方
### コマンドラインフラグ
- --config string: config.json ファイルへのパス
- --listen string: リッスンアドレス(設定を上書き)
- --ca-cert string: 既存の CA 証明書へのパス(設定を上書き)
- --ca-key string: 既存の CA キーへのパス(設定を上書き)
- --mitm bool: MITM インターセプトを有効にする(デフォルト: true。false に設定するとトンネリングを強制)
- --verbose bool: 詳細ログを有効にする
- --watch-config bool: config.json の変更を監視して自動適用する(デフォルト: true)
- --admin-enabled bool: ローカル管理 API/ダッシュボードを有効にする(デフォルト: true)
- --admin-addr string: 管理 API/ダッシュボードのリッスンアドレス(デフォルト: 127.0.0.1:9090)
- --admin-token string: 管理用ベアラートークン(省略時は起動時に生成)
- --admin-read-token string: GET/HEAD/OPTIONS の管理アクセス用読み取り専用ベアラートークン
- --admin-ui bool: 組み込み管理 UI を配信する(デフォルト: true)
- --admin-store string: 管理 SQLite ストアのパス(デフォルト: dashboard.db)
CLI フラグは、注記がある場合に設定ファイルの値を上書きします。
### 設定(config.json)
リポジトリには config.json の例が含まれています: ```json
{
"listen_addr": ":8080",
"proxy_name": "MITM-Proxy",
"ca_cert_path": null,
"ca_key_path": null,
"ca_cert_output_path": "ca-cert.pem",
"ca_key_output_path": "ca-key.pem",
"enable_mitm": true,
"admin_enabled": true,
"admin_addr": "127.0.0.1:9090",
"admin_token": "",
"admin_read_token": "",
"admin_ui": true,
"admin_store": "dashboard.db",
"excluded_domains": [],
"blocked_ports": [25, 445, 3389],
"blocked_domains": [],
"blocked_ips": [],
"block_action": "deny",
"block_response_status": 403,
"traffic_capture": {
"store_bodies": false,
"max_body_bytes": 32768,
"redact_bodies": true,
"store_headers": true,
"redacted_headers": ["Authorization", "Cookie", "Proxy-Authorization", "Set-Cookie", "X-Api-Key"],
"store_cookies": true,
"redacted_cookies": []
},
"proxy_auth": {
"enabled": false,
"realm": "MITM Proxy",
"require_auth_for_loopback": false,
"default_action": "allow"
},
"verbose_logging": true,
"log_requests": true,
"max_idle_conns": 200,
"idle_conn_timeout_seconds": 90,
"tls_handshake_timeout_seconds": 10,
"min_tls_version": "1.2",
"tls_next_protos": ["h2", "http/1.1"],
"cache": {
"enabled": true,
"directory": "/var/cache/mitm-proxy",
"include_domains": [],
"exclude_domains": [],
"include_extensions": ["jpg", "png", "webp", "css", "js"],
"exclude_extensions": [],
"ttl": 3600
}
}
注記:
管理サーバーはデフォルトで http://127.0.0.1:9090/admin/ にダッシュボードを提供します。API ルートには Authorization: Bearer <token> が必要です。ローカルブラウザで使用する場合、/admin/?token=<token> はトークンをブラウザのローカルストレージに保存します。
初期のダッシュボード/API の対象範囲は以下のとおりです。