28

我正在寻找一种方法来简单地在本地设置连接到远程站点的代理。我不想在系统中正确安装任何东西。如果我可以通过单个命令行调用而不是使用单个配置文件来调用它,那将是非常棒的。

目的是嗅探我正在开发的本地应用程序和其他人提供并使用 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标头和其他任何必要内容)转发到远程站点。我将能够lo在 WireShark 中观看并了解发生了什么。

我在 pypi、rubygems 和 npm 中快速浏览了一下,但到目前为止我发现要么不起作用(proxylet否则看起来很有希望),用于更复杂的场景并需要设置(dj-revproxy)或期望用正确的Host( node-reverse-proxy) 调用而不是重写。

更新:我现在使用带有ProxyPass/ ProxyPassReverseconfig 的 Apache,但感觉非常矫枉过正,需要使用配置文件。

更新:另一种不适用的解决方案是实际的 HTTP 代理,而不是模拟远程站点。因为远程站点是一个 HTTPS 站点,这只会让我的应用程序在代理中执行 CONNECT 并且什么也没得到。

4

1 回答 1

43

找到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/
于 2013-06-14T12:57:58.467 回答