
Proxy d'interception HTTP en terminal avec TUI pour capturer, inspecter et modifier les requêtes en temps réel, ainsi qu'un Repeater pour renvoyer et ajuster les requêtes.
Proxy d'interception HTTP/HTTPS minimal en terminal.
https://github.com/user-attachments/assets/94f9c9ae-5842-4b19-9f5b-84dedb9430e6
Fonctionnalités · Installation · Prise en charge HTTPS · Utilisation · Fonctionnement
Roxy est un proxy d'interception léger pour HTTP et HTTPS doté d'une interface utilisateur en terminal (TUI) écrite en Rust. Il capture, inspecte et modifie les requêtes en temps réel, avant qu'elles n'atteignent le serveur, directement depuis votre terminal. Considérez-le comme une alternative minimale et native au terminal à Burp Suite pour l'analyse du trafic au quotidien.
CONNECT, avec génération automatique des certificats.$EDITOR.--host et --port, et décidez quels hôtes sont interceptés ou transmis.Pour le compiler depuis les sources, vous avez besoin de :
| Prérequis | Remarques |
|---|---|
| Rust 1.85 ou plus récent | Vérifiez avec rustc --version. |
| Un compilateur C | gcc ou clang. |
$EDITOR | Nécessaire uniquement pour la fonctionnalité d'édition des requêtes. |
git clone https://github.com/vid4l-07/Roxy.git
cd Roxy
cargo build --release
Le binaire sera disponible à l'emplacement target/release/roxy.
cargo install --git https://github.com/vid4l-07/Roxy.git
Le binaire sera disponible à l'emplacement ~/.cargo/bin/roxy.
[!note] Si le passthrough HTTPS est activé, la prise en charge HTTPS n'est pas nécessaire.
| Élément | Emplacement | Remarques |
|---|---|---|
| Certificat et clé de la CA | ~/.config/roxy/ca.crt, ~/.config/roxy/ca.key | Créés à la demande, lors de la première interception d'une requête HTTPS. |
| Certificat feuille par hôte | /tmp/roxy_certs/<host>.crt, /tmp/roxy_certs/<host>.key | Émis à la demande et mis en cache. Le cache est vidé chaque fois qu'une nouvelle CA est générée. |
Roxy génère une CA auto-signée nommée Roxy CA.
[!Warning] Chaque requête HTTPS échouera à la validation tant que la CA n'est pas approuvée par le client.
Installez ~/.config/roxyca.crt dans votre navigateur ou votre système.
Vous pouvez également la télécharger depuis la page web intégrée à http://roxy (ou http://<host>:<port>).
Firefox / Chrome :
Settings → Privacy & Security → Certificates → View Certificates.~/.config/roxy/ca.crt.Magasin de CA système Pour des outils comme curl.
# Debian / Ubuntu
sudo cp ~/.config/roxy/ca.crt /usr/local/share/ca-certificates/roxy.crt
sudo update-ca-certificates
# Fedora / RHEL / Arch
sudo cp ~/.config/roxy/ca.crt /etc/pki/ca-trust/source/anchors/roxy.crt
sudo update-ca-trust extract
Pour la supprimer à nouveau, effacez le fichier et relancez la commande correspondante.
rm -rf ~/.config/roxy
Roxy génère une nouvelle CA lors de la prochaine requête HTTPS et supprime tous les certificats feuilles qu'elle avait mis en cache. Vous devrez approuver la nouvelle CA à nouveau. N'oubliez pas de supprimer l'ancienne de votre navigateur et du magasin système.
| Option | Description |
|---|---|
-h, --host <HOST> | Hôte d'écoute. Par défaut 127.0.0.1. |
-p, --port <PORT> | Port d'écoute. Par défaut 8080. |
--passthrough | Tunnelise le HTTPS sans le déchiffrer, pour tous les hôtes. |
--passthrough-host <HOSTS> | Identique à --passthrough, mais uniquement pour les hôtes listés. |
--intercept-https <HOSTS> | Intercepte ces hôtes même en mode passthrough. |
--help | Affiche le message d'aide. |
# Pass every host through untouched except the one you want to inspect
roxy --passthrough --intercept-https <HOSTS>
| Touche | Action |
|---|---|
q | Quitter |
Tab | Basculer entre les écrans Proxy et Repeater |
? | Ouvrir la fenêtre d'aide de l'écran actuel |
| Touche | Action |
|---|---|
i | Activer/Désactiver l'interception |
Enter | Transférer la requête interceptée |
e | Modifier la requête dans un éditeur externe |
u | Annuler la modification |
U | Rétablir la modification |
r | Envoyer la requête au Repeater |
↑/k | Défiler vers le haut |
↓/j | Défiler vers le bas |
| Touche | Action |
|---|---|
Enter | Envoyer la requête actuelle |
e | Modifier la requête dans un éditeur externe |
u | Annuler la modification |
U | Rétablir la modification |
r | Renommer l'onglet actuel |
n | Onglet Repeater suivant |
p | Onglet Repeater précédent |
x | Fermer l'onglet actuel |
z | Activer/Désactiver le zoom sur le panneau sélectionné |
↑/k | Défiler vers le haut |
↓/j | Défiler vers le bas |
←/h / →/l | Basculer le focus entre les panneaux Request et Response |
H | Réduire la largeur du panneau Request |
L | Augmenter la largeur du panneau Request |
Lorsque vous appuyez sur e, la requête brute est écrite dans un fichier temporaire et ouverte avec le binaire défini par $EDITOR. Modifiez-la, enregistrez et quittez.
La requête modifiée remplace l'originale et Content-Length est recalculé automatiquement.