HTTP Debugger
Le 11 septembre 2008, à 0:41 par Ulhume...

Éditions disponibles

Project license

Licence Publique Générale GNU Version 2

De quoi ça cause ?

L'objet de ce petit outil est de s'intercaler entre un client et un serveur pour écouter la discussion HTTP entre ces deux protagonistes.

L'idée est assez simple, le client au lieu de parler directement sur le port/adresse du serveur, va parler sur le port/adresse du debugger. Ce dernier analyse les trames, les formates, et les affichent puis les retransmet au serveur véritable. Ce dernier interprète la requête et renvois sa réponse, qui est elle aussi analysée, affichée, puis renvoyée au client. Et ainsi de suite.

Il existe quelque autres outils du même genre mais soit ils fonctionnaient en Proxy HTTT et le client ne le supporte pas toujours, soit ce sont de gros engins complexes comme WireShark utilisant une écoute en mode promisc, soit ils fonctionnement comme celui-ci mais en buggant pour mon usage.

Un aspect intéressant de ce debugger est de pouvoir faire du pas à pas sur le protocole. Une fois l'écoute du port en tant que "faux serveur" lancé, chaque étape (Request et Response) arrête le debugger. Pour poursuivre, il faut presser un bouton, ce qui permet de bien capter les trucs qui ne passent pas. Il y aussi un mode "auto" qui permet d'enchaîner les étapes jusqu'à ce que la dernière réponse soit donnée à la dernière requête.

Vu que l'application initiale de l'outil est le debuggage du serveur WebDAV pour Drupal, j'ai aussi ajouté un formatage de la charge utile XML ou HTML, ainsi que des champs HTTP de sorte à bien voir les éventuelles erreurs.

Comme toujours, c'est un outil perso mais si cela vous intéresse, les sources sont récupérables sur cette page et je suis là pour plus d'informations.

Commentaires

armetiz , le 11 September, 2008 - 08:01

On développe on développe Sticking out tongue
Pourquoi ne pas utiliser un client de type Wireshark ?

peck , le 11 September, 2008 - 08:46

L'utilisation d'un faux serveur pose problème, il faut faire des modif au niveau du /etc/hosts (et si on n'est pas root ?) ou au niveau du client changer (et si le client ne supporte pas ?) ou au niveau du dns.

D'où l'intérêt du proxy (et si le client ne supporte pas ?).

Ulhume, le 11 September, 2008 - 10:37

@armetiz Wireshark est très générique et les trames ne sont pas simples à interpréter. Cet outil permet juste d'arriver plus vite au but. De plus ce qui est intéressant avec cette approche c'est le mode pas à pas. Je bloque le client et le serveur tant que j'ai pas clické sur le bouton qui va bien, me laissant le temps de bien comprendre ce qui se passe.

Ce qui n'empêche que Wireshark reste un outil génial.

armetiz , le 11 September, 2008 - 10:40

@Ulhume, il faut avouer que Wireshark pour une approche rapide, n'est pas du tout parlant au niveau visuel.
Et le coups du pas à pas, c'est une très bonne chose que ton module fait.

Ulhume, le 11 September, 2008 - 10:40

@peck
Nan, je pense qu'il y a méprise. Aucune modification n'est à faire pour que cela fonctionne :

En temps normal:
Client ---> serveur:80

Avec le debugger
Client ---> debugger:8080 ---> serveur:80

La seule chose est donc de rajouter un :8080 dans l'URL sur le client. Si je me connectais avant sur :
http://mon_site/mon_chemin

Je vais juste remplacer par :
http://mon_site:8080/mon_chemin

Cela fonctionne avec tous les clients sans exception, et sans qu'il soit nécessaire d'ouvrir la moindre boîte de configuration. Je l'utilise pour debugger du webdav avec Drupal et Apache en tant que serveur, et Nautilus (GVFS/WebDAV), Konqueror (KIO/WebDAV), Cadaver et même vilain windows (partages web) sans aucun problème.

Ulhume, le 11 September, 2008 - 10:43

@armetiz merci Wink En tout cas il me rend bien service pour debugger ce maudit webdav. Je ne sais pas qui a pondu cette spec mais vaut mieux pas que je l'ai en face de moi pour l'instant ...

Dab, le 11 September, 2008 - 11:08

Sinon dabns le même style tu as les excellents http::proxy et http::recorder
http://articles.mongueurs.net/magazines/linuxmag75.html

Ulhume, le 11 September, 2008 - 11:14

@Dab sympa mais pas très visuel Wink

Au passage, c'est que chez moi que la page vers laquelle mène ton lien râme sous FireFox (3.0.1) ? Parce que ici c'est un bel exemple de performance comparée Gecko/WebKit...

Ulhume, le 12 September, 2008 - 02:00

"Petite" mise à jour :
* suppression de la double console pour adopter un format plus proche des RFC
* support de l'encodage HTTP/Chunk
* le mode auto qui permet d'enchaîner les étapes du protocole.

Et grâce à lui, j'ai enfin réussi à rendre mon serveur WebDAV compatible GVFS, un vrai bonheur Smiling

Poster un nouveau commentaire

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Les derniers bavardages...