我想在node.js中实现代理服务器,这有点类似于Charles代理-它应拦截来自我的移动应用程序的HTTPS请求,对其进行解密,根据主体内容将其中的一些路由到原始后端,并使用一些静态方法模拟其他文件。
- 此HTTPS内容如何在Charles或其他代理中处理?
- 我需要在移动设备上使用自签名的根证书吗?
- 有没有图书馆对我有帮助?
此HTTPS内容如何在Charles或其他代理中处理?
从技术上讲,Charles Proxy或Proxyman.io(我现在正在使用的那个)将执行以下步骤:生成根证书并安装到钥匙串并信任它。此步骤将执行一次。
打开本地服务器(在8888或9090)。将系统中的HTTP代理覆盖到此端口。因此,所有流量都将通过端口。您可以使用networksetup
CLI轻松实现,也可以使用macOS上的Privileged Helper工具获得高性能和安全性。捕获第一个套接字后:如果是HTTP请求,请获取第一行消息。例如:GET https://api.producthunt.com/v1/posts HTTP/1.1
如果是HTTPS,请确保执行SSL握手,然后获取第一行消息。最后,仅获取其余消息并解析为适当的消息(NodeJS的HTTPCParser将是可能的候选对象]从客户端和目标服务器向前和向后发送数据。如果您需要,请执行操作,因为您是真正的手套。我需要自签名的根证书移动设备吗?
是,您必须首先在您的iOS设备上安装根证书。有关标题/响应的详细信息。从那些Charles或Proxyman中检查chls.pro/ssl或proxy.man/ssl,然后查看内容。您可以使用ADVTrustStore在iOS模拟器上完成此操作>
有没有图书馆对我有帮助?
您可以查看那些著名的开源软件以了解其工作原理-mitmproxy-zapproxy-http toolkit希望这可以帮助您。
使用Charles Proxy查看您手机的请求非常简单。