Python 最简单的反向代理

Python 最简单的反向代理,python,ruby,node.js,reverse-proxy,Python,Ruby,Node.js,Reverse Proxy,我正在寻找一种方法,只需在本地设置一个连接到远程站点的代理。我不想在系统中安装任何东西。如果我能用一个命令行调用它,而不是用一个配置文件,那就太棒了 其目的是嗅探我正在开发的本地应用程序与其他人提供并使用HTTPS的远程服务器之间的通信量 最好是Ruby、Python或Node包,这样我就可以按照以下思路做一些事情: mkdir simplest-proxy; cd simplest-proxy; bundle init echo "gem 'simplest-proxy'" >>

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

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

它将允许我的应用程序连接到
localhost:8080
,这将把请求转发到远程站点(并重写
Host
头和任何其他必要的内容)。我将能够在WireShark中观看
lo
,并了解发生了什么

我快速浏览了pypi、rubygems和npm,但到目前为止,我发现要么不起作用(
proxylet
,否则看起来很有希望),用于更复杂的场景,需要设置(
dj revproxy
),要么期望使用正确的
主机调用(
节点反向代理
)而不是重写

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

更新:另一个不适用的解决方案是一个实际的HTTP代理,而不是一个模拟远程站点的代理。因为远程站点是一个HTTPS站点,这只会使我的应用程序在代理中进行连接,但没有得到任何结果。

我的用例包括:

mitmproxy -p 8080 -P https://remote.site.example.com/
但还有更多。它还提供了一个ncurses用户界面,用于显示完成的所有请求,并允许您检查它们。这使得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/

你看过FIDDLE或查尔斯吗?是的。据我所知,查尔斯无法将代理反向转换为HTTPS。FIDDLE看起来像是一个窗口唯一的东西,它被插入到浏览器中,透明地通过代理发送东西。但是我现在发现MITMyPror,会把它写成答案。它不是你正在寻找的反向代理,它是中间人。代理,是的,charles可以这样做。任何用自己的CA动态创建SSL证书的东西似乎都远远超出了“最简单的可能”.
mitmproxy
,如下所述,完全符合并超过了我的要求。请发表评论——这个问题在什么方面不是关于找到一种定义良好的工具来解决特定的软件开发问题?通过找到mitmproxy。爱那个网站。我建议
pip install mitmproxy
vs.easy_install.Does其实没什么大不了的,尤其是在虚拟电视中,但这确实也很管用。
virtualenv mitmproxy; cd mitmproxy
bin/easy_install mitmproxy
bin/mitmproxy -p 8080 -P https://remote.site.example.com/
mitmproxy -p 8080 --mode reverse:https://remote.site.example.com/