29 个版本 (15 个重大变更)
0.21.0 | 2024 年 8 月 1 日 |
---|---|
0.20.0 | 2024 年 6 月 27 日 |
0.19.0 | 2024 年 6 月 5 日 |
0.10.0 | 2024 年 2 月 5 日 |
0.0.0 | 2021 年 6 月 24 日 |
#1571 in 网络编程
每月 4,581 次下载
用于 26 个 Crates(直接使用 3 个)
215KB
3.5K SLoC
tor-socksproto
实现了 Tor 提供的 SOCKS 风味。
概述
SOCKS 是一个老旧且有些脆弱的协议,用于告知 TCP 代理连接到哪里。野外有时会遇到版本 4、4a 和 5。
tor-socksproto
crate 尝试隐藏协议的实际细节,并暴露一个最终提供 SocksRequest
或错误的带状态握手类型。它是 Arti 项目的一部分,该项目旨在用 Rust 实现 Tor。目前,它仅用于提供通过 Tor 网络 SOCKS 代理,但最终可能用于通过 SOCKS 代理连接到 Tor 网络。
如果您需要一个“像 Tor 一样表现”的 SOCKS 实现,这个 crate 可能是一个不错的选择,但除此之外,可能最好使用其他一些 SOCKS crate。
有关 SOCKS 的更多信息
- 首选的 SOCKS5 在 RFC 1928 中指定,有关 SOCKS5 的用户名/密码认证,请参阅 RFC 1929。
- 维基百科文章 是 SOCKS4 和 SOCKS4a 最好的存活的文档。
- 有关 Tor 对 SOCKS 协议的扩展和限制,请参阅 socks-extensions.txt。
设计说明
Arti 使用此 crate 而不是其他一些 SOCKS 实现,有两个原因
- 首先,因为我们需要支持 Tor SOCKS 扩展。
- 其次,有时我们需要查看大多数其他SOCKS实现不公开的个别握手的特定细节。(例如,如果我们被告知连接到原始IP地址,握手类型可以帮助我们猜测该IP地址是否来自DNS响应-在这种情况下,我们应该警告可能的DNS泄露。)
目前,tor-socksproto
不执行网络代码:它仅通过处理一系列字节实现SOCKS握手的服务器(代理)端。我们可能(也可能不)想在将来为此crate或其他地方添加网络功能。我们肯定想添加客户端功能。
可能,这种方法将被证明对其他用途有用。如果它是,我们可以将tor-only功能放在Cargo构建功能之后,这样其他人就可以更安全地使用这个crate。
许可证:MIT OR Apache-2.0
依赖项
~15MB
~271K SLoC