Mise à jour STRACE / HTTPREPLAY

Une nouvelle version de STRACE et HTTPREPLAY va bientôt être disponible sur le site Microsoft. En attendant cette nouvelle version, vous pouvez télécharger ces outils ici :

La nouvelle version apportera les nouveautés suivantes :

  • Ajout du support x64 pour STRACE (il est possible de faire cohabiter les versions 32 bits et 64 bits)
  • Ajout du support IE8 pour STRACE (les onglets de IE8 pouvant correspondre à des processus fils séparés, STRACE a été modifié pour générer une trace de ces processus)
  • Amélioration du rapport HTTPREPLAY
  • Changement du format « index.replay » pour pouvoir rejouer toute méthode HTTP (PUT , PROPFIND et autres méthode WEBDAV...)

J'en profite pour vous rappeler que STRACE et HTTPREPLAY sont des outils complémentaires qui peuvent vous aider dans de multiples scénarios que nous allons détailler…

STRACE permet de générer une trace des appels sockets et crypto d'un processus spécifique (en général le processus IEXPLORE.EXE correspondant à Internet Explorer). La trace peut ensuite être utilisée pour analyse par HTTPREPLAY et être rejouée par ce même outil. Vous avez des soucis de connexion ou de performance avec votre proxy ou site web ? Vous avez des erreurs de script ou vous souhaitez bâtir un scénario de reproduction nécessitant normalement une infrastructure complexe ? Générez un log STRACE d'un simple clic puis analysez et rejouez-le, sans même avoir de connexion internet !

Il existe aujourd'hui de nombreux et excellents outils de trace HTTP tels que Fiddler, Httpwatch, Network Monitor, Wireshark… A la différence de ces outils, STRACE/HTTPREPLAY permet :

  • d'analyser le trafic HTTP envoyé dans une connexion SSL en toute simplicité, sans avoir besoin d'utiliser un certificat de test ou de fournir la clé privée du certificat utilisé pour déchiffrer le trafic. Le rapport HTTPREPLAY étant généré au format HTML, vous pouvez donc l'attacher à un mail et l'envoyer pour discussion et analyse par des ingénieurs qualifiés

    Ce rapport vous montrera immédiatement certains problèmes (lenteur du serveur, mauvais « content-length », HTTP Keep-Alive désactivé…etc) et vous fournira des statistiques HTTP détaillées

  • de rejouer localement le trafic capturé. Vous pouvez ainsi déboguer une application sans avoir besoin du site et de l'infrastructure associée

  • d'extraire et modifier les requêtes et les réponses présentes dans une trace. Vous pouvez ainsi corriger un problème et valider que votre correction fonctionne.

Vous voulez tester STRACE et HTTPREPLAY ? C'est parti !

Après avoir installé l'outil, il suffit de cliquer sur l'icône STRACE.CMD se trouvant dans le dossier STRACE sur le bureau :

Internet Explorer est alors lancé et un fichier STRACE_IEXPLORE_PID_XXXX.LOG est créé sur le bureau :

Pour éviter toute interaction avec des objets déjà présents en cache, il est recommandé de vider le cache IE. Cela permet d'obtenir une trace contenant l'intégralité des objets (pages HTML, images…). Il ne vous reste plus qu'à naviguer vers le/les site(s) que vous voulez « capturer ». Quittez ensuite Internet Explorer. C'est fini : vous avez généré votre premier log STRACE !

Mais que faire avec cette trace ? Vous avez 2 choix possibles :

  • soit vous ouvrez la trace générée avec NOTEPAD et vous recherchez, par exemple, «GET »

  • soit vous installez HTTPREPLAY afin d'analyser/rejouer la trace. C'est cette solution que nous choisirons ici…

Apres voir installé HTTPREPLAY, faites un clic droit sur le log STRACE généré précédemment puis choisissez « Ouvrir avec » et spécifiez «c:\program files\HTTPREPLAY\HTTPREPLAY.EXE » comme application. Le rapport suivant (HTTPREPLAY.HTM) sera alors généré sur le bureau :

Le rapport se lit dans l'ordre chronologique et se termine par des statistiques globales. Je ne vais pas m'étendre sur la lecture du rapport mais toute personne un peu familière avec HTTP pourra facilement se rendre compte d'éventuels problèmes (Keep-Alive HTTP non activé, blocage IE causé par un mauvais « content-length », lenteur des réponses…etc)

Lorsque le rapport a été généré, HTTPREPLAY reste « actif » dans une fenêtre CMD afin de vous permettre de rejouer le « scenario » que constitue votre trace:

Pour que HTTPREPLAY puisse rejouer un log STRACE, il suffit de s'assurer que votre proxy Internet Explorer est configuré sur localhost :81 (par défaut, l'outil fera cette opération pour vous)  :

Ensuite, basculez sur le rapport et cliquez sur le premier lien :

Internet Explorer vous affiche alors la page correspondant à l'URL sélectionnée - ici, le site Microsoft - en se basant uniquement sur les objets présents dans la trace (sans jamais accéder à Internet). La fenêtre HTTPREPLAY vous montrera les requêtes et les réponses envoyées :

Pour quitter HTTPREPLAY, appuyez sur <Echap> puis vérifiez que votre proxy IE a retrouvé ses valeurs initiales.

Si vous le souhaitez, vous pouvez extraire les requêtes et réponses dans des fichiers séparés :

C:\Program Files\HTTPREPLAY>HTTPREPLAY "C:\Documents and Settings\Administrator\Desktop\STRACE_IEXPLORE_PID_996_28102008_172641.LOG" /XTRACT

69 request(s)/response(s) extracted (use /USEFILES switch to replay from files)

La commande "dir *.replay*" vous montrera les requêtes et réponses extraites. Un fichier "index.replay" est aussi créé afin de pouvoir rejouer un scenario en se basant sur les fichiers extraits. Voici un exemple du contenu du fichier index.replay :

GET,https://www.microsoft.com/,response0001.replay

GET,https://www.microsoft.com/en/us/default.aspx,response0002.replay

GET,https://www.microsoft.com/en/us/shared/core/2/js/js.ashx?s=Csp;shared,response0003.replay

Vous pouvez changer la méthode, l'URL demandée ou la réponse puis rejouer le tout en utilisant la commande :

C:\Program Files\HTTPREPLAY>HTTPREPLAY /USEFILES

Le rapport généré va alors être bâti en se basant sur le fichier "index.replay" et non plus sur le log STRACE. Attention cependant au point suivant: si vous changez le contenu d'une réponse, pensez à ajuster ou, plus simplement, à enlever le header «Content-Length » (si ce header est absent, HTTPREPLAY fermera la connexion TCP après avoir envoyé l'intégralité de la réponse) :

D'autres astuces peuvent être mises en place pour faciliter la modification des réponses rejouées comme, par exemple, l'utilisation de « HTTPREPLAY-FILELINK: ». Reportez vous au fichier README fourni avec l'outil pour plus de détails…

@ Bientôt

Emmanuel Boersma et L'équipe de support IIS Microsoft France

HTTPREPLAY.HTM