#async-await #sock #async #proxy #io #vpn

reacher-fast-socks5

使用 Rust async/.await (tokio) 编写的快速 SOCKS5 客户端/服务器实现

1 个不稳定版本

0.8.1 2022 年 8 月 10 日

#6#socks

Download history 32/week @ 2024-03-11 33/week @ 2024-03-18 45/week @ 2024-03-25 60/week @ 2024-04-01 35/week @ 2024-04-08 34/week @ 2024-04-15 34/week @ 2024-04-22 53/week @ 2024-04-29 30/week @ 2024-05-06 46/week @ 2024-05-13 53/week @ 2024-05-20 46/week @ 2024-05-27 33/week @ 2024-06-03 27/week @ 2024-06-10 23/week @ 2024-06-17 32/week @ 2024-06-24

123 每月下载次数

MIT 许可证

93KB
2K SLoC

使用 async/.await 的 SOCKS5 客户端/服务器库

License crates.io dependency status Release

特性

  • 一个 async/.await SOCKS5 实现。
  • 一个 async/.await SOCKS4 客户端 实现。
  • 一个 async/.await SOCKS4a 客户端 实现。
  • 不安全 代码
  • 基于 tokio 库构建
  • 极轻量级且可扩展
  • 无系统依赖
  • 跨平台
  • 认证方法
    • 无认证方法
    • 用户名/密码认证方法
    • 可以通过 Authentication Trait 实现自定义认证方法
  • 映射所有 SOCKS5 RFC 错误(响应)
  • Socks5Stream & Socks5Socket 上实现了 AsyncRead + AsyncWrite 特性
  • 支持 IPv4IPv6Domains 类型
  • Socks5Server 的配置助手
  • 通过 incoming.next().await 以类似于 "std's TcpStream" 的方式运行 Socks5Server 的助手
  • 示例包含真实案例命令场景
  • 可以禁用 DNS 解析
  • 可以跳过认证/握手过程,这将直接处理命令请求(在当前已认证环境中,这有助于节省无用的往返次数)
  • 可以禁用命令执行(如果您只想将请求转发到不同的服务器,这很有用)

安装

crates.io 中打开。

示例

请检查 examples 目录。

# Run client
RUST_LOG=debug cargo run --example client -- --socks-server 127.0.0.1:1337 --username admin --password password -a perdu.com -p 80

# Run server
RUST_LOG=debug cargo run --example server -- --listen-addr 127.0.0.1:1337 password -u admin -p password

# Test it with cURL
curl -v --proxy socks5://admin:[email protected]:1337 https://ipapi.co/json/

待办事项

  • 必须实现测试
  • 更好的 Rust 文档
  • 未实现 UDP 绑定命令

受以下启发

感谢所有这些 SOCKS5 项目

进一步考虑

依赖关系

~3–15MB
~138K SLoC