Utiliser Fiddler avec Apache HttpClient 4.4 pour Java

Aperçu Fiddler

Aperçu Fiddler

Fiddler-logo-by-makautech

Quand vous développez des programmes d'automatisation Web, Fiddler de l'éditeur Telerik, un débogueur web pour Windows, peut vous être très utile ! Il vous permet de visualiser et forger des requêtes : entêtes, réponses, cookies ... et de vous présenter visuellement les réponses HTTP (HTML, JSON, XML, affichage brut ...) interceptées / envoyées.

Il intercepte tout le trafic web de la machine en se définissant comme proxy système sur le port 8080. Mais dans le cas d'applications .NET ou Java, il faut définir explicitement le proxy à utiliser dans la configuration de l'application. La tâche est relativement complexe en Java et mal documentée ... Voici la recette magique !

Code

RequestConfig configHttp;

HttpHost proxyHttp = new HttpHost("127.0.0.1", 8888, "http"); 
configHttp = RequestConfig.custom() 
  .setProxy(proxyHttp) 
  .build(); 

... 

HttpGet get = new HttpGet(url); 
get.setConfig(configHttp); 

...

httpclient.execute(get, context);
Exemple de requête avec le proxy Fiddler pour Apache HttpClient 4.4

Si vous souhaitez faire des HttpPost, la procédure est la même, il suffit de remplacer HttpGet.

Générer un keystore propre à l'application

  • Copiez C:\Program Files\Java\jdk1.8.0_40\jre\lib\security\cacerts dans un fichier mykeystore.jks
  • Récupérez le certificat de Fiddler dans son interface graphique : Tools\Fiddler Options\HTTPS\Export root certificate to Desktop
  • Ajoutez le certificat Fiddler au keystore :

C:\Program Files\Java\jdk1.8.0_40\bin>keytool.exe -keystore C:\...\mykeystore.jks -storepass changeit -importcert -alias FiddlerRoot -trustcacerts -file C:\Users\me\Desktop\FiddlerRoot.cer

Arguments JVM pour utiliser le keystore

-Djavax.net.ssl.trustStore=C:\...\mykeystore.jks

Par exemple, pour déboguer dans Eclipse, placez cet argument dans Run\Debug configurations\Arguments\VM Arguments

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.