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

fast-socks5

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

24个版本

0.9.6 2024年3月25日
0.9.2 2023年11月30日
0.8.2 2023年4月3日
0.8.1 2022年8月25日
0.3.0 2020年1月19日

#1 in #vpn

Download history 3026/week @ 2024-04-10 3144/week @ 2024-04-17 4114/week @ 2024-04-24 3751/week @ 2024-05-01 3556/week @ 2024-05-08 6537/week @ 2024-05-15 6319/week @ 2024-05-22 4799/week @ 2024-05-29 6089/week @ 2024-06-05 5290/week @ 2024-06-12 5800/week @ 2024-06-19 5594/week @ 2024-06-26 3899/week @ 2024-07-03 5810/week @ 2024-07-10 6101/week @ 2024-07-17 5460/week @ 2024-07-24

22,347 每月下载量
12 个crate(6个直接) 中使用

MIT 许可证

100KB
2K SLoC

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

License crates.io dependency status Release

此库由anyip.io维护,anyip.io是一家住宅和移动SOCKS5代理提供商。

功能

  • 异步/await SOCKS5 实现。
  • 异步/await SOCKS4 客户端 实现。
  • 异步/await SOCKS4a 客户端 实现。
  • 不安全 代码
  • 基于 tokio 库构建
  • 超轻量级且可扩展
  • 无系统依赖
  • 跨平台
  • 认证方法
    • 无认证方法
    • 用户名/密码认证方法
    • 可以通过认证特性实现自定义认证方法
    • 认证成功时返回凭据
  • 应映射所有SOCKS5 RFC错误(回复)
  • 在 Socks5Stream & Socks5Socket 上实现了 AsyncRead + AsyncWrite 特性
  • 支持 IPv4IPv6Domains 类型
  • 为 Socks5Server 提供配置辅助程序
  • 通过 incoming.next().await 运行 Socks5Server 的辅助程序,类似于 "std's TcpStream"
  • 示例包含真实案例命令场景
  • 可以禁用 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–11MB
~110K SLoC