cognis-digital/veilbox
GitHub: cognis-digital/veilbox
一个零遥测的自托管隐私容器工具包,通过生成内部一致的浏览器指纹并运行泄露自审计来量化和证明用户的匿名性。
Stars: 0 | Forks: 0
# veilbox — 自托管、零遥测的防指纹隐私容器
[](https://pypi.org/project/cognis-veilbox/)
[](https://github.com/cognis-digital/veilbox/actions)
[](LICENSE)
[](https://github.com/cognis-digital)
**不会向外部发送数据的防检测工具 —— 并通过内置的泄露审计证明你的匿名性。**
`veilbox` 是一个自托管的隐私强化**容器 + 工具包**:一个临时的、headless 容器,通过可配置的代理链和通过 DoH 的 NextDNS 进行路由,外加一个可验证的、**仅依赖标准库** 的 Python 工具,它 (1) 生成*内部一致*的浏览器指纹,并且 (2) 运行归属/泄露自审计,为你实际的可追踪性进行评分。
## 使用说明 — 逐步指南
`veilbox` 是一个自托管、零遥测的防指纹工具包,带有内置的归属/泄露自审计。仅用于隐私、OPSEC 和授权研究。
1. **安装**(从克隆的仓库可编辑安装,或从 wheel 安装):
pip install -e .
# 提供 `veilbox` 控制台脚本
2. **生成一致的设备/浏览器指纹配置文件。** 使用 `--seed` 获得确定性身份(相同的 seed → 相同的配置文件)或使用 `--rotate` 获取新的配置文件;固定 `--os`/`--browser`/`--locale`(必须保持一致):
veilbox fingerprint --seed alpha --os windows --browser chrome --format json
3. **输出模板化的出口流量配置**给你的技术栈:
veilbox dns --profile-id YOUR_NEXTDNS_ID --format yaml --out nextdns.yaml
veilbox proxy --hop socks5://127.0.0.1:9050 --hop https://eu.example:8443 --out proxy.yaml
4. **运行泄露自审计**并读取可追踪性评分(0 = 匿名,100 = 可追踪)。`--live` 尽最大努力收集实时信号(离线时会降级);`--signals FILE` 从 JSON 审计观察到的信号;`--format` 支持 `table|json|sarif`:
veilbox audit --live --format json --out veilbox-audit.json
5. **使用 `--fail-on SCORE` 控制 CI / 自动化** —— 当可追踪性评分大于或等于给定值时以非零状态退出(你也可以使用 `veilbox mcp` 将 veilbox 作为 MCP server 运行):
veilbox audit --live --fail-on 40
## 为什么它与众不同
大多数“防检测”工具会**因为不匹配的字段而泄露** —— macOS 的 user-agent 搭配 Windows 的 `navigator.platform`,与 locale 国家/地区不匹配的时区,在所声称的 OS 上不可能存在的字体。这些不匹配比真实情况*更罕见*,因此它们会让你**更**容易被追踪,而不是更难。
veilbox 旨在追求相反的目标:
1. **一致性。** 每一个生成的指纹都是**内部一致**且经过机器验证的 —— 所有字段都是统一的。
2. **证明。** 内置的**泄露自审计**会返回一个**可追踪性评分 (0–100)** 以及每项检查的证据,因此匿名性是*经过验证的*,而非口头断言的。
3. **零遥测。** 没有任何数据会被发送到外部。唯一的网络请求是可选择开启的 `--live` 审计探测,并且它在离线状态下会优雅降级。
## 安装
```
pip install cognis-veilbox
# 或者,来自此 repo:
pip install -e ".[dev]"
```
无第三方依赖 —— 仅需 Python 3.10+ 标准库。
## 快速开始
```
veilbox --version
# 生成一个全新、连贯的 identity(并进行验证)
veilbox fingerprint --rotate
# 从 seed 生成可复现的 identity;固定 OS/browser/locale(强制执行 coherence)
veilbox fingerprint --seed alpha --os macos --browser safari --locale en-GB --format json
# 仅检查 coherence(如有任何不一致则 exit 1)
veilbox fingerprint --seed alpha --validate-only
# 输出 egress config(已模板化,使用占位符 ids — 请自行提供)
veilbox dns --profile-id PLACEHOLDER_ID
veilbox proxy --hop socks5://a.example:1080 --hop https://b.example:8443
# 亮点:证明你的 anonymity
veilbox audit --signals demos/01-basic/signals-clean.json # => score 0, ANONYMOUS
veilbox audit --signals demos/01-basic/signals-leaking.json # => score 100, 5 leaks
veilbox audit --live --format sarif --out audit.sarif # CI-friendly
veilbox audit --signals session.json --fail-on 25 # gate a pipeline
# 作为 MCP server 运行(Cognis.Studio / Claude Desktop / Cursor)
veilbox mcp
```
## 泄露自审计
`veilbox audit` 评估八个归属向量,并将它们汇总为一个单一的**可追踪性评分**(越低 = 越匿名)。缺失的信号会被*跳过*,而不是扣分,因此离线审计仍然有意义。
| 检查项 | 权重 | 捕获内容 |
|-------|-------:|---------|
| `webrtc_leak` | 30 | 通过隧道外的 WebRTC 暴露了可路由/公共 IP |
| `dns_leak` | 25 | DNS 查询由预期之外的 DoH endpoint 解析 |
| `ip_proxy_mismatch` | 20 | 公共 IP ≠ 代理出口节点(出口流量绕过了隧道) |
| `tz_geo_mismatch` | 15 | 浏览器时区与出口 IP 所在的国家/地区不一致 |
| `client_hint_consistency` | 12 | UA 的 OS token 与 TLS/HTTP2 Client-Hint 平台 (`Sec-CH-UA-Platform`) 不一致 —— 仅伪装了一半的身份 |
| `navigator_coherence` | 12 | `navigator.plugins`/`mediaDevices`/touch 与声明的平台相矛盾(例如 Firefox/移动端上有 plugins,桌面端支持 touch,未经许可标记的设备) |
| `fingerprint_coherence` | 10 | 指纹字段之间相互矛盾 |
| `font_entropy` | 10 | 枚举出的字体原生属于*其他* OS,或者字体集合庞大到成为近乎唯一的标识符 |
输出格式:`table`(默认)、`json`、`sarif`。
### Signals schema
`audit` 读取包含观察到的信号的 JSON 对象(所有键均为可选):
```
{
"public_ip": "198.51.100.7",
"proxy_exit_ip": "198.51.100.7",
"webrtc_local_ips": ["10.0.0.5"],
"dns_resolvers": ["45.90.28.0"],
"expected_resolvers": ["45.90.28.0", "45.90.30.0"],
"timezone": "Australia/Sydney",
"ip_geo_country": "AU",
"profile": { "...a veilbox fingerprint profile..." },
"user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0",
"ua_platform": "\"Linux\"",
"fonts": ["DejaVu Sans", "Ubuntu"],
"declared_platform": "linux",
"browser": "firefox",
"touch_support": false,
"navigator_plugins": [],
"media_devices": [{"kind": "videoinput", "label": ""}]
}
```
`--live` 通过尽力而为的、仅依赖标准库的收集方式填补空白(公共 IP、本地地址)。真正的 WebRTC/canvas 探测需要浏览器端的收集器;veilbox 绝不会伪造 `pass`。
## 容器
```
# 构建并运行临时的、只读的、已丢弃 capability 的 container。
docker compose up --build
```
- 临时的、headless、**非 root**、`read_only` 根文件系统,删除所有 Linux capabilities,并设置 `no-new-privileges`。
- **隔离的网络 namespace** (`internal: true`) —— 没有通往主机 LAN 的路由。
- 出口流量旨在通过你的**代理链 + NextDNS DoH** 流动,通过 `.env` / `config/veilbox.yaml` 提供(复制 `config/veilbox.example.yaml`)。
- `entrypoint.sh` 渲染生效的 DoH + 代理配置(可审计),然后运行 CLI。默认命令运行泄露审计。
## 演示
参见 [`demos/01-basic`](demos/01-basic/SCENARIO.md):一个一致的配置文件,一个评分为 **0 / ANONYMOUS**(匿名)的干净会话,以及一个评分为 **100 / FULLY-TRACEABLE**(完全可追踪)的泄露会话,其中五个向量全部被捕获(包括 Windows user-agent 搭配了 `MacIntel` platform)。
## MCP server
veilbox 通过 stdio 使用换行符分隔的 JSON-RPC 2.0 进行通信,**无需 SDK**。将其接入 agent:
```
{ "command": "python", "args": ["-m", "veilbox", "mcp"] }
```
工具:`generate_fingerprint`、`audit_signals`。
## 配置
`config/veilbox.example.yaml` 记录了每一个选项(DNS 提供商、代理链、指纹固定、审计门槛)。示例中的所有凭证都是**明显的占位符**。切勿提交 `config/veilbox.yaml` 或 `.env`(两者均已被 gitignored)。
## 互操作性
`veilbox` 与包含 300 多个工具的 Cognis 套件组合使用 —— JSON 输入/输出以及共享的 OpenAI 兼容 `/v1` 骨干网络。有关套件图谱、组合模式和参考技术栈,请参见 **[INTEROP.md](INTEROP.md)**。
## 集成
通过 [`cognis-connect`](https://github.com/cognis-digital/cognis-connect) 将 `veilbox` 的发现转发到 STIX/MISP/Sigma/Splunk/Elastic/Slack/webhooks。请参见 **[INTEGRATIONS.md](INTEGRATIONS.md)**。
## 许可证
Cognis Open Collaboration License (COCL) v1.0 —— 请参见 [LICENSE](LICENSE) 和 [NOTICE](NOTICE)。非商业用途免费;商业用途请联系:`licensing@cognis.digital`。
标签:Docker容器, Python, 代理转发, 匿名化, 反指纹, 攻击面发现, 无后门, 版权保护, 网络安全, 请求拦截, 逆向工具, 隐私保护