当前位置: 首页 > 知识库问答 >
问题:

创建JavaHTTPS代理以记录HTTP流量

长孙和悦
2023-03-14

我正在实现我自己的代理,目的是记录HTTP流量。从我到目前为止的研究来看,这并不是微不足道的,因为第一个请求(CONNECT)是在没有通过HTTP加密的情况下完成的(在端口443上-使用常规服务器套接字),然后通过HTTP隧道到SSL(HTTPS),这需要由安全的服务器套接字(取自SLServerSocketFactory)处理。

换句话说,在第一个连接请求之后,我需要将实现从非安全切换到安全服务器套接字。

除此之外,我正在考虑使用基于服务器证书的自定义密钥库和信任库(这一步没有问题)。

感谢您的想法或您可能拥有的任何示例。

共有1个答案

叶茂才
2023-03-14

这是极其微不足道的。

  1. 从接受的套接字中读取一行。那是CONNECT。获取目标主机。
  2. 连接到目标。这是“上游”连接,另一个是“下游”连接。
  3. 如果失败,请发回适当的HTTP响应并关闭套接字。
  4. 否则,启动两个线程,一个将字节从上游复制到上游,另一个将字节从上游复制到下游。
  5. 当您在其中一个线程中的套接字上读取EOS时,关闭它写入的套接字以进行输出并退出线程。
  6. 执行此操作时,检查您读取的套接字是否已关闭以进行输出。如果有,请在退出线程之前关闭两个套接字。

因此,当双向读取EOS时,两个套接字都关闭,两个线程都退出。这种关闭技术解决了所有可能的保活困难。

当您复制字节时,您一点也不关心其中的内容。客户端将对上游服务器执行所有SSL操作。你不需要知道任何事情。

 类似资料:
  • 我在我的机器上运行一个本地HTTP代理服务器并执行一些日志记录。我还想记录SSL流量。为此,我运行了另一个用Python编写的代理服务器,它作为SSL服务器,使用我的自签名证书,HTTP服务器forwads将请求连接到该服务器。SSL代理用于SSL处理“SSL”标准Python模块。此SSL代理应将SSL流量转发到目标web服务器。 HTTP代理成功转发来自浏览器的CONNECT请求,浏览器与SS

  • 我正在编写一个代理,可以捕获selenium测试中的请求。在selenium中,我使用了这个 接受客户端请求的代理部分 这是连接服务器的部分 我可以访问服务器。我的问题是客户端请求接受部分和转发到服务器的部分应该是什么,在###之间,这将允许我以人类可读的格式捕获流量?我不太擅长证书。欢迎任何帮助。

  • 问题内容: 因此,现在我需要创建并实现Python日志记录模块的扩展,该扩展将用于登录到我们的数据库。基本上,我们有几个python应用程序(它们都在后台运行)当前登录到文本文件的随机混合。这几乎使得不可能确定某个应用程序是否失败。 给我的问题是将所说的日志记录文本文件移动到oracle数据库。这些表已经定义好了,需要记录到什么地方,但是现在,我正在寻找添加另一个将记录到数据库的记录处理程序。 我

  • 问题内容: 我想编写一个例程,该例程将允许我在跨越设定时间范围的表中记录日期已久的事件(记录),并且在特定的一天没有发生任何事件的情况下,将创建一个重复次数最多的事件事件DID发生的最近的先前记录。 例如:如果在9月4日,字段1 = X,字段2 = Y,字段3 = Z,然后什么也没有发生,直到9月8日字段1 = Y,字段2 = Z,字段3 = X,该例程将创建记录在表格中说明3天什么都没发生的情况

  • 我想使用ActiveMQ创建一个代理来连接到另一个蚊子代理。然后,我可以使用ActiveMQ接收来自蚊子代理的消息。 我现在要做的是: 将ActiveMQ与JBoss EAP 6.3集成。 在ActiveMQ中创建MQTT代理:http://activemq.apache.org/mqtt.html 但是,在我添加代理配置中的网络连接器之后.xml: 服务器启动后显示异常: "vm://local

  • 问题内容: 我正在使用docker-compose设置可扩展的气流集群。我基于此Dockerfile https://hub.docker.com/r/puckel/docker- airflow/ 我的问题是将日志设置为从s3写入/读取。当dag完成后,我会收到这样的错误 我像这样在文件中设置了一个新部分 然后在“远程日志”部分中指定s3路径 我是否对此进行了正确设置并且存在错误?这里缺少成功的