我必须支持一些旧式客户端代码,这些代码使用专有协议通过端口 1234 与服务器建立网络连接。客户端计算机上的直接互联网连接工作正常,但有些人在公司网络内使用代理。在大多数情况下,这种方法是可行的,但我需要对客户端代码进行一些更改,并希望使用代理进行测试。
我在第二个工作站上安装了 mitmproxy,如果我将主工作站设置为使用此代理,则一切正常 - 我可以使用默认浏览器发出安全的 Web 请求,因此我很确定代理设置正确。它不需要任何代理身份验证,而且似乎可以正常工作。
但是,当我启动这个特定的应用程序并将其配置为使用代理时,我可以在其调试输出中看到它正在尝试这样做,但在 mitmproxy 调试窗口中,我只看到:
192.168.0.28:59278: clientconnect 192.168.0.28:59278: ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None) 192.168.0.28:59278: ProtocolException("ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)",) 192.168.0.28:59278: clientdisconnect
我猜想这是因为该应用程序没有发出“正确格式”的 Web 请求,而是使用自己的 TCP 协议。如果是这样的话,我的想法对吗?mitmproxy 无法充当代理?如果是这样,有没有其他简单、最好是免费的代理应用程序可以用于测试?我确实看过 pfSense,但需要为此设置一个 VM,而通过 VM 进行网络连接会带来以前体验中从未有过的全新痛苦 :|。
答案1
进一步阅读 mitmproxy 文档后,我发现了“透明”模式,这听起来更符合我的要求。但(a)它仍然非常专注于 HTTP 和 HTTPS,其次,这部分表明需要其他 TCP 路由软件。我想我仅有的正在寻找那个,所以不会再尝试弯曲 mitm。