欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Fiddler抓去HTTP/HTTPS数据包

程序员文章站 2024-01-31 18:10:22
...

默认情况下,Fiddler是抓不到Java程序的HTTP/HTTPS的通信的。

1. 配置抓取HTTP/HTTPS通信。

    只要为Java程序设置HTTP代理,指向localhost:8888即可。

        方法一,使用如下方式启动Java程序:

java -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 <path-to-your-app>

        方法二,在代码开始处,使用Java API配置Java属性:

System.setProperty("http.proxyHost", "localhost"); 
System.setProperty("http.proxyPort", "8888"); 
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "8888");

 2. 若要抓取HTTPS,以上配置不够,还需配置Fiddler解密HTTPS流量并导入Fiddler的root证书:

    打开Fiddler程序,工具->Fiddler选项,点击HTTPS标签页,勾选'解密HTTPS流量'复选框,此时会弹出安装Fiddler根证书的确认框,安装即可,然后从当前页面的下拉框中选择'从所有进程'或'仅非浏览器'。

3. 对于抓取HTTPS,还需要将Fiddler的根证书导入Java的KeyStore中,不然Java程序会抛出没有证书的相关异常

    1)导出Fiddler的根证书。

        在步骤2所打开的页面,点击‘动作’按钮,选择‘导出根证书到桌面’菜单项

     2)导入Fiddler根证书到Java的KeyStore中

        执行如下命令

<JAVA_HOME>/bin/keytool.exe -import -file C:\Users\<Username>\Desktop\FiddlerRoot.cer -keystore FiddlerKeystore -alias Fiddler

     该命令会创建一个新的Keystore:FiddleKeystore。会提醒输入要设定的密码。

     注:也可将该证书导入到Java默认的Keystore中(请自行google/baidu)

      3)在Java代码中设置KeyStore的路径:

System.setProperty("javax.net.ssl.trustStore", "<path-to-keystore>");

 注意:当然,也可在启动java程序时通过-Djavax.net.ssl.trustStore=XXX的方式指定。