最简单的反向代理

cla*_*cke 22 ruby python reverse-proxy node.js

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

目的是嗅探我正在开发的本地应用程序与其他人提供并使用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/
Run Code Online (Sandbox Code Playgroud)

要么

virtualenv simplest-proxy; cd simplest-proxy
bin/easy_install simplest-proxy
bin/simplest-proxy -p 8080 https://remote.site.example.com/
Run Code Online (Sandbox Code Playgroud)

要么

mkdir simplest-proxy; cd simplest-proxy
npm install simplest-proxy
node_modules/.bin/simplest-proxy -p 8080 https://remote.site.example.com/
Run Code Online (Sandbox Code Playgroud)

它将允许我的应用程序连接到localhost:8080,它将转发请求(并重写Host标题和其他任何必要的)到远程站点.我可以lo在WireShark中观看并了解发生了什么.

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

更新:我现在正在使用带有ProxyPass/ ProxyPassReverseconfig 的Apache ,但它感觉有点过分,需要使用配置文件.

更新:另一个不适用的解决方案是实际的HTTP代理,而不是模拟远程站点的代理.因为远程站点是一个HTTPS站点,这只会使我的应用程序在代理中执行CONNECT并且没有获得任何内容.

cla*_*cke 33

找到http://mitmproxy.org/!

我的用例包括:

mitmproxy -p 8080 -P https://remote.site.example.com/
Run Code Online (Sandbox Code Playgroud)

但还有更多.它还提供了一个ncurses UI,用于显示所有已完成的请求,并允许您检查它们.这使WireShark成为不必要的.

使用您的发行版软件包安装程序或easy_install进行安装,如问题所示:

virtualenv mitmproxy; cd mitmproxy
bin/easy_install mitmproxy
bin/mitmproxy -p 8080 -P https://remote.site.example.com/
Run Code Online (Sandbox Code Playgroud)

编辑:

对于mitmproxy版本3,参数将是:

mitmproxy -p 8080 --mode reverse:https://remote.site.example.com/
Run Code Online (Sandbox Code Playgroud)

  • 我建议`pip install mitmproxy`与easy_install. (2认同)