Reverse Proxy で HTTP プロキシ非対応アプリをキャプチャする方法
このブログでは、Reverse Proxy ツールを使って、HTTP プロキシに対応していないアプリやクライアントの HTTP/HTTPS 通信をキャプチャする方法を紹介します。
Reverse Proxy はどんな問題を解決するのか?
アプリやクライアントが標準で HTTP プロキシに対応していない場合、Proxyman では通信をキャプチャできません。
次のリストは、HTTP プロキシに対応していない、または設定が必要なライブラリの例です。
- cURL
- NodeJS の
fetchまたはaxios - Python ライブラリの
request - Android TV ボックス
- 組み込みデバイス
- 古い C 言語のネットワークライブラリ
- ...
Reverse Proxy を使えば、こうした通信もキャプチャできます。
使い方
前提条件
- アプリまたはクライアントが HTTP プロキシに対応していない
- Proxyman でアプリまたはクライアントの通信をキャプチャできない
- アプリまたはクライアントのソースコードにアクセスできる
デモとして、cURL のコマンドラインを使用します。
デフォルトでは cURL はプロキシを使用しないため、Proxyman では通信をキャプチャできません。
ここでは cURL をデモ用に使っています。Reverse Proxy ツールを使わずに cURL にプロキシを使わせたい場合は、--proxy localhost:9090 フラグを指定できます。

- サーバーが https://producthunt.com であると仮定します
- Proxyman を開き、Tools メニュー -> Reverse Proxy を選択します
- 次の情報を入力して、新しいルールを作成します
- Name: Map to Production
- Local Port: 10000
- Remote Host:
<your real server> - Remote Port: 443 (HTTPS)

- 保存します
- アプリまたはクライアントのソースコードを開き、Base URL を
localhost:10000に変更します - アプリまたはクライアントを起動します
- Proxyman で通信を確認します

ご覧のとおり、--proxy localhost:9090 フラグを使わなくても、Proxyman は cURL の通信をキャプチャできます。
- HTTPS を使う場合は、
https://localhost:10000を使用してください - HTTP を使う場合は、
http://localhost:10000を使用してください
まとめ
アプリによっては標準で HTTP プロキシに対応していないため、Proxyman では通信をキャプチャできない場合があります。しかし、Reverse Proxy を使うと、そのような通信もキャプチャできるようになります。
クライアントが対応している場合は、まず明示的なプロキシ設定か、Proxyman の Automatic Setup を試してください。クライアントの Base URL は変更できるがプロキシは設定できない場合に、Reverse Proxy を選びます。ローカルポートが空いていることを確認してください。また、Preserve Host は、リモートサーバーが元の Host ヘッダーを必要とする場合にのみ使用してください。Host の値が一致しないと、サーバーがリクエストを拒否することがあります。
この記事が、開発の整理に役立てば幸いです。楽しいコーディングを! 👨🚀
Proxyman は、iOS デバイス、iOS シミュレータ、Android デバイス上のアプリやドメインの HTTP(S) 通信をキャプチャして検査できる、高性能な macOS アプリです。
入手はこちら:https://proxyman.com/
