CannaMuffinMan/FCGBDS
GitHub: CannaMuffinMan/FCGBDS
FCGBDS 是一个基于 TypeScript 和 Redis 的生产级 bot 防御中间件,通过多维信号评分在边缘或 API 层对自动化流量进行检测、质询和阻断。
Stars: 0 | Forks: 0
# FCGBDS (Forever Couch Gang Bot Defense System)
FCGBDS 是一个可以在您自己的系统中运行的生产级 bot 防御技术栈。
本仓库现在包含完整的客户运行时模块、middleware 逻辑以及带有安全占位符默认值的 Cloudflare Worker 测试客户端。
License: MIT。
Price: 免费。
## 从这里开始
1. 系统深度解析: `explanative`
2. MSCB bridge 深度解析: `MSCB_EXPLANATIVE.md`
3. 贡献指南: `CONTRIBUTING.md`
4. 推广代码片段: `PROMOTION_KIT.md`
5. 基准测试文档: `scripts/benchmark/README.md`
6. 只读 demo: `demo/read-only-dashboard.html`
## 来自作者的自愿请求
如果 FCGBDS 对您的平台有所帮助,我们请求您能做到以下其中一点:
这仅仅是一个请求,而不是法律要求。法律条款遵循 MIT 协议。
## 包含内容
1. 位于 `src/` 中的完整 TypeScript 运行时模块:
- `botDefense.ts`
- `index.ts`
- `telemetryManager.ts`
- `updateManager.ts`
- `dashboard.ts`
- `licenseManager.ts`(开源兼容垫片,无付费 license)
2. 位于 `botDefenseRedis.ts` 的 Redis 状态管理器参考。
3. 位于 `cloudflare-workers/` 的 Cloudflare Worker 示例。
4. Docker、部署脚本以及用于快速推出的 `.env.example`。
## 高层架构
FCGBDS 使用分层评分和阈值来决定是允许、质询还是阻止传入的流量。
主要信号族:
1. IP 命中窗口。
2. 设备指纹命中窗口。
3. Payload 重复窗口。
4. Header 和浏览器一致性检查。
5. Host 不匹配检查。
6. Honeypot 字段检测。
状态可以在内存中运行,也可以由 Redis 支持以实现水平扩展。
```
flowchart LR
U[Client Request] --> E[Edge/API Entry]
E --> M[FCGBDS Middleware]
M --> S1[IP Window Signal]
M --> S2[Device Fingerprint Signal]
M --> S3[Payload Repetition Signal]
M --> S4[Header and Browser Trust Signal]
M --> S5[Host Mismatch Signal]
M --> S6[Honeypot Signal]
S1 --> R[Risk Score Aggregation]
S2 --> R
S3 --> R
S4 --> R
S5 --> R
S6 --> R
R --> D{Decision Thresholds}
D -->|Allow| A[Route Handler]
D -->|Challenge| C[429 Challenge Response]
D -->|Block| B[403 Block Response]
M <-->|Shared Counters| X[(Redis)]
M -.fallback.-> L[(Local Memory)]
M --> T[Telemetry and Dashboard]
```
## 快速开始
### 1) 安装依赖
```
npm install
```
### 2) 配置环境
```
cp .env.example .env
```
在 `.env` 中设置占位符的值:
- `FCG_API_BASE_URL=https://PLACEHOLDER_API_BASE_URL`
- `BOT_DEFENSE_EXPECTED_HOSTNAME=api.yourdomain.com`
- `REDIS_URL=redis://localhost:6379`(可选,但推荐)
### 3) 在开发环境中运行
```
npm run dev
```
### 4) 构建并在生产环境中运行
```
npm run build
npm start
```
### 5) Docker 选项
```
docker-compose up -d
```
## 如何将 FCGBDS 集成到您现有的 API 中
### 选项 A:将 FCGBDS 作为您的主要边缘 API middleware 运行
1. 使用 `src/index.ts` 作为您的入口点。
2. 将 `BOT_DEFENSE_PATHS` 设置为您想要保护的路由。
3. 在业务逻辑之前,让受保护的流量通过 FCGBDS middleware。
### 选项 B:将 middleware 嵌入到现有的 Express API 中
1. 从 `src/botDefense.ts` 导入 `createBotDefenseMiddleware`。
2. 使用您的阈值进行初始化。
3. 在敏感路由之前使用 `app.use(botDefense.middleware)`。
### 选项 C:跨多个 API pod 共享防御状态
1. 使用 Redis (`REDIS_URL`) 以便共享计数器。
2. 保持您的 pod 为无状态。
3. 根据路由配置调整窗口和阈值。
## 用于测试和模拟的 Cloudflare Workers
`cloudflare-workers/` 目录包含您可以快速部署的 worker 副本。
所有特定于环境的 hostname 都已替换为占位符。
每个 worker 的典型设置:
1. 进入 worker 文件夹。
2. 更新 `wrangler.toml` 中的占位符。
3. 使用 Wrangler 进行部署。
占位符示例:
- `TARGET_API = "https://PLACEHOLDER_API_BASE_URL"`
- `ALLOWED_TARGET_HOSTS = "PLACEHOLDER_API_HOST,PLACEHOLDER_SECONDARY_API_HOST"`
## 平台集成示例
1. Express 示例: `examples/express-integration.md`
2. Fastify 示例: `examples/fastify-integration.md`
3. Twitch webhook 集成说明: `examples/platforms/twitch-webhook-integration.md`
4. Kick 集成说明: `examples/platforms/kick-webhook-integration.md`
5. MSCB 后端插件快速入门: `examples/mscb-backend-plug-in.md`
## 基准测试和性能报告
使用内置的基准测试脚本来生成数据,以便您可以在可重现的测试条件下发布这些数据。
1. 快速运行:
```
npm run benchmark:quick
```
2. 自定义运行:
```
npm run benchmark -- --url http://127.0.0.1:3001/api/auth/login --connections 50 --duration 30 --method POST
```
3. 完整基准测试指南:
- `scripts/benchmark/README.md`
本仓库中没有硬编码任何静态的 RPS 或延迟声明。请在发布您自己测量的结果时附上命令 + 环境详情。
## 前/后对比展示工作流
为了确保直播的可信度和可审计性,请发布匿名化的前/后指标快照:
1. 使用您的数据更新 `demo/sample-metrics.json`。
2. 打开 `demo/read-only-dashboard.html` 以可视化对比结果。
3. 在您的发布说明中分享截图 + 基准测试命令。
## 占位符安全
本仓库有意使用占位符替换内部基础设施值:
1. `PLACEHOLDER_API_BASE_URL`
2. `PLACEHOLDER_API_HOST`
3. `PLACEHOLDER_APP_HOST`
4. `PLACEHOLDER_WEB_HOST`
5. `PLACEHOLDER_SECONDARY_API_HOST`
6. `PLACEHOLDER_TERTIARY_API_HOST`
在部署之前,请将这些内容替换为您自己的值。
## 可见性检查清单
1. 将 GitHub topics 添加到此仓库:
- bot-detection
- rate-limiting
- anti-cheat
- cloudflare
- redis
- typescript
2. 使用 `PROMOTION_KIT.md` 制作直播覆盖层和社交帖子。
3. 将来自 `demo/read-only-dashboard.html` 的只读指标截图添加到您的仓库主页或帖子中。
## 安全和运营说明
1. 不要记录原始的用户机密。
2. 尽量减少对请求体(request body)的记录,并将其涂黑隐藏。
3. 仅使用 HTTPS。
4. 定期轮换 token 和共享机密。
5. 从保守的阈值开始,然后根据实时指标进行调整。
## 仓库结构
```
.
├─ src/
├─ cloudflare-workers/
├─ examples/
├─ scripts/benchmark/
├─ demo/
├─ botDefenseRedis.ts
├─ .env.example
├─ docker-compose.yml
├─ Dockerfile
├─ CONTRIBUTING.md
├─ PROMOTION_KIT.md
├─ deploy.sh
├─ deploy.bat
└─ explanative
```
标签:Redis, TypeScript, 反爬虫, 威胁情报, 安全插件, 开发者工具, 搜索引擎查询, 机器人拦截, 程序员工具, 自定义脚本, 请求拦截, 防御系统, 高对比度