HTTPS代理,如Charles

问题描述 投票:0回答:2

我想在node.js中实现代理服务器,这有点类似于Charles代理-它应拦截来自我的移动应用程序的HTTPS请求,对其进行解密,根据主体内容将其中的一些路由到原始后端,并使用一些静态方法模拟其他文件。

  1. 此HTTPS内容如何在Charles或其他代理中处理?
  2. 我需要在移动设备上使用自签名的根证书吗?
  3. 有没有图书馆对我有帮助?
node.js https proxy charles-proxy
2个回答
2
投票
    此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
      然后打开转发套接字到此URL。
  • 如果是HTTPS,请确保执行SSL握手,然后获取第一行消息。
  • 最后,仅获取其余消息并解析为适当的消息(NodeJS的HTTPCParser将是可能的候选对象]
  • 从客户端和目标服务器向前和向后发送数据。
  • 如果您需要,请执行操作,因为您是真正的手套。
    1. 我需要自签名的根证书移动设备吗?
  • 是,您必须首先在您的iOS设备上安装根证书。有关标题/响应的详细信息。从那些Charles或Proxyman中检查chls.pro/ssl或proxy.man/ssl,然后查看内容。

    您可以使用ADVTrustStore在iOS模拟器上完成此操作>

      有没有图书馆对我有帮助?
  • 您可以查看那些著名的开源软件以了解其工作原理-mitmproxy-zapproxy-http toolkit

    希望这可以帮助您。


  • 0
    投票
    使用Charles Proxy查看您手机的请求非常简单。
    © www.soinside.com 2019 - 2024. All rights reserved.