如何使用IntelliJ连接Charles?

时间:2017-10-25 07:54:58

标签: intellij-idea proxy charles-proxy

我正在使用IntelliJ用Java编写Web应用程序,我想使用Charles监控我的所有http / https请求,但我的请求默认情况下不显示,所以我是怀疑需要在双方设置一些代理设置。有人可以详细解释一下吗? 非常感谢提前!

2 个答案:

答案 0 :(得分:8)

好的,我已经设法了解问题并解决了问题。

JVM代理

第一个问题是我的请求主要是来自JVM,所以我们必须首先代理它们,这意味着必须进行JVM配置,可以作为参数提供(可以通过CLI或在IntelliJ中的 VM选项下,如下所示:

-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888

HTTPS

下一个问题是,除此代理外,还必须提供证书,以便捕获和查看解密的https请求。

我们可以通过转到工具>生成Fiddler证书选项> HTTPS>解密HTTPS流量。生成的证书可以从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答案:

答案 1 :(得分:1)

按照官方网站上的说明进行操作:

https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

  1. 导出 Charles Proxy 根证书。

  2. 将证书安装到 IntelliJ 中的应用程序正在使用的 Java 版本的 JVM 证书存储中。

    sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem

我遇到的问题是 IntelliJ 运行“配置”(用于从 IntelliJ 内部运行 Java 应用程序)使用的是与实际项目级 SDK 不同的 SDK。

转到在 IntelliJ 中编辑配置以确认在运行时使用的 SDK。

编辑:我还发现一些库(sp. Apache HttpClient)绕过了配置 SDK/代理设置,导致来自 IntelliJ 的请求对 Charles 代理不可见。