Proxy de déverrouillage HTTP
Un proxy d'interception HTTP/HTTPS léger et un outil d'analyse de trafic écrit en Go, avec une interface utilisateur web pour inspecter, filtrer, colorer et annoter le trafic capturé en temps réel.


Aperçu
HTTP Breakout Proxy agit à la fois comme un proxy MITM HTTP et HTTPS et comme un outil de visualisation en direct.
Il capture les requêtes et réponses entre deux composants logiciels, permettant aux développeurs de :
- Inspecter les en-têtes, les corps et les détails temporels de chaque requête et réponse.
- Organiser, filtrer et persister les données capturées.
- Mettre en évidence les requêtes en fonction de règles de couleur définies par l'utilisateur.
- Mettre en pause ou reprendre la capture dynamiquement.
- Visualiser la chronologie des requêtes sous forme de diagramme de Gantt pour analyser les phases de performance.
Le proxy intègre une interface utilisateur complète accessible depuis n'importe quel navigateur web moderne, permettant une analyse immédiate et en temps réel sans outils externes.
Fonctionnalités
🔍 Capture et inspection
- Intercepte le trafic HTTP et HTTPS (avec prise en charge du certificat CA MITM).
- Affiche toutes les métadonnées, en-têtes et corps des requêtes et réponses.
- Prend en charge la troncature pour les corps très volumineux.
💾 Persistance
- Les captures et les règles de couleur sont stockées dans
captures.json (ou un fichier spécifié).
- Recharge automatiquement l'état au démarrage et enregistre périodiquement sur le disque.
- Les règles de couleur par défaut sont générées lors de la première exécution si aucune n'existe.
🖥️ Interface utilisateur Web
- Interface web embarquée et réactive (servie par le proxy lui-même).
- Affiche les captures dans une liste défilante avec des indicateurs de couleur.
- Panneau de détails montrant :
- En-têtes/corps de la requête et de la réponse
- Répartitions temporelles
- Notes modifiables
- Graphique de performance de type Gantt pour les phases de connexion
🎨 Règles de couleur
- Définir des surlignages conditionnels pour les captures en utilisant une syntaxe de filtre flexible :
- Exemple :
status:4 status:5 → surligne les erreurs HTTP
- Exemple :
url:/api/ → surligne les requêtes API
- Exemple :
/\.css$/ → correspondance regex sur l'URL
- Chaque règle comprend :
- Nom, couleur, expression de correspondance, priorité et note
- La correspondance avec la priorité la plus élevée l'emporte.
- Gérée de manière interactive via une interface modale avec aperçus en direct.
- Persistée entre les sessions.
⏸️ Contrôle de la capture
- Bouton Pause/Reprendre permettant d'arrêter la collecte de nouvelles captures sans arrêter le proxy.
- Utile pour se concentrer sur un ensemble de données fixe ou isoler un comportement spécifique.
- Chaque capture comprend une temporisation détaillée de la connexion :
- Résolution DNS
- Connexion TCP
- Établissement TLS
- Traitement serveur
- Lecture de la réponse
- Affichée sous forme de diagramme de Gantt dans le panneau de détails.
- L'échelle s'arrondit automatiquement à la seconde la plus proche pour plus de lisibilité.
🧭 Filtrage et recherche
- Boîte de filtrage en temps réel prenant en charge :
- Filtres basés sur des champs (
method:GET, status:404, header:Content-Type=application/json)
- Expressions régulières (
/login/)
- Termes combinés avec une sémantique ET/OU
- Correspondance partielle et insensible à la casse.
- Le filtre s'applique à la fois à la liste des captures et au surlignage coloré.
- L'historique de recherche est stocké localement dans le navigateur.
🧹 Gestion
- Supprimer des captures individuelles ou effacer toutes les captures via l'interface.
- Les règles et les notes sont persistées avec les captures.
🧩 Utilitaires d'exportation
- Copier une capture sous forme de :
- Commande
curl (formatée pour le terminal)
- Extrait de code
python requests (représentation JSON propre)
- Télécharger les corps de réponse directement depuis l'interface.
Utilisation en ligne de commande
httpbreakout -l 127.0.0.1:8080
Démarrage rapide
Construction (à partir des sources)
git clone https://github.com/jbsouthe/http-breakout-proxy.git
cd http-breakout-proxy
go build -o http-breakout-proxy
Cela produit un exécutable unique contenant le proxy compilé et les ressources de l'interface utilisateur embarquée.
Exécution (par défaut)
# exécution avec les valeurs par défaut (proxy + interface)
./http-breakout-proxy
Par défaut, le binaire écoute sur 127.0.0.1:8080 pour le proxy (et optionnellement l'interface — voir les options CLI). Ouvrez l'interface dans un navigateur pour inspecter les captures.
Exemple : utilisation du proxy avec curl
# envoi d'une requête HTTPS via le proxy (le proxy écoute sur 127.0.0.1:8080)
curl -x http://127.0.0.1:8080 https://example.com
Le trafic capturé apparaîtra dans l'interface web.
Arguments de ligne de commande
| Indicateur | Valeur par défaut | Description |
|---|
-l | 127.0.0.1:8080 | Adresse d'écoute pour le proxy ainsi que l'interface utilisateur. |
-mitm | true | Active le mode d'interception Homme du Milieu (MITM) HTTPS (génère une autorité de certification locale pour intercepter TLS). |
-ca | ./ca | Répertoire dans lequel le certificat et la clé de l'autorité de certification générée sont stockés lorsque MITM est activé et la persistance choisie. |
-f | ./captures.json | Chemin ou répertoire optionnel pour persister les captures sur le disque (par exemple ./captures.json). |
-max-body | 1048576 | Nombre maximal d'octets (par corps) à stocker/afficher ; les corps plus volumineux sont tronqués avec un indicateur. |
-buffer-size | 1000 | Capacité du tampon circulaire pour les captures en mémoire. |
-v | false | Active la journalisation détaillée pour le débogage. |
Utilisez ./http-breakout-proxy -h pour lister les options disponibles et les descriptions d'utilisation.
Aperçu de l'interface Web
L'interface est optimisée pour les flux de travail d'investigation.