リモートサイトに接続するプロキシをローカルで簡単に設定する方法を探しています。適切なシステムに何もインストールしたくない。構成ファイルを1つでもいじるのではなく、1つのコマンドライン呼び出しで呼び出すことができれば、すばらしいでしょう。
その目的は、私が開発している私のローカルアプリと、他の誰かが提供していてHTTPSを使用するリモートサーバーの間のトラフィックを盗聴することです。
Ruby PythonまたはNodeパッケージであることが望ましいので、次の行に沿って何かを実行できます。
mkdir simplest-proxy; cd simplest-proxy; bundle init
echo "gem 'simplest-proxy'" >> Gemfile; bundle --path vendor/bundle
bundle exec bin/simplest-proxy -p 8080 https://remote.site.example.com/
または
virtualenv simplest-proxy; cd simplest-proxy
bin/easy_install simplest-proxy
bin/simplest-proxy -p 8080 https://remote.site.example.com/
または
mkdir simplest-proxy; cd simplest-proxy
npm install simplest-proxy
node_modules/.bin/simplest-proxy -p 8080 https://remote.site.example.com/
これにより、アプリがlocalhost:8080
に接続できるようになります。これにより、リクエストがリモートサイトに転送されます(およびHost
ヘッダーとその他の必要なものはすべて書き換えられます)。 WireSharkでlo
を見て、何が起こっているのかを知ることができます。
私はpypi、rubygems、npmをざっと見て回りましたが、これまでに見つけたものは機能していません(proxylet
、それ以外の場合は非常に有望に見えた)。 (dj-revproxy
)または書き直すのではなく、正しいHost
(node-reverse-proxy
)で呼び出されることを期待しています。
更新:今のところProxyPass
/ProxyPassReverse
構成のApacheを使用しますが、やり過ぎであり、構成ファイルを操作する必要があります。
更新:適用できないもう1つのソリューションは、リモートサイトをエミュレートするものではなく、実際のHTTPプロキシです。リモートサイトはHTTPSサイトであるため、プロキシ内でアプリがCONNECTを実行するだけで、何も得られません。
見つかりました http://mitmproxy.org/ !
私のユースケースは以下によってカバーされます:
mitmproxy -p 8080 -P https://remote.site.example.com/
しかし、それだけではありません。また、実行されたすべての要求を表示するためのncurses UIを提供し、それらを検査することができます。これにより、WireSharkが不要になります。
質問に示すように、ディストリビューションパッケージインストーラーまたはeasy_installを使用してインストールします。
virtualenv mitmproxy; cd mitmproxy
bin/easy_install mitmproxy
bin/mitmproxy -p 8080 -P https://remote.site.example.com/
編集:
Mitmproxyバージョン3の場合、引数は次のようになります。
mitmproxy -p 8080 --mode reverse:https://remote.site.example.com/