#proxy-server #forward #connection #requests #client #port

bin+lib qproxy

用 Rust 编写的简单代理服务器

8 个版本

0.2.7 2024 年 4 月 12 日
0.2.6 2024 年 4 月 12 日
0.1.6 2024 年 4 月 9 日

#11 in #forward

每月 25 次下载

MIT 许可证

95KB
572

QProxy

QProxy 是一个简单的代理服务器,可以用来将请求转发到不同的服务器。它用 Rust 编写,并使用 socket 模块创建一个监听传入连接的服务器。当收到连接时,服务器读取请求并将其转发到指定的服务器。然后,将服务器的响应发送回客户端。

用法

cargo build --release
./target/release/qproxy <port> <proxy>

示例

./target/release/qproxy -p 8080 --proxy ip:port:username:password

代码示例


use clap::Parser;
use tokio::time;
use qproxy::{Config, ForwardProxy};

pub struct Config {
    #[arg(short, long, default_value_t = 8080)]
    pub port: i16,
    #[arg(long)]
    pub proxy: String,
}


#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = Config::parse();
    let server = ForwardProxy::try_from((config.port as u16, config.proxy))?;
    let server_clone = server.clone();
    tokio::spawn(async move {
        time::sleep(time::Duration::from_secs(4)).await;
        server_clone.stop();
    });
    server.start().map_err(|e| e.into())
}

配置 FireFox 代理

socks5://127.0.0.1:8080

image

依赖项

~8–20MB
~297K SLoC