guardianproject/tor-android

GitHub: guardianproject/tor-android

为 Android 平台提供 Tor 二进制文件和共享库,使应用能够内嵌匿名网络通信功能以保护用户隐私。

Stars: 278 | Forks: 75

## Tor Android 这是基于为 Android 构建的 Tor 共享库而构建的原生 Android `TorService`。其中包含的 `libtor.so` 二进制文件也可以直接作为 tor daemon 使用。 目前,Tor Android 是使用以下版本的 `tor`、`libevent`、`openssl`、`zlib` 和 `zstd` 构建的: | 组件 | 版本 | |:----------|----------------------------------------------------------------------------------:| | tor | [0.4.9.10](https://forum.torproject.org/t/security-release-0-4-9-9/21664) | | libevent | [2.1.12](https://github.com/libevent/libevent/releases/tag/release-2.1.12-stable) | | OpenSSL | [3.5.7](https://github.com/openssl/openssl/releases/tag/openssl-3.5.7) | | zlib | [1.3.2](https://github.com/madler/zlib/releases/tag/v1.3.2) | | zstd | [1.5.7](https://github.com/facebook/zstd/releases/tag/v1.5.7) | Tor Android 二进制文件可在 [Guardian Project Maven Repo](https://github.com/guardianproject/gpmaven) 获取 首先将该 repo 添加到你的顶层 Gradle 文件中: ``` allprojects { repositories { // ... maven { uri("https://raw.githubusercontent.com/guardianproject/gpmaven/master") } } } ``` 然后将 `tor-android` 和 `jtorctl` 依赖项添加到你的项目中: ``` dependencies { implementation("info.guardianproject:tor-android:0.4.9.10") implementation("info.guardianproject:jtorctl:0.4.5.7") } ``` 使用 tor-android 的应用需要在其 Android Manifest 文件中声明 `INTERNET` 权限。 *此外,如果你的应用目标平台为 Android 17(API 37),并且你正在配置应用以与局域网(LAN)上的设备进行交互,你可能还需要声明 `ACCESS_LOCAL_NETWORK` 权限。* ``` ``` 大多数使用 `tor-android` 进行构建的开发者不需要此权限。但是,如果你想要执行诸如将 `tor` 的 SOCKS 端口暴露给你所在网络中的设备之类的操作(即,使用此 `torrc` 启动 `tor`),则必须使用它(再次强调,仅在 `targetSdk` > 36 时): ``` SOCKSPort 0.0.0.0:9050 SocksPolicy accept *:* ``` 你需要在 runtime 执行额外的逻辑来授予该权限。有关此 Android 17 新限制的更多信息,请参阅[这里](https://developer.android.com/privacy-and-security/local-network-permission)。 Tor 通过隐藏你的互联网地址与你所使用的服务之间的连接来保护你在互联网上的隐私。我们相信 Tor 是相当安全的,但请确保你阅读了说明并进行了正确的配置。欲了解更多信息,请访问 https://torproject.org/ ## 最低要求 - 为了使用 tor-android,你需要将目标设置为 Android **API 24** 或更高版本。 - 它可在所有标准 Android 架构上运行:`arm64-v8a`、`armeabi-v7a`、`x86`、`x86_64` ## [Tor 常见问题解答](https://support.torproject.org/faq/) ## 构建 `tor-android` 请参阅:[BUILD.md](https://raw.githubusercontent.com/guardianproject/tor-android/master/BUILD.md) `tor-android` 通常在 Linux 上构建,但也可以在 [macOS](https://github.com/guardianproject/tor-android/pull/186) 上构建。 这可以使用包含的 Vagrant VM 设置进行可重现构建。它可以在 `libvirt` 或 VirtualBox 上运行。其配置基于 `.gitlab-ci.yml` 中的“release”作业。 ### 在 Debian 上构建 首先安装前置依赖包: ``` sudo apt update sudo apt install autoconf \ autogen \ automake \ autopoint \ autotools-dev \ gettext-base \ gettext \ git \ libtool \ make \ patch \ pkg-config \ g++ \ uidmap \ libseccomp-dev \ libscrypt-dev \ build-essential \ ca-certificates \ po4a \ libzstd-dev sudo apt install linux-headers-$(uname -r) ``` *(注意:请参阅[在 Debian 上构建 Tor](https://gitlab.com/torproject/tor/-/blob/main/.gitlab-ci.yml?ref_type=heads) 的说明,以了解用于构建 `tor` 的最新 Debian 依赖项的起点……)* 你需要在系统上配置有效的 JDK。获取正确配置的 JDK 的一个简单方法是[安装 SDKMAN](https://sdkman.io/)。安装 SDKMAN 后,你可以像这样获取并使用 Java 25: ``` sdk init sdk install java 25.0.2-tem sdk use java 25.0.2-tem ``` 然后获取 Android SDK 和 NDK。Android SDK 在安装 Android Studio 时默认安装,而 NDK 可以在 Android Studio 的 SDK 管理器中下载。 目前,tor-android 是使用 NDK 工具链 29.0.14206865 构建的 然后为 SDK 和 NDK 设置以下环境变量: ``` export ANDROID_HOME=~/Android/Sdk export ANDROID_NDK_HOME=~/Android/Sdk/ndk/29.0.14206865 ``` 确保所有的 git submodule 都是最新的: ``` ./tor-droid-make.sh fetch -c ``` 运行以下命令进行构建: ``` # 为所有受支持的架构制作通用的 tor-android 库 ./tor-droid-make.sh build # 为特定架构制作 tor-android 库,包括:arm64-v8a armeabi-v7a x86 x86_64 # 64 位 ARM APK,用于在设备上运行 ./tor-droid-make.sh build -a arm64-v8a # 64 位 Intel APK,用于在具有 Intel 主机的模拟器上运行 ./tor-droid-make.sh build -a x86_64 ``` 这将生成一个未签名的 tor-android AAR。 *(注意:`./tor-droid-make.sh ...` 目前在 `fish` shell 中无法运行,请使用 `zsh` 或 `bash`……)* ## 准备发布 #### 顶层 `build.gradle.kts` 更新 `build.gradle.kts` 顶部的这些字段。例如,对于 `tor` 0.4.9.5 的发布,`versionCode` 的前几位数字和 `versionName` 字符串即为所使用的 `tor` 的版本号。 请注意,`versionCode` 以 0 结尾。 ``` versionCode = 49050 versionName = "0.4.9.5" ``` 如果你正在发布不包含 tor 新更新的 `tor-android` 新版本,请更改 `versionCode` 的最后一位数字,并在 `versionName` 中添加一个字段,即: ``` versionCode = 49051 versionName = "0.4.9.5.1" ``` #### `README.md` 更新表格中依赖项的版本,以及包含有关如何将 `tor-android` 添加到 Gradle 项目的复制+粘贴说明的字段。 #### `gradle.properties` 将 `VERSION_NAME` 更新为此构建中使用的 `tor` 版本,即 `VERSION_NAME=0.4.9.5` #### `sampletorapp/build.gradle.kts` 更新示例应用的 Gradle 配置中使用的 `tor-android` 版本。 ## 发布 `tor-android` 构建完二进制文件后,如果你拥有正确的凭据,可以使用 Gradle 任务以多种方式发布它: ``` # 发布到本地 Maven repository: ./gradlew publishToMavenLocal # 发布到 GitHub packages: ./gradlew publishReleasePublicationToGitHubPackagesRepository # 发布到 Gradle Central: ./gradlew publishAggregationToCentralPortal ```
标签:Android, DSL, JS文件枚举, Tor, UML, 匿名网络, 后台面板检测, 域名枚举, 安全合规, 安全测试工具, 移动开发, 网络代理, 网络安全, 隐私保护