oproxy
oproxy è un proxy locale HTTP, HTTPS e SOCKS5 per ispezionare, riprodurre e modificare il traffico.
È pensato per sviluppatori che testano browser, CLI, app mobili, client API, servizi e suite di test sulla propria macchina o in un container Docker locale.
Caratteristiche
- Cattura il traffico HTTP e HTTPS dopo aver aggiunto la CA locale di oproxy ai certificati fidati.
- Visualizza richieste, risposte, header, body, stato, tempi, tag, note e dati selezionati dagli inspector.
- Riproduce le richieste catturate e le apre in Compose.
- Costruisce richieste manuali con header, parametri di query, autenticazione, body grezzi, variabili, raccolte ed esportazione in cURL.
- Esporta le catture come HAR o snippet generati in cURL, Fetch e Python.
- Modifica il traffico con set di regole, map-remote, map-local, regole di accesso, throttling, breakpoint, risposte mock, override DNS, filtri di cattura, script Lua e concatenamento di proxy upstream.
- Usa l'Assistant autenticato per ispezionare lo stato e preparare modifiche confermate al proxy tramite un modello di chat compatibile con OpenAI.
- Esegui da sorgente o Docker con volumi persistenti per i materiali della CA e lo stato locale.
Demo
Breve video dimostrativo
Avvio rapido
Docker
docker run --rm \
--name oproxy \
-p 127.0.0.1:8080:8080 \
-p 127.0.0.1:8443:8443/udp \
-e OPROXY_BIND_HOST=0.0.0.0 \
-e OPROXY_MITM_ENABLED=true \
-e OPROXY_HTTP3_ENABLED=true \
-e OPROXY_HTTP3_PORT=8443 \
-e OPROXY_ALLOW_REMOTE_ADMIN=true \
-e OPROXY_ADMIN_TOKEN=<change-me-to-a-strong-secret> \
-v oproxy-certs:/app/certs \
-v oproxy-storage:/app/storage \
ghcr.io/sauravrao637/oproxy:latest
Apri http://127.0.0.1:8080 e accedi con il token.
Oppure compila localmente:
docker build -t oproxy:latest .
Docker Compose
docker compose up --build
Il file Compose incluso utilizza il networking bridge con porte pubblicate su loopback, mantiene persistenti /app/certs e /app/storage e imposta OPROXY_BIND_HOST=0.0.0.0. Gli utenti Linux possono facoltativamente abilitare il networking host.
Sorgente
Requisiti:
- Rust 1.85 o successivo
- Node.js 22 o successivo
- Yarn tramite Corepack
corepack enable
yarn --cwd src/design install --frozen-lockfile
yarn --cwd src/design build
cargo run --release
Apri http://127.0.0.1:8080.
Prima richiesta
curl -x http://127.0.0.1:8080 http://example.com
La richiesta appare nella vista Sessioni.
Prima cattura HTTPS
curl http://127.0.0.1:8080/admin/ca -o oproxy-ca.crt
curl --cacert oproxy-ca.crt -x http://127.0.0.1:8080 https://example.com
Per la cattura HTTPS nel browser, installa la CA da http://127.0.0.1:8080/admin/ca nel trust store del browser o del sistema operativo.
Cosa può fare
- Agire come proxy HTTP forward su
OPROXY_PORT/port, predefinito 8080.
- Servire l'interfaccia di gestione locale e l'API dallo stesso listener.
- Intercettare il traffico HTTPS CONNECT quando il MITM è abilitato e il client si fida della CA generata.
- Ascoltare opzionalmente il traffico SOCKS5 CONNECT su
socks5_port.
- Eseguire opzionalmente un secondo listener TLS con
https_port.
- Catturare sessioni live in memoria con conservazione limitata di sessioni e body.
- Salvare e caricare sessioni esplicitamente con endpoint di amministrazione.
- Esportare snippet HAR, cURL, Fetch e Python, con dati oscurati per impostazione predefinita.
- Importare file HAR e dati di sessione JSON di oproxy.
- Trasmettere notifiche di modifica delle sessioni con eventi server-sent.
- Ispezionare i metadati dei frame JWT, GraphQL, gRPC e WebSocket quando viene catturato traffico corrispondente.
Casi d'uso
- Eseguire il debug di una richiesta da browser o CLI senza modificare il codice dell'applicazione.
- Riprodurre una richiesta catturata dopo aver modificato header o body in Compose.
- Testare un frontend con risposte mock o file fixture locali.
- Instradare un sottoinsieme di traffico verso un servizio di staging.
- Riprodurre risposte lente o con larghezza di banda limitata.
- Mettere in pausa richieste o risposte corrispondenti prima che continuino.
- Validare il comportamento di un client quando le richieste vengono bloccate, reindirizzate o riscritte.
Screenshot


Documentazione
Licenza
MIT