按照网上的方法
1-把FiddlerRoot.cer放入了这个文件夹
证书生成在fiddler软件里面Tools——》Actions——》导出到桌面
2-执行以下操作
之前跟着一个教程直接敲,让我去security的目录敲这个命令,但是找不到,后来搜了一下keytoole.exe的所在目录, 就在这个目录这执行这个命令。
这里的证书目录我刚开始选择的java里面的security,但是失败, 把证书拷贝一份放了d盘就成功了。
keytool.exe -import -file D:\devsoft\fiddler\FiddlerRoot.cer -keystore D:\FiddlerKeystore -alias Fiddler
密码输入123456
3-修改jvm参数
据说后面两排是https请求要加的,反正官方那里没有这两行。之前这个参数已经改过,没啥用,死马当活马医,有新的参数都招呼上去。
-DproxySet=true
-Dhttp.proxyHost=127.0.0.1
-Dhttp.proxyPort=8888
-Djavax.net.ssl.trustStore=D:\FiddlerKeystore
-Djavax.net.ssl.trustStorePassword=123456
上面的都试了一遍,发现还是不行。
后来看到一篇文章说,
4-如果你是通过httpclient发送的接口请求,需要在发送请求之前设置代理
8888是fiddler的端口,参数这些都不用改。
OkHttpClient client = new OkHttpClient.Builder().proxy(new Proxy(Proxy.Type.HTTP,new InetSocketAddress("127.0.0.1",8888)))
.readTimeout(1000L, TimeUnit.MINUTES).build();
找了无数方法,终于配成功了。 最后是通过设置代理成功的。
在发请求之前配个fiddler的代理才是正道,其他那些都用不着。所以官方那里其实只有一句话,就是配jvm参数,但我因为不是用java原生代码来发送请求的,所以可能绕过了,没有通过代理。就要手动给HttpClient设置代理,设置完这个,都不用重启就直接成功了。
后来把security的证书删掉,jvm的参数配置删掉,都还是能捕获到。所以配置fiddler就是一个要点:在发送请求以前,让fiddler代理。不然就拦截不到请求,自然也捕获不了。
感谢【Fiddler的Java抓包 - 下士闻道 - 博客园】,通过这个得知主要是设置代理,后来就去百度搜OKHttpClient怎么设置代理就完事了。
【fiddler抓取Java程序内部的HTTP请求包 - 灰信网(软件开发博客聚合)】把证书加到密钥,虽然对最终目的没啥用,但是之前想操作这一步而没有成功,看着这个教程操作成功了,还是挺开心的。