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
22,347 每月下载量
在 12 个crate(6个直接) 中使用
100KB
2K SLoC
使用async/.await的SOCKS5客户端/服务器库
此库由anyip.io维护,anyip.io是一家住宅和移动SOCKS5代理提供商。
功能
- 异步/await SOCKS5 实现。
- 异步/await SOCKS4 客户端 实现。
- 异步/await SOCKS4a 客户端 实现。
- 无 不安全 代码
- 基于
tokio
库构建 - 超轻量级且可扩展
- 无系统依赖
- 跨平台
- 认证方法
- 无认证方法
- 用户名/密码认证方法
- 可以通过认证特性实现自定义认证方法
- 认证成功时返回凭据
- 应映射所有SOCKS5 RFC错误(回复)
- 在 Socks5Stream & Socks5Socket 上实现了
AsyncRead + AsyncWrite
特性 - 支持
IPv4
、IPv6
和Domains
类型 - 为 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 项目
- https://github.com/sfackler/rust-socks/blob/master/src/v5.rs
- https://github.com/shadowsocks/shadowsocks-rust/blob/master/src/relay/socks5.rs
- https://github.com/ylxdzsw/v2socks/blob/master/src/socks.rs
进一步考虑
- 使用 Tokio-codec https://github.com/yfaming/yimu-rs/blob/master/src/socks5.rs 实现的
依赖项
~3–11MB
~110K SLoC