【发布时间】:2013-06-11 00:58:26
【问题描述】:
我正在寻找一种方法来简单地在本地设置连接到远程站点的代理。我不想在系统中正确安装任何东西。如果我可以使用单个命令行调用而不是使用单个配置文件来调用它,那就太好了。
目的是嗅探我正在开发的本地应用程序与其他人提供并使用 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,但感觉过于矫枉过正,需要使用配置文件。
更新:另一种不适用的解决方案是实际的 HTTP 代理,而不是模拟远程站点。因为远程站点是一个 HTTPS 站点,这只会让我的应用在代理中执行 CONNECT 并且什么都没有获得。
【问题讨论】:
-
你看过 fiddler 还是 charles?
-
是的。据我所知,查尔斯无法反向代理到 HTTPS。 Fiddler 似乎是一个仅限 Windows 的东西,它插入浏览器以通过代理透明地发送东西。但我现在找到了 mitmproxy,将其写为答案。
-
你要找的不是反向代理,而是中间人代理,是的,charles 可以充当这样的角色。
-
任何使用自己的 CA 动态创建 SSL 证书的东西似乎都远远超出了“最简单的可能”。
mitmproxy,如下所述,完全符合并超出了我的要求。 -
欢迎发表评论 -- 这个问题在什么方面不是关于找到一种定义明确的工具来解决特定的软件开发问题?
标签: python ruby node.js reverse-proxy