#socks5 #proxy #server-client #proxy-server #tokio #async

socks5-proxy

socks5-proxy 是一个基于 tokio 的 socks5 库,提供服务器和客户端功能。

2 个版本

0.1.1 2021 年 4 月 20 日
0.1.0 2021 年 4 月 19 日

#19 in #socks5

MIT OR Apache-2.0 OR GPL-3.0-or-later

19KB
490

socks5-proxy

socks5-proxy 是一个基于 tokio 的 socks5 库,提供服务器和客户端功能。

使用方法

将此添加到您的 Cargo.toml 依赖项

socks5-proxy = "0.1"
tokio = { version = "1", features = ["full"] }
anyhow = "1.0"

服务器

use anyhow::Result;
use socks5_proxy::server;

#[tokio::main]
async fn main() -> Result<()> {
    let s = server::new("127.0.0.1:8080".parse()?, None)?;
    s.run().await?;

    Ok(())
}

客户端

use anyhow::Result;
use socks5_proxy::{client, Addr};
use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::main]
async fn main() -> Result<()> {
    let mut client = client::new(
        "localhost:1080",
        &Addr::HostnamePort("www.google.com:80".into()),
        None,
    )
    .await?;

    client.write_all(b"GET / HTTP/1.0\r\n\r\n").await?;
    let mut buffer = Vec::new();
    client.read_to_end(&mut buffer).await?;
    println!("{}", String::from_utf8_lossy(&buffer));

    Ok(())
}

改进

欢迎各种问题和 PR!

依赖项

~2.7–9.5MB
~77K SLoC