我有一个巨大的 Java 应用程序(一个鲜为人知的应用服务器 GNUEnterprise 的客户端)及其源代码,我可以在对其进行一些更改后编译回来。该应用程序大量使用网络,我需要监控每个请求和响应。我可以使用像 Wireshark 这样的嗅探器,但该应用程序通过 SSL 与它的服务器一起工作,因此不知道 SSL 证书的私钥任何嗅探的流量都是毫无用处的。
我该怎么做才能使每个请求和响应都从应用程序本身记录下来?我需要查看所有发送和接收的标头。我不想更改所有负责网络交互的代码。我想要的是放一个代码
Network.setDefaultLogger(myCustomLoggerInstance);
在应用程序开始附近的某个地方,然后在myCustomLoggerInstance
做我需要的所有日志记录。
此外,鉴于所有网络操作都是使用URLConnection
s 进行的,我可以使用 . 获取响应标头con.getHeaderFields()
和使用con.getRequestProperties()
. 但是为什么没有cookies呢?如何以相同的方式转储发送和接收的 cookie?
编辑:我想要达到的是模仿 RPC 应用程序通过 SSL 与其服务器的通信,例如,使用curl
. 为此,我需要获取应用程序网络流量的详细日志。