皆さんご存じのFiddlerですが、Javaのアプリで通信をキャプチャしてくれなかったのでちょっとだけ調べました。
HTTP通信の場合
公式でも触れられていたように、FiddlerのLocal Proxyを使うのが正解みたいです。
以下のように環境変数でProxyを設定してください。javaコマンドに-Dで指定してもかまいません。
System.setProperty("http.proxyHost", "127.0.0.1"); System.setProperty("https.proxyHost", "127.0.0.1"); System.setProperty("http.proxyPort", "8888"); System.setProperty("https.proxyPort", "8888");
HTTPS(SSL)の場合
Fiddlerでは、HTTPS通信もキャプチャできたりしますが、Javaではその設定をオンにした上で、上記の設定を有効にしても例外が発生し、キャプチャできません。
証明書をごにょる必要があります。Fiddlerの設定画面開いて、HTTPSタブを開きます。[Export Root Certificate to Desktop] ボタンがあるので、まずはデスクトップに保存した後、任意の場所に格納します。
次にJDKの keytoolsを使ってストアに格納します。キーストアのパスワードは後で使います。
"C:\Program Files\Java\jdk1.8.0_60\bin\keytool.exe" -import -file c:\anywhere\FiddlerRoot.cer -keystore FiddlerKeystore -alias Fiddler
次に、以下の設定を追加すれば完了です。
System.setProperty("javax.net.ssl.trustStore", "C:/anywhere/FiddlerKeystore"); System.setProperty("javax.net.ssl.trustStorePassword", "somepassword");
これで例外が発生せずに、キャプチャできると思います。
参考にしたのは、
eclipse - how to Capture https with fiddler, in java - Stack Overflowあたりです。
では。