基于 Go (gVisor) + Kotlin 的 Android 流量拦截与 SNI 修改工具。
| 主界面 | 设置 | 日志 |
|---|---|---|
![]() |
![]() |
![]() |
Important
必须先安装 CA 证书:为了确保 HTTPS 流量(如 Pixiv 等)能够正常拦截和修改 SNI,请务必先按照下方的 CA 证书安装指南 完成证书安装。
- 启动服务:
- 在主界面点击 ACTIVATE 按钮。
- 如果是首次运行,请授权 VPN 权限。
- 状态显示为 "Service is active" 时,流量已开始拦截。
- 查看日志:
- 点击右上角的终端图标进入日志界面,实时查看流量拦截与修改详情。
- 高级配置:
- 进入 Settings 界面可以配置自定义 DNS (DoH)、修改 MTU、开启 IPv6 以及管理流量过滤规则。
为了支持 HTTPS 解密和 SNI 修改,您需要手动安装本应用生成的 CA 根证书。
- 在主界面点击底部的 HTTPS Decryption 卡片。
- 证书文件
snirect_ca.crt将自动导出并保存到您的设备 Downloads (下载) 目录。 - 应用会自动为您跳转至系统安全设置页面。
由于 Android 系统的安全限制,您必须在设置中手动寻找安装入口:
- 打开系统 设置 (Settings) -> 安全 (Security) (部分系统在 安全与隐私 -> 更多安全设置)。
- 找到 加密与凭据 (Encryption & credentials)。
- 选择 安装证书 (Install a certificate)。
- 选择 CA 证书 (CA certificate)。
- 系统会弹出安全警告,点击 仍然安装 (Install anyway)。
- 在文件选择器中找到并选择您刚刚导出的
snirect_ca.crt文件。 - 验证安装成功:在“信任的凭据”中查看“用户”选项卡,应能看到 Snirect 相关的证书。
如果您是开发者,希望自己的 App 信任此证书,需在项目中添加 network_security_config.xml:
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>注意: 若不安装证书,拦截 HTTPS 流量时会导致客户端报错(证书风险)。
android/: Android 宿主工程 (Kotlin + Jetpack Compose)。core/: Go 核心逻辑 (gVisor 网络栈 + SNI 逻辑)。
- Go: 1.20+
- Android Studio: Hedgehog 或更新版本
- Android NDK: 推荐 26.x 或更高
- gomobile: 用于编译 Go 核心库
由于 gomobile 在某些 CLI 环境下的依赖解析问题,建议在本地完整的 Shell 环境中执行:
# 安装 gomobile 工具
go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init
# 进入核心目录
cd core
# 编译 AAR (确保已设置 ANDROID_HOME 和 ANDROID_NDK_HOME)
# 示例:
# export ANDROID_HOME=$HOME/Android/Sdk
# export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/26.1.10909125
gomobile bind -v -target=android -androidapi 21 -o ../android/app/libs/core.aar .成功后,你应该在 android/app/libs/ 下看到 core.aar 文件。
- 用 Android Studio 打开
android/目录。 - 同步 Gradle。
- 连接 Android 设备或模拟器。
- 点击运行。
注意: 必须先完成步骤 1 生成 AAR,否则 Android 项目会因为找不到 core.Core 类而报错。
- VPNService: 接管系统流量。
- Transparent Proxy: 使用 gVisor netstack 在用户态还原 TCP 流。
- SNI Modification: 解析并修改 TLS ClientHello 中的 SNI 扩展。
- 如果
gomobile bind报错no Go package in golang.org/x/mobile/bind:- 尝试
go get -d golang.org/x/mobile/bind。 - 确保你的
GOPATH设置正确。
- 尝试
- 如果 Android 编译报错
Unresolved reference: core:- 检查
android/app/libs/core.aar是否存在。 - 检查
android/app/build.gradle中是否包含implementation fileTree(dir: 'libs', include: ['*.aar'])。
- 检查


