前言:
大家都知道客户端开发的,抓取报文排查问题是必备的能力之一。最近有这么一个场景,需要通过 wireshark 抓取报文查看网络请求的握手环节是否使用国密 SSL 的协议。但是无论是通过 Charles、Fiddler 或者 wireshark,我都抓不到 app 发出去的请求报文,但是可以抓到手机浏览器以及其他 app 的流量。一时其实是毫无头绪的,直到某一天突然看到了项目里的这几行代码,才恍然大悟。
//清除网络代理
System.getProperties().remove("http.proxyHost");
System.getProperties().remove("http.proxyPort");
因为没接触过这一块的内容,所以不太熟悉。通过注释这两行代码之后,就可以正常的抓取到报文了。
Tips:
1、想要看到自己的 APP 请求握手是否是使用国密协议,通过 wireshark -- protocol 就可以看到,国密协议的会显示 GMSSL/GMTLS,而普通的 https 请求则会显示 TLSV版本号。
2、普通的 wireshark 是看不到国密协议的,所以即便是国密的请求也会和普通的 https 请求一样显示 TLS,要使用支持国密的 wireshark ,大家可以自行百度就会有相关链接可以下载了。