我正在使用IntelliJ用Java编写Web应用程序,我想使用Charles监视我的所有http/https请求,但是默认情况下我的请求没有显示,所以我怀疑需要设置一些代理设置双方.有人可以详细解释一下吗?非常感谢提前!
好的,我已经设法了解问题并解决了问题.
第一个问题是我的请求主要来自JVM,因此我们必须首先代理它们,这意味着必须进行JVM配置,可以作为参数提供(可以通过CLI或VM选项提供)在IntelliJ)像这样:
-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888
下一个问题是,除此代理外,还必须提供证书才能捕获和查看解密的https请求.
我们可以通过转到工具>选项> HTTPS>解密HTTPS流量来生成Fiddler证书.生成的证书可以从http://127.0.0.1:8888/下载.
使用JVM的keytool,我们可以使用我们的证书创建一个新的密钥库,我们稍后可以将其用作JVM配置来信任资源.为此,请运行以下命令(确保为keytool和cert提供正确的路径):
"C:\Program Files\Java\jdk1.8.0_144\bin\keytool.exe -import -file C:\Users\Username\Desktop\FiddlerRoot.cer -keystore FiddlerKeystore -alias Fiddler
提供密码后,将生成密钥库C:\Windows\System32
.
现在,我们可以通过传递以下内容将此密钥库和密码提供给JVM:
-Djavax.net.ssl.trustStore="C:\Windows\System32\FiddlerKeystore" -Djavax.net.ssl.trustStorePassword="yourKeyStorePassword"
这个答案基于以下博客文章和StackOverflow答案:
使用Fiddler从Java应用程序捕获HTTPS流量
如何使用fiddler捕获https,在java中