
Высокопроизводительный HTTP/HTTPS-прокси на Rust с активной защитой: ограничение скорости, доступ на основе репутации, WAF (антибот, антиинъекция, защита путей), tarpit и наблюдение в реальном времени через TUI.
Propox — это высокопроизводительный, безопасный и наблюдаемый HTTP/HTTPS прокси, написанный на Rust. Он предназначен для обработки трафика высокой пропускной способности, одновременно активно защищая от злоупотребляющих клиентов с помощью продвинутых механизмов безопасности.
Propox не просто пропускает трафик; он защищает ваш бэкенд:
sqlmap, nikto, curl, python.UNION SELECT, OR 1=1, <script> в URL..env, .git, /admin.Пороги производительности настраиваются в src/proxy.rs:
const RATE_LIMIT_ReqPerSec: usize = 100;
const MAX_ERRORS_BEFORE_BAN: usize = 10;
Включает профессиональный терминальный интерфейс (построенный на Ratatui), отображающий:
Запустите прокси-сервер из корня проекта. Он слушает на 127.0.0.1:8100.
# Standard Mode (With Security & TUI)
cargo run --release
# View Full Traffic Logs
cargo run --release -- --full
# View Only Error Logs
cargo run --release -- --errors
# 🏎️ Benchmark Mode (Disables Security for Raw Performance Testing)
cargo run --release -- --benchmark
# 👻 Daemon Mode (Background)
# - No TUI, minimal resource usage.
# - Logs to Syslog (/var/log/syslog).
# - Auto-fallback to 'propox.log' if syslog is missing (common in WSL/Docker).
cargo run --release -- --daemon
В комплекте идет мощный инструмент нагрузочного тестирования, способный симулировать распределенные атаки.
cd propox-client
# Standard Load Test (100k requests, 400 concurrency)
cargo run --release -- nb=100000 cc=400 rq=ok ip=127.0.0.1
# ⚔️ Simulate Attack (Split-Test)
# Terminal 1: "Bad Actors" (90% Errors, 50 IPs) -> WILL BE BLOCKED/TARPITTED
cargo run --release -- ip=127.0.0.10 pool=50 ratio=0.9 nb=5000
# Terminal 2: "Good User" (100% Success) -> SHOULD BE UNAFFECTED
cargo run --release -- ip=127.0.0.200 pool=1 ratio=0.0 nb=5000
nb=N: Количество отправляемых запросов (всего).cc=N: Уровень конкурентности (одновременные потоки).ip=X.X.X.X: Начальный исходный IP (имитируется через локальную привязку).pool=N: Размер пула IP (имитирует N различных клиентов).ratio=0.X: Доля ошибок (0.0 = 100% OK, 1.0 = 100% ошибок).rq=ok|nok: Быстрая предустановка для успеха или 404.src/main.rs (TUI и цикл событий) + src/proxy.rs (логика трафика).Arc<Stats> с использованием атомиков и DashMap для потокобезопасности.mpsc, чтобы не блокировать плоскость данных прокси.handle_client. Если клиент заблокирован, запрос попадает в tokio::sleep (Tarpit).Создано с ❤️ на Rust.