34 个版本 (稳定版)
1.2.6 | 2024 年 8 月 1 日 |
---|---|
1.2.5 | 2024 年 6 月 27 日 |
1.2.3 | 2024 年 5 月 15 日 |
1.2.0 | 2024 年 3 月 4 日 |
0.0.0 | 2021 年 6 月 24 日 |
#154 in 网络编程
每月 300 次下载
在 arti-bench 中使用
1.5MB
21K SLoC
arti
一个连接到 Tor 网络的最小命令行程序
(如果您需要一个更通用的 Tor 客户端库接口,请使用 arti_client
.)
此 crate 是 Arti 的主要命令行界面,Arti 是一个在 Rust 中实现 Tor 的项目。
目前 Arti 可以作为 Tor 网络上的简单 SOCKS 代理运行。它默认监听端口 9150,但您可以在配置中覆盖此设置。您可以引导程序通过该 SOCKS 端口连接,它们的连接将通过 Tor 匿名化。注意:您可能不想以这种方式运行传统的网页浏览器。浏览器会泄露大量个人信息。为了匿名浏览网页,我们建议使用 Tor Browser。
Arti 仍在快速发展;我们正在添加功能,并希望最终它能取代 C Tor。
命令行界面
(此功能不稳定;未来的版本将破坏此功能。)
arti
使用 clap
crate 进行命令行参数解析;运行 arti help
以打印其文档。
目前唯一实现的子命令是 arti proxy
;尝试 arti help proxy
以获取可以传递给它的选项列表。
配置
默认情况下,arti
在其平台相关的位置查找其配置文件。
操作系统 | 配置文件 |
---|---|
Unix | ~/.config/arti/arti.toml |
macOS | ~/Library/Application Support/org.torproject.arti/arti.toml |
Windows | \Users\<USERNAME>\AppData\Roaming\arti\arti.toml |
配置文件是TOML格式。示例请参考arti-example-config.toml
(该文件在源代码树中也有副本,并且在Arti 仓库中也有)。该示例配置文件记录了配置选项。
有关各个字段的更详细信息,请参阅Rust API文档中的ApplicationConfigBuilder
和TorClientConfigBuilder
。
使用Arti与Tor浏览器配合使用
可以将Arti与Tor浏览器连接起来。
为此,我们将独立于Tor浏览器启动arti。使用以下命令构建arti:cargo build --locked --release
。之后,使用一些基本的配置参数启动它
$ ./target/release/arti proxy -l debug -p 9150
这将确保arti将其SOCKS端口设置为9150。现在我们需要启动Tor浏览器,并指导它使用该SOCKS端口。
Linux
$ TOR_SKIP_LAUNCH=1 TOR_SOCKS_PORT=9150 TOR_SKIP_CONTROLPORTTEST=1 ./start-tor-browser.desktop
OS X
$ TOR_SKIP_LAUNCH=1 TOR_SOCKS_PORT=9150 TOR_SKIP_CONTROLPORTTEST=1 /path/to/Tor\ Browser/Contents/MacOS/firefox
Windows
创建一个快捷方式,将目标
设置为
C:\Windows\System32\cmd.exe /c "SET TOR_SKIP_LAUNCH=1&& SET TOR_SOCKS_PORT=9150&& SET TOR_SKIP_CONTROLPORTTEST=1&& START /D ^"C:\path\to\Tor Browser\Browser^" firefox.exe"
并将开始 在
设置为
"C:\path\to\Tor Browser\Browser"
(您可能需要调整实际路径到您放置Tor浏览器的地方。)
生成的Tor浏览器应该使用arti。请注意,洋葱服务和桥接服务将不起作用(Arti尚不支持它们),以及依赖于Tor控制端口协议的任何功能都不会起作用。不依赖于控制端口的特性,如“为此站点创建新电路”按钮应该可以正常工作。
编译时功能
附加功能
-
tokio
(默认):使用tokio运行时库作为后端。 -
async-std
:使用async-std运行时库作为后端。此功能在没有使用--no-default-features
禁用tokio的情况下没有效果。 -
native-tls
-- 使用支持native_tls
TLS后端的功能编译。 (默认) -
journald
-- 使用支持将日志记录到journald
日志后端的功能编译(作为systemd的一部分提供)。 -
dns-proxy
(默认)-- 使用支持通过Tor网络代理某些简单DNS查询的功能编译。 -
harden
(默认)-- 使用支持通过禁用调试器附加和其他本地内存检查向量来强化Arti进程的功能。 -
compression
(默认)-- 使用支持下载压缩文档的功能。需要C编译器。 -
bridge-client
(默认)-- 使用支持桥接的功能编译。 -
onion-service-client
(默认)-- 使用支持连接到洋葱服务的功能编译。请注意,这尚未像C-Tor那样安全,不应用于安全性敏感的目的。 -
onion-service-service
-- 使用支持运行洋葱服务的功能编译。请注意,这尚未像C-Tor那样安全,不应用于安全性敏感的目的。 -
pt-client
(默认)-- 使用支持插件传输的功能编译。 -
full
-- 使用所有上述功能以及来自其他 arti crate 的所有稳定增量功能。 (这不包括实验性功能。它也不包括选择特定实现而排除另一个或设置构建标志的功能。) -
rustls
-- 使用 rustls TLS 后端构建。由于它使用ring
crate,该 crate 使用旧的 (3BSD/SSLEay) OpenSSL 许可证,这可能会引入许可兼容性问题,因此不包括在full
中。
与构建标志相关的功能
static
-- 使用系统的静态依赖版本进行链接,包括 sqlite 和/或 openssl。 (⚠ 警告 ⚠:此功能将包括 native-tls 的依赖项,即使您没有计划使用 native-tls。如果您只想使用静态 sqlite 库进行构建,请启用static-sqlite
功能。我们将在未来寻找更好的解决方案。)static-sqlite
-- 使用 sqlite 的静态版本进行链接。static-native-tls
-- 使用native-tls
的静态版本进行链接。启用native-tls
。
加密加速功能
库不应默认启用这些功能,因为它们用另一个实现替换了另一个。
accel-sha1-asm
-- 如果可用,使用 SHA1 的汇编实现来加速加密。accel-openssl
-- 使用 openssl 作为后端来加速加密。
实验性功能
请注意,这些功能启用的 API 不受语义版本控制保证:我们可能会在补丁版本之间破坏它们或删除它们。
experimental-api
-- 使用实验性、不稳定的 API 支持进行构建。 (目前,arti
crate 中的大多数 API 都是实验性的,因为此 crate 最初是为了作为二进制程序而编写的。)experimental
-- 使用所有上述实验性功能以及来自其他 arti crate 的所有实验性功能。
[^1]: 请记住,语义版本控制是使各种 cargo
功能可靠工作的原因。为了明确,如果您想使 cargo update
仅进行正确的更改,则不能启用这些功能。
限制
有许多缺失的功能。其中:尚未提供洋葱服务支持。没有反审查支持。您不能作为中继。除了 SOCKS 之外,没有其他类型的代理。
有关缺失功能的更完整列表,请参阅 仓库 README 文件。
用于构建命令行客户端的库
此库 crate 包含用于创建类似于 arti
的命令行程序的代码。API 不应被视为稳定。
许可证:MIT OR Apache-2.0
依赖项
~54–94MB
~1.5M SLoC