Propox 是一个高性能、安全且可观测的 HTTP/HTTPS 代理,使用 Rust 编写。它旨在处理高吞吐量流量,同时通过高级安全机制主动防御恶意客户端。
Propox 不仅仅转发流量,它还保护您的后端:
sqlmap、nikto、curl、python 的 User-Agent。UNION SELECT、OR 1=1、<script>。.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。
# 标准模式(启用安全与 TUI)
cargo run --release
# 查看完整流量日志
cargo run --release -- --full
# 仅查看错误日志
cargo run --release -- --errors
# 🏎️ 基准测试模式(禁用安全,用于原始性能测试)
cargo run --release -- --benchmark
# 👻 守护进程模式(后台)
# - 无 TUI,最小资源占用。
# - 日志记录到 Syslog (/var/log/syslog)。
# - 如果缺少 syslog(常见于 WSL/Docker),自动回退到 'propox.log'。
cargo run --release -- --daemon
包含一个强大的负载测试工具,能够模拟分布式攻击。
cd propox-client
# 标准负载测试(10万请求,400并发)
cargo run --release -- nb=100000 cc=400 rq=ok ip=127.0.0.1
# ⚔️ 模拟攻击(分割测试)
# 终端1:"恶意用户"(90%错误,50个IP)-> 将被阻止/投入蜜罐
cargo run --release -- ip=127.0.0.10 pool=50 ratio=0.9 nb=5000
# 终端2:"好用户"(100%成功)-> 应不受影响
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% 成功,1.0 = 100% 错误)。rq=ok|nok:快速预设为成功或 404。src/main.rs(TUI 与事件循环)+ src/proxy.rs(流量逻辑)。Arc<Stats> 结构体,使用原子操作和 DashMap 实现线程安全。mpsc 通道接收日志,以避免阻塞代理数据平面。handle_client 开始时执行。如果被阻止,请求将进入 tokio::sleep 蜜罐。用 ❤️ 在 Rust 中构建。