
Terminalbasierter HTTP-Intercepting-Proxy mit TUI zum Erfassen, Inspizieren und Modifizieren von Anfragen in Echtzeit, plus ein Repeater zum erneuten Senden und Anpassen von Anfragen.
Minimaler terminalbasierter HTTP/HTTPS-Intercepting-Proxy.
https://github.com/user-attachments/assets/94f9c9ae-5842-4b19-9f5b-84dedb9430e6
Funktionen · Installation · HTTPS-Unterstützung · Verwendung · Funktionsweise
Roxy ist ein leichtgewichtiger Intercepting-Proxy für HTTP und HTTPS mit einer Terminal-Benutzeroberfläche (TUI), geschrieben in Rust. Er fängt Anfragen in Echtzeit ab, inspiziert und modifiziert sie, bevor sie den Server erreichen – direkt aus deinem Terminal heraus. Betrachte es als minimale, terminalnative Alternative zu Burp Suite für die alltägliche Verkehrsanalyse.
CONNECT, mit automatisch generierten Zertifikaten.$EDITOR bearbeiten.--host und --port fest und entscheide, welche Hosts abgefangen oder durchgeleitet werden.Um es aus dem Quellcode zu bauen, benötigst du:
| Voraussetzung | Hinweise |
|---|---|
| Rust 1.85 oder neuer | Prüfe mit rustc --version. |
| Einen C-Compiler | gcc oder clang. |
$EDITOR | Nur für die Funktion zum Bearbeiten von Anfragen erforderlich. |
git clone https://github.com/vid4l-07/Roxy.git
cd Roxy
cargo build --release
Die Binärdatei ist unter target/release/roxy verfügbar.
cargo install --git https://github.com/vid4l-07/Roxy.git
Die Binärdatei ist unter ~/.cargo/bin/roxy verfügbar.
[!note] Wenn HTTPS-Passthrough aktiviert ist, ist HTTPS-Unterstützung nicht erforderlich.
| Was | Speicherort | Hinweise |
|---|---|---|
| CA-Zertifikat und -Schlüssel | ~/.config/roxy/ca.crt, ~/.config/roxy/ca.key | Werden verzögert erstellt, beim ersten abgefangenen HTTPS-Request. |
| Blattzertifikat pro Host | /tmp/roxy_certs/<host>.crt, /tmp/roxy_certs/<host>.key | Werden bei Bedarf ausgestellt und zwischengespeichert. Der Cache wird gelöscht, sobald eine neue CA generiert wird. |
Roxy generiert eine selbstsignierte CA namens Roxy CA.
[!Warning] Jede HTTPS-Anfrage wird die Validierung fehlschlagen, bis die CA vom Client als vertrauenswürdig eingestuft wird.
Installiere ~/.config/roxyca.crt in deinem Browser oder System.
Du kannst sie auch von der integrierten Webseite unter http://roxy (oder http://<host>:<port>) herunterladen.
Firefox / Chrome:
Settings → Privacy & Security → Certificates → View Certificates.~/.config/roxy/ca.crt aus.System-CA-Speicher Für Tools wie 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
Um sie wieder zu entfernen, lösche die Datei und führe den entsprechenden Befehl erneut aus.
rm -rf ~/.config/roxy
Roxy generiert bei der nächsten HTTPS-Anfrage eine neue CA und entfernt jedes zwischengespeicherte Blattzertifikat. Du musst der neuen CA erneut vertrauen. Denke daran, die alte aus deinem Browser und System-Speicher zu entfernen.
| Option | Beschreibung |
|---|---|
-h, --host <HOST> | Listening-Host. Standardmäßig 127.0.0.1. |
-p, --port <PORT> | Listening-Port. Standardmäßig 8080. |
--passthrough | HTTPS tunneln, ohne es zu entschlüsseln, für jeden Host. |
--passthrough-host <HOSTS> | Wie --passthrough, aber nur für die aufgelisteten Hosts. |
--intercept-https <HOSTS> | Diese Hosts auch im Passthrough-Modus abfangen. |
--help | Gibt die Hilfemeldung aus. |
# Pass every host through untouched except the one you want to inspect
roxy --passthrough --intercept-https <HOSTS>
| Taste | Aktion |
|---|---|
q | Beenden |
Tab | Zwischen Proxy- und Repeater-Ansicht wechseln |
? | Hilfe-Popup für die aktuelle Ansicht öffnen |
| Taste | Aktion |
|---|---|
i | Intercept EIN/AUS umschalten |
Enter | Die abgefangene Anfrage weiterleiten |
e | Anfrage im externen Editor bearbeiten |
u | Bearbeitung rückgängig machen |
U | Bearbeitung wiederherstellen |
r | Anfrage an Repeater senden |
↑/k | Nach oben scrollen |
↓/j | Nach unten scrollen |
| Taste | Aktion |
|---|---|
Enter | Die aktuelle Anfrage senden |
e | Anfrage im externen Editor bearbeiten |
u | Bearbeitung rückgängig machen |
U | Bearbeitung wiederherstellen |
r | Aktuellen Tab umbenennen |
n | Nächster Repeater-Tab |
p | Vorheriger Repeater-Tab |
x | Aktuellen Tab schließen |
z | Zoom auf das fokussierte Panel umschalten |
↑/k | Nach oben scrollen |
↓/j | Nach unten scrollen |
←/h / →/l | Fokus zwischen Request- und Response-Panel umschalten |
H | Breite des Request-Panels verringern |
L | Breite des Request-Panels erhöhen |
Wenn du e drückst, wird die rohe Anfrage in eine temporäre Datei geschrieben und mit der durch $EDITOR definierten Binärdatei geöffnet. Bearbeite sie, speichere und beende.
Die modifizierte Anfrage ersetzt das Original und Content-Length wird automatisch neu berechnet.