Charles监听终端请求

Charles monitor terminal request

有没有办法监听终端等应用程序的请求?现在我可以监控 chrome 但其他应用程序不能。

我的 charles 版本是 4.2

我认为这取决于您要监视的命令行。要纯粹捕获从终端发出的 http 请求,您只需要设置环境变量 'http_proxy' 例如:

$ export http_proxy="http://localhost:8888"
$ curl "http://www.google.com"

这将使 Charles 捕获到 Google 的 HTTP 请求,但这可能不会发生在从该终端启动的所有应用程序中。您可能必须找到在其他应用程序上配置代理的方法。

举个例子,如果您想从正在开发的 java 应用程序 捕获 http 请求,则需要将适当的代理配置添加到java 命令行,类似于:

$ JAVA_FLAGS="-Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=8888"
$ java $JAVA_FLAGS ...

要使用 Charles 启用 HTTPS 嗅探,您需要使用以下命令将证书添加到 JVM 的密钥库:

$ keytool -import -alias charles -file charles-ssl-proxying-certificate.cer -keystore $JAVA_HOME/jre/lib/security/cacerts

请注意

  • cacerts 文件位置可能因 java 版本而异 (在 Java 10 上低于 $JAVA_HOME/lib/security/)
  • 密码 cacerts文件,如果没有改变,就是:changeit(所以考虑改一下)

希望这对您有所帮助。