
Propox é um proxy HTTP/HTTPS de alto desempenho, seguro e observável, escrito em Rust. Ele foi projetado para lidar com tráfego de alta vazão enquanto defende ativamente contra clientes abusivos usando mecanismos avançados de segurança.
O Propox não apenas encaminha tráfego; ele protege seu backend:
sqlmap, nikto, curl, python.UNION SELECT, OR 1=1, <script> em URLs..env, .git, /admin.Os limites de desempenho são configuráveis em src/proxy.rs:
const RATE_LIMIT_ReqPerSec: usize = 100;
const MAX_ERRORS_BEFORE_BAN: usize = 10;
Inclui uma Interface de Usuário em Terminal profissional (construída com Ratatui) exibindo:
Execute o servidor proxy a partir da raiz do projeto. Ele escuta em 127.0.0.1:8100.
# Modo Padrão (Com Segurança e TUI)
cargo run --release
# Ver Todos os Logs de Tráfego
cargo run --release -- --full
# Ver Apenas Logs de Erros
cargo run --release -- --errors
# 🏎️ Modo Benchmark (Desativa a Segurança para Teste de Desempenho Bruto)
cargo run --release -- --benchmark
# 👻 Modo Daemon (Segundo Plano)
# - Sem TUI, uso mínimo de recursos.
# - Registra no Syslog (/var/log/syslog).
# - Alterna automaticamente para 'propox.log' se o syslog não existir (comum em WSL/Docker).
cargo run --release -- --daemon
Está incluída uma poderosa ferramenta de teste de carga capaz de simular ataques distribuídos.
cd propox-client
# Teste de Carga Padrão (100 mil requisições, 400 de concorrência)
cargo run --release -- nb=100000 cc=400 rq=ok ip=127.0.0.1
# ⚔️ Simular Ataque (Teste Dividido)
# Terminal 1: "Atacantes" (90% de Erros, 50 IPs) -> SERÃO BLOQUEADOS/TARPITTED
cargo run --release -- ip=127.0.0.10 pool=50 ratio=0.9 nb=5000
# Terminal 2: "Usuário Bom" (100% de Sucesso) -> NÃO DEVE SER AFETADO
cargo run --release -- ip=127.0.0.200 pool=1 ratio=0.0 nb=5000
nb=N: Número de requisições a enviar (total).cc=N: Nível de concorrência (threads simultâneas).ip=X.X.X.X: IP de origem inicial (simulado via bind local).pool=N: Tamanho do pool de IPs (simula N clientes distintos).ratio=0.X: Taxa de erros (0.0 = 100% OK, 1.0 = 100% de Erros).rq=ok|nok: Predefinição rápida para Sucesso ou 404s.src/main.rs (TUI e Loop de Eventos) + src/proxy.rs (Lógica de Tráfego).Arc<Stats> usando Atomics e DashMaps para segurança entre threads.mpsc para evitar bloquear o plano de dados do proxy.handle_client. Se bloqueado, a requisição entra no Tarpit tokio::sleep.Construído com ❤️ em Rust.