我现在正在使用Charles代理来监视我的设备和网站之间的流量。流量是SSL,我可以在Charles上读取它。问题是,当我通过JSON对象中的数百个变量进行过滤时,查尔斯使内容难以阅读。我创建了一个程序,该程序将在导出查尔斯日志后过滤JSON。我的下一步是彻底摆脱查理,并在python中创建我自己的代理,该代理可以查看http和https数据。我想知道是否可以使用scapy或任何其他现有的库?我对scapy感兴趣,因为我可以将代理日志另存为pcap文件。
通过mitmproxy进行的阅读将不胜枚举,因为它是一个庞大的来源库。如果您想从头开始实现代理服务器。这是我在开发Proxyman时学到的
了解如何设置小型代理服务器:基本上,在您的端口(例如9090)上打开侦听套接字。接受任何传入的请求并获取HTTP消息的第一行。可以完成轻量级的http解析器或任何Python解析器。原始HTTP消息如下所示:
CONNECThttps://google.comHTTP / 1.1
解析并获取google和IP:打开与目标IP的套接字连接,并开始从客户端目标服务器进行收发,然后再返回。
第一步对于在此步骤中实现HTTP代理至关重要。使用http-parser解析其余的HTTP消息。因此,您可以从Request / Response-> Present to UI
了解HTTPS和SSL如何工作:使用OpenSSL生成自签名证书以及如何生成链证书。
了解如何通过使用Apple的安全CLI或安全框架将那些证书导入到macOS钥匙串中。
完成后:是时候开始HTTPS拦截了:开始第二步,并在两端都使用适当的证书进行SSL握手(客户端->代理服务器和代理服务器->目标)
照常解析HTTP消息并获取其余消息。
总体上,有很多开放源代码,但是我建议从简单版本开始,然后再继续。
希望对您有所帮助。