etherman-os/SavannaGuard

GitHub: etherman-os/SavannaGuard

一个注重隐私的自托管反机器人防护系统,通过多信号行为分析与联邦学习解决传统验证码体验与追踪问题。

Stars: 0 | Forks: 0

# SavannaGuard — 注重隐私的机器人安全层 **在线演示:** https://savannaguard.com SavannaGuard 是一个真正的自托管、尊重隐私的安全层,旨在解决传统验证码忽略的问题。其他解决方案只专注于令人沮丧的图像谜题和跨网络追踪用户,而 SavannaGuard 作为一个隐形、补充性的纵深防御工具。 通过结合 **自适应工作量证明**(根据攻击量自动调整难度)、**每站机器学习**(在线高斯模型,学习真实用户行为)、**机器人签名追踪**(标记重复攻击者)、**JavaScript 引擎时序预言机**(通过 V8 JIT 模式检测无头浏览器)以及 **联邦机器人智能**(跨实例共享威胁情报),它构建了一个强大的防护盾,可以作为现有安全措施的替代方案或附加层。 **零第三方依赖:** 无需 Redis,不调用大厂外部 API,且绝对不会有行为数据离开您的服务器。 ## 关键特性 ### 自适应工作量证明 根据检测到的机器人比例自动调整难度。受到攻击时 → 谜题更难;空闲时段 → 最小摩擦。 ### 每站机器学习 在线高斯模型在仅 10+ 个人类样本后即可学习您的合法用户行为模式。适应您的流量,而非通用模型。 ### 机器人签名追踪 通过 IP+UA 哈希标记重复攻击者。三次匹配 = 高置信度机器人。签名保留期:30 天。 ### JavaScript 引擎时序预言机 通过分析 V8 JIT 编译模式、加密操作和 requestAnimationFrame 行为来检测无头浏览器(Puppeteer、Playwright、Selenium)— **无需嗅探用户代理**。 ### 生理震颤分析 人类手部会表现出 8–12 Hz 的非自主震颤 — 这是所有健康用户都存在的神经学常量。SavannaGuard 对鼠标速度流应用 FFT,并测量该频带的功率。机器人产生的是平坦噪声或程序化平滑;两者都无法匹配生物熵。 ### WebRTC 拓扑预言机 在任何表单交互之前,SavannaGuard 被动收集 WebRTC ICE 候选 — 浏览器自身的网络自述。数据中心环境、单接口虚拟机以及 VPN 泄露会产生真实家庭/办公用户绝不会出现的拓扑特征。无需任何网络请求。 ### 联邦机器人智能(P2P) 自托管实例通过八卦协议点对点共享机器人签名。当一个实例检测到机器人时,所有实例都会学习。无中央服务器,无原始数据离开您的网络。 ### 10 个行为信号收集器 鼠标动态、击键节奏、画布指纹、WebGL 渲染、屏幕指标、浏览器属性、网络时序、页面时序、生理震颤、WebRTC 拓扑 — 所有数据均在本地处理,得分范围为 0–100。 ## 实时链接 - **官网:** https://savannaguard.com - **代码仓库:** https://github.com/etherman-os/SavannaGuard ## 快速启动(3 条命令) ``` git clone https://github.com/etherman-os/SavannaGuard && cd SavannaGuard cp .env.example .env docker compose up -d ``` 然后打开 http://localhost:3000/admin(默认密码: `admin`)。 ## 使用摘要 生产环境中 SavannaGuard 的使用流程: 1. 前端向 `/api/v1/challenge/create` 请求挑战。 2. 插件解决 PoW 并向 `/api/v1/challenge/solve` 发送遥测数据。 3. 后端在处理用户操作前使用 `/api/v1/token/validate` 验证颁发的令牌。 ## 运行测试 ``` pnpm test ``` 仅运行服务器测试: ``` pnpm --filter @savannaguard/server test ``` ## 表单集成 ```
``` ## 架构 - **服务器**: Fastify + SQLite — 处理 PoW 挑战、令牌生成、会话评分 - **插件**: 通过 Vite 实现的 Vanilla TS — Web Worker PoW 求解器、行为收集器(5.8KB gzip) - **管理端**: 由服务器提供的 Alpine.js UI — 统计、标记会话、设置 ## 检测背后的科学 SavannaGuard 的检测方法基于可观察的生物和网络现象,机器人难以轻易复制。 ### 生理震颤分析(信号 #9) 人类手部会表现出 8–12 Hz 的非自主震颤 — 这是所有健康用户都存在的神经学常量。SavannaGuard 对鼠标速度流应用 FFT,并测量该频带的功率。机器人产生的是平坦噪声或程序化平滑;两者都无法匹配生物熵。 ### WebRTC 拓扑预言机 在任何表单交互之前,SavannaGuard 被动收集 WebRTC ICE 候选 — 浏览器自身的网络自述。数据中心环境、单接口虚拟机以及 VPN 泄露会产生真实家庭/办公用户绝不会出现的拓扑特征。无需网络请求。 ### 尝试击败它 我们邀请安全研究人员尝试突破。打开一个议题并提交您的方案 — 成功绕过并被修复的方案将在本 README 中获得致谢。 ## API 端点 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/challenge/create | 创建 PoW 挑战 | | POST | /api/v1/challenge/solve | 提交 PoW 解决方案 + 行为数据 | | POST | /api/v1/token/validate | 验证令牌 | | GET | /admin | 管理统计页面 | | GET | /admin/threat | 威胁情报标签 | | GET | /admin/flagged | 标记会话页面 | | GET | /admin/settings | 设置页面 | | GET | /admin/federation | 联邦管理 | ## 对比 | 特性 | SavannaGuard | Cloudflare Turnstile | hCaptcha | |------|-------------|---------------------|----------| | 自托管 | ✅ | ❌ | ❌ | | 无外部 API 调用 | ✅ | ❌ | ❌ | | 每站机器学习 | ✅ | ❌ | ✅ | | 无头浏览器检测 | ✅ | 有限 | ❌ | | 生理震颤分析 | ✅ | ❌ | ❌ | | WebRTC 拓扑预言机 | ✅ | ❌ | ❌ | | 联邦威胁情报 | ✅ | ❌ | ❌ | | 自适应 PoW 难度 | ✅ | ❌ | ❌ | | 行为信号收集器 | 10 个信号 | 未知 | 最少 | | SQLite(无需 Redis) | ✅ | 不适用 | 不适用 | ## 技术栈 Fastify · SQLite · TypeScript · Vite · Alpine.js · Docker Compose ## 许可 - 本仓库为来源可用(并非 OSI 开源)。 - 社区自托管允许。 - 托管/转售需要单独的商用协议。 - 详情请参阅 LICENSE 和 COMMERCIAL_USE.md。 ## 开源边界 - 本仓库:社区可验证的核心(可自托管)。 - 付费/私有仓库:计费、租户配置、管理控制平面、企业功能。 ## 隐私 - 无 Redis — 挑战/会话状态仅使用 SQLite。 - 无原始行为数据 — 仅存储聚合分数(0–100)。 - IP 地址哈希(SHA256 + 每日轮换盐),永不清文存储。 ## 令牌验证示例 ``` import fetch from 'node-fetch'; async function verifySavannaToken(token: string) { const response = await fetch('http://localhost:3000/api/v1/token/validate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token }), }); const data = await response.json(); // { valid: true, verdict: 'human', score: 84 } return data; } ```
标签:Apex, Bot签名, FFT, JS引擎时序取证, PoW, SEO, V8 JIT, 人机验证, 分布式威胁共享, 去中心化威胁情报, 反爬虫, 反自动化, 在线高斯模型, 安全层, 无头浏览器检测, 无验证码, 机器人特征追踪, 机器人防护, 机器学习, 流量自适应, 流量验证, 版权保护, 生理震颤分析, 网站防护, 联邦P2P, 自动化攻击, 自托管, 自适应工作量证明, 边缘安全, 隐私优先, 零第三方依赖, 频域分析, 鼠标速率