无法使用 Charles Web 代理作为反向代理接收和转发远程请求

Not able to receive and forward remote request using Charles Web Proxy as a Reverse Proxy

我正在尝试捕获不支持系统代理设置的旧应用程序。我唯一可以更改的配置是服务器 IP 地址。

正在用 Wireshark 抓包。如果没有 Charles 反向代理,我可以在前三个握手请求之后看到请求。

使用反向代理,握手请求后连接卡住。

我注意到当 Charles 收到请求并连接到某个地方时,它只会卡在那里:

以下是反向代理的配置(已移除远程主机):

如有任何帮助、解决方案和解决方法,我们将不胜感激!

首先,您的应用既不使用 HTTP 也不使用 HTTPS。研究成功连接的屏幕截图提供了有关使用的协议的一些详细信息:

  • 握手后的第一条消息是由服务器发起的,这与常见的客户端-服务器方法相反,客户端负责发送查询。这个事实足以划掉 HTTP 和 HTTPS。
  • 有效载荷数据不是人类可读的,因此它是一个二进制协议。
  • 基于 PUSH 标志,协议更有可能是基于消息而不是基于流的

所以客户端建立连接,立即从服务器获取一些命令并回复它。然后通信继续。我猜不出确切的协议。端口号可能无关紧要,但即使不是,也有 only few protocols 默认使用 4321 端口。无论如何,它总是可以自定义私有协议。

我不熟悉 Charles,但是转发任意 TCP 流可能是它的 port forwarding 功能而不是反向代理所涵盖的。但是,我真的看不出在这种情况下通过 Charles 发送流量有任何好处,在您的 PC 上捕获数据应该足以研究细节。

如果您正在寻找流量操纵,对于任意 TCP 流,这不是一件容易的事,但它必须是可能的。我不知道合适的工具,快速谷歌搜索显示了很多实用程序,但其中一些看起来仅适用于基于文本的流,因此需要更深入的研究。

失败原因

这可能是因为您正在从远程范围请求本地 IP 地址,而 Charles 代理不适用。 POS(Proof Of Statement)请参考以下link

https://www.charlesproxy.com/documentation/faqs/localhost-traffic-doesnt-appear-in-charles/


解决方案

所以为了解决当前场景的问题,使用

http://192.168.86.22.charlesproxy.com/

注意:您请求的 url 只会由 Charles 正确代理,而不会由任何其他代理服务正确代理。