Hna*_*att 17 java debugging rpc
我有一个怪异的Java应用程序(鲜为人知的应用程序服务器GNUEnterprise的客户端)及其源代码,我可以在对其进行一些更改后编译回来.该应用程序大量使用网络,我需要监控每个请求和响应.我可以使用像Wireshark这样的嗅探器,但该应用程序可以通过SSL使用其服务器,因此不知道SSL证书的私钥任何嗅探流量都是无用的.
如何从应用程序本身记录每个请求和响应,我该怎么办?我需要查看所有已发送和已接收的标头.我不想改变负责网络交互的所有代码.我想要的是像一个代码
Network.setDefaultLogger(myCustomLoggerInstance);
Run Code Online (Sandbox Code Playgroud)
在应用程序启动附近的某个地方,然后myCustomLoggerInstance执行我需要的所有日志记录.
此外,鉴于所有网络操作都是用URLConnections进行的,我可以获得响应头con.getHeaderFields()和请求头con.getRequestProperties().但为什么饼干不存在?如何以相同的方式转储发送和接收的cookie?
编辑:我想要达到的目的是模仿RPC应用程序与SSL服务器的通信,比如使用curl.为此,我需要获取应用程序网络流量的详细日志.
Jul*_*eau 17
记录所有SSL流量的快速方法是使用以下命令启动java:
-Djavax.net.debug=all
Run Code Online (Sandbox Code Playgroud)
或者将其设置为系统属性:
System.setProperty("javax.net.debug","all");
Run Code Online (Sandbox Code Playgroud)
振作起来.如果你这样做,标准输出会有噪音!
(*注意:仅记录SSL流量和SSL调试信息(握手等).不记录常规套接字.)
Gee*_*nte 16
你不能使用日志代理服务器,例如http://www.charlesproxy.com/或http://fiddler2.com/?Charles Proxy也可以解码AMF请求,Fiddler是SSL拦截的冠军.
IIRC你可以将系统属性http.proxyHost和http.proxyPort设置为127.0.0.1和8888,java URLConnections将通过你的日志代理服务器自动连接,你可以很好地查看你的HTTP流量.
或者,如果意图是能够重放通信,请使用JMeter HTTP Proxy,它以适合重播的格式记录.它还内置了对cookie的处理支持.
如果应用程序使用了不错的Web服务,SoapUI还有一个监视代理,它拦截您为其导入WSDL的Web服务调用.
我进一步挖掘,显然,HttpURLConnection 默认情况下启用了 java.util.logging。
请参阅相关问题: Java:发送前显示 HttpURLConnection 的请求和如何为 java HttpURLConnection 流量启用线路日志记录?
Java.util.logging 是 Sun 在 Java 1.4 中标准化日志记录提供程序的尝试(失败了)。如果您想避免调整系统属性,可以通过 jul-to-slf4j 模块将其桥接到 SLF4J。
但我仍然更喜欢 Fiddler 或 JMeter 代理:-)
| 归档时间: |
|
| 查看次数: |
32475 次 |
| 最近记录: |