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 网络编程

Download history 41/week @ 2024-05-04 190/week @ 2024-05-11 111/week @ 2024-05-18 36/week @ 2024-05-25 197/week @ 2024-06-01 72/week @ 2024-06-08 24/week @ 2024-06-15 183/week @ 2024-06-22 58/week @ 2024-06-29 44/week @ 2024-07-06 21/week @ 2024-07-13 37/week @ 2024-07-20 139/week @ 2024-07-27 74/week @ 2024-08-03 36/week @ 2024-08-10 43/week @ 2024-08-17

每月 300 次下载
arti-bench 中使用

MIT/Apache

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文档中的ApplicationConfigBuilderTorClientConfigBuilder

使用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