rhamenator/ai-scraping-defense
GitHub: rhamenator/ai-scraping-defense
一套多层级 AI 爬虫防御系统,通过检测、欺骗与速率限制对抗针对创意与文档网站的自动化抓取机器人。
Stars: 11 | Forks: 3
# AI 爬虫防御
[](https://codecov.io/gh/rhamenator/ai-scraping-defense)
本项目提供多层级、基于微服务的防御体系,用于对抗复杂的 AI 驱动的 Web 爬虫和恶意机器人。
## 主要特性
- **分层防御**:结合 Nginx、Lua 与一系列 Python 微服务,实现纵深防御。
- **智能分析**:采用启发式规则、机器学习模型以及可选的 LLM 集成来分析可疑流量。
- **模型无关**:灵活的适配器模式,便于集成各类机器学习模型与 LLM 提供商(OpenAI、Mistral、Cohere 等)。
- **主动反制**:包含“陷阱 API”,主动消耗已确认机器人的资源。
- **终端用户验证**:可选的 reCAPTCHA 验证服务,成功验证的记录可用于训练数据。
- **速率限制**:由小型守护进程写入 Nginx 的自适应 IP 限速。
- **社区封禁列表**:可选的守护进程,从共享封禁列表服务同步 IP。
- **公共社区封禁列表服务**:轻量级 FastAPI 应用,供贡献者共享与获取恶意 IP。
- **联邦威胁共享**:点对点同步,在各部署间交换封禁 IP。
- **容器化**:完全容器化,基于 Docker 构建,可直接部署到 Kubernetes。
- **多租户就绪**:命名空间配置与 Redis 键使用 `TENANT_ID` 实现轻松隔离。
- **可选云集成**:通过环境变量开关 CDN 缓存、DDoS 缓解、托管 TLS 与 Web 应用防火墙。
- **插件 API**:可插入的 Python 模块,允许自定义规则扩展检测逻辑。
- **通过 AI 进行异常检测**:超越启发式规则,集成异常检测模型以实现更灵活的安全防护。
- **API 序列异常检测**:基于马尔可夫的评分机制,识别异常请求模式。
- **爬虫认证与按次计费**:令牌注册与用量统计,支持计费实验。可选择是否允许机器人付费访问或直接拦截。
- **按次计费区块链日志**:可选的哈希链审计日志,用于爬虫计费。详见 `docs/PAY_PER_CRAWL_BLOCKCHAIN_LOG.md`。
- **支付网关集成**:多提供商网关(`StripeGateway`、`PayPalGateway`、`BraintreeGateway`、`SquareGateway`、`AdyenGateway`、`AuthorizeNetGateway` 或通用 HTTP 后端),处理爬虫账户创建、余额查询、收费与退款。
- **AI 迷宫陷阱**:可选的无限迷宫页面,捕获顽固机器人。
- **零信任风险与攻击评分**:占位模块提供风险分析钩子。
- **自动化配置建议**:AI 驱动的服务,分析流量模式并建议防火墙与陷阱参数调整。
- **审计日志**:敏感操作写入循环 `audit.log`,便于取证审查。
- **异常告警动作**:根据异常评分执行告警、封禁或上报。详见 `docs/ANOMALY_ALERTING.md`。
- **RBAC 控制**:管理端点验证 `ADMIN_UI_ROLE` 环境变量,拒绝非管理员用户。
- **管理 UI SSO**:可选 OIDC/SAML 身份验证与 MFA。详见 `docs/ADMIN_UI_SSO.md`。
- **模型版本指标**:Prometheus 指标 `model_version_info` 暴露当前运行的 ML 模型版本。
- **CORS 与 CSP 头**:管理 UI 设置 CORS 策略与默认的 Content-Security-Policy 头。`ADMIN_UI_CORS_ORIGINS` 默认为 `http://localhost`,需明确列出来源;启用凭据时拒绝通配符 `*`。
- **附加安全头**:Nginx 默认发送 `Referrer-Policy`、`Permissions-Policy` 与 `X-Permitted-Cross-Domain-Policies` 头。详见 `docs/SECURITY_HEADERS.md`。
- **结构化错误**:API 错误包含稳定错误码与请求 ID。详见 `docs/ERROR_HANDLING.md`。
- **标准化 HTTP 重试**:共享重试/退避策略与断路器机制。详见 `docs/HTTP_CLIENT_POLICY.md`。
## 仓库结构
- `src/` —— 核心 Python 微服务与共享模块。
- `scripts/` —— 安装辅助与部署工具。
- `rag/` —— 检索增强生成资源与训练工具。
- `docs/` —— 项目文档。
## CI 自动化:审计 + 自动修复
- 工作流提供分类审计与自动修复功能,并设有安全护栏:
- `/.github/workflows/master-problem-detection.yml`:协调所有分类;输入 `autofix=true` 将为每个分类打开 PR。
- `/.github/workflows/comprehensive-*-audit.yml`:运行单个分类并启用 `autofix`(默认为 true)。
- `/.github/workflows/autofix.yml`:通用自动修复启动器,不执行审计。
- 护栏比较前后结果(flake8、bandit、eslint、yamllint、shellcheck、hadolint、markdownlint、golangci-lint、tflint/tfsec),并在存在测试时运行。若任何指标退化,工作流将打开问题且不启用自动合并。
- PR 将被标记为 `autofix` 及对应分类,仅在护栏通过时启用自动合并。
- 旧版 `security-autofix.yml` 现在委托给通用自动修复器以保持兼容性。
- `security-controls` 工作流作为安全基线门控。详见 `docs/SECURITY_BASELINE_GATE.md`。
## 发布路径
- `ci-tests.yml` 是推送至 `main` 与拉取请求的主要跨平台验证工作流。
- `tests.yml` 现在作为独立的 Rust 夜间冒烟测试工作流,替代主 PR 测试路径的重复。
- `security-attack-regression.yml` 是确定性 PR 时入口回归门控;它在本地启动 Compose 栈并断言预期的安全行为。
- `kali-security-sweep.yml` 是面向外部攻击扫描的更广泛入口,用于自托管 Kali 运行器对预览或暂存目标的测试。
- 标记版本通过 `/.github/workflows/release-images.yml` 发布签名容器镜像。
- 标记版本也通过 `/.github/workflows/release-bundles.yml` 发布版本化安装包。
详见 [docs/release_checklist.md](docs/release_checklist.md) 与 [docs/release_artifacts.md](docs/release_artifacts.md) 获取预期的发布流程与制品策略。
## 架构概览
下图展示了主要组件之间的交互方式。请注意,AI 服务仅接收 Webhook 数据并将其入队至 Escalation Engine,后者执行实际分析。详见 [docs/architecture.md](docs/architecture.md) 获取更深入解释。
```
graph TD
subgraph "User / Bot Traffic"
direction LR
User["👤 User"]
Bot["🤖 Bot"]
end
subgraph "Defense System"
direction TB
Nginx["🛡️ Nginx Proxy w/ Lua"]
subgraph "Analysis & Logic (Python Microservices)"
direction LR
AIService["AI Service Webhook"]
EscalationEngine["🧠 Escalation Engine"]
AdminUI["📊 Admin UI"]
CloudDashboard["☁️ Cloud Dashboard"]
ConfigRecommender["🔧 Config Recommender"]
BlocklistSync["🔄 Blocklist Sync"]
PeerSync["🔄 Peer Sync"]
RateLimitDaemon["⚙️ Rate Limit Daemon"]
end
subgraph "Countermeasures"
TarpitAPI["🕸️ Tarpit API"]
end
subgraph "Data & State Stores"
direction LR
Redis["⚡ Redis\n(Blocklist, Cache)"]
Postgres["🐘 PostgreSQL\n(Markov Data)"]
end
end
subgraph "External Services"
LLM["☁️ LLM APIs\n(OpenAI, Mistral, etc.)"]
CommunityBlocklist["☁️ Community Blocklist"]
PeerDeployments["☁️ Peer Deployments"]
end
User -- "Legitimate Request" --> Nginx
Bot -- "Suspicious Request" --> Nginx
Nginx -- "Block Immediately" --> Bot
Nginx -- "Forward for Analysis" --> AIService
Nginx -- "Serve Content" --> User
Nginx -- "Redirect to Tarpit" --> Bot
AIService -- "Queues Request" --> EscalationEngine
EscalationEngine -- "Reads/Writes" --> Redis
EscalationEngine -- "Reads" --> Postgres
EscalationEngine -- "Calls for Final Verdict" --> LLM
EscalationEngine -- "Updates" --> AdminUI
AdminUI -- "Streams Metrics" --> CloudDashboard
AdminUI -- "Feeds" --> ConfigRecommender
ConfigRecommender -- "Suggestions" --> AdminUI
BlocklistSync -- "Update" --> Redis
PeerSync -- "Share IPs" --> Redis
RateLimitDaemon -- "Adjust Limits" --> Nginx
BlocklistSync -- "Fetch IPs" --> CommunityBlocklist
PeerSync -- "Exchange IPs" --> PeerDeployments
AdminUI -- "Manages" --> Redis
TarpitAPI -- "Reads" --> Postgres
```
## 威胁模型
详见 [docs/threat_model.md](docs/threat_model.md) 了解本项目所针对的对手与攻击向量。
## 公共封禁列表 API
公共封禁列表服务需要身份验证。设置
`PUBLIC_BLOCKLIST_API_KEY` 环境变量,并在调用 `/report` 端点时通过
`X-API-Key` 头提供其值。缺少该头或使用错误密钥的请求将收到 HTTP 401 响应。
## 新手快速开始
以下是特定平台安装前提与运行辅助脚本的步骤。该
脚本复制 `sample.env`(如需极简配置可使用 `sample.env.min`),生成密钥,安装依赖并启动 Docker Compose。详见
[docs/getting_started.md](docs/getting_started.md) 获取完整引导。
### Linux
1. [安装 Docker Engine](https://docs.docker.com/engine/install/) 并确保其正在运行。
2. 安装 Python 3.10 或更高版本(基于 Debian 的发行版执行 `sudo apt install python3 python3-venv`)。
3. 克隆仓库并执行 Linux 安装脚本:
```bash
git clone https://github.com/your-username/ai-scraping-defense.git
cd ai-scraping-defense
sudo ./scripts/linux/install.sh
```
4. 容器启动后,打开 [http://localhost:5002](http://localhost:5002) 查看管理 UI 仪表盘。
5. 若出现 “Cannot connect to the Docker daemon”,请启动服务:
`sudo systemctl start docker` 并验证 `docker info`。
### macOS
1. 安装 [Docker Desktop](https://www.docker.com/products/docker-desktop) 并启动应用。
2. 使用 [Homebrew](https://brew.sh/) 安装 3.10+:`brew install python`。
3. 克隆仓库并运行:
```bash
git clone https://github.com/your-username/ai-scraping-defense.git
cd ai-scraping-defense
./scripts/macos/install.zsh
```
4. 容器启动后,访问 [http://localhost:5002](http://localhost:5002) 打开管理 UI。
5. 若容器启动失败,请确认 Docker Desktop 正在运行。
6. 详细步骤与安全工具请参考 [macOS 安装指南](docs/macos_setup.md)。
### Windows
1. 安装 [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop) 并确保其运行。
2. 从 [python.org](https://www.python.org/downloads/windows/) 安装 Python 3.10+。
3. 在 **管理员 PowerShell** 窗口中运行:
```bash
git clone https://github.com/your-username/ai-scraping-defense.git
cd ai-scraping-defense
.\scripts\windows\install.ps1
```
4. 容器启动后,访问 [http://localhost:5002](http://localhost:5002) 使用管理 UI。
5. 若无法找到 Docker 命令,请确认 Docker Desktop 正在运行。
## 快速本地搭建
克隆仓库后运行自动化安装器:
```
git clone https://github.com/your-username/ai-scraping-defense.git
cd ai-scraping-defense
cp sample.env .env
python scripts/validate_env.py
sudo ./scripts/linux/install.sh # Linux
./scripts/macos/install.zsh # macOS
```
对于安全测试环境,辅助脚本 `scripts/linux/security_setup.sh` 将安装所有 Python 依赖与安全工具,供 `scripts/linux/security_scan.sh` 使用。
在 Windows 上,请改用 `scripts\windows\install.ps1`。
Linux 安装器会生成本地密钥,使用
`pip install -r requirements.txt -c constraints.txt` 安装依赖,
随后运行
`python scripts/validate_env.py`,并通过选择的反向代理启动 Docker Compose。
有关 Linux 特定的回滚与卸载步骤,请参见 [docs/linux_installer.md](docs/linux_installer.md)。
该栈需要 Rust 1.78.0。`mise`(或 `rustup`)可自动安装此工具链。
若希望下载标记版本的压缩包而非克隆仓库,可在 Windows 上使用 `.zip`,在 Linux 与 macOS 上使用 `.tar.gz`,然后从解压后的仓库根目录运行相同安装入口点。
若需通过 `llamacpp://` 适配器进行本地 GGUF 推理,请在基础环境就绪后安装可选原生依赖集:
```
pip install -r requirements-local-llm.txt -c constraints.txt
```
若遇到 `idiomatic_version_file_enable_tools` 警告,可通过以下命令静默:
```
mise settings add idiomatic_version_file_enable_tools rust
```
若已安装 Rust 1.78.0,可忽略此消息。
详细设置步骤请参考 [docs/getting_started.md](docs/getting_started.md)。
如遇安装错误,请查阅 [docs/troubleshooting.md](docs/troubleshooting.md)。
## 手动本地搭建
若你希望自行配置所有组件,请按以下步骤操作:
1. **克隆仓库:**
```bash
git clone https://github.com/your-username/ai-scraping-defense.git
cd ai-scraping-defense
```
2. **创建环境文件:**
复制示例环境文件或使用交互式助手自定义配置。
```bash
cp sample.env .env
# 可选引导式设置
python scripts/interactive_setup.py
```
交互式助手也可在完成后启动 Docker Compose 或部署至 Kubernetes(若选择继续)。
若同意,密钥将保存至本地 SQLite 数据库 `secrets/local_secrets.db`。选择 **n** 可禁用数据库并清除已存值。
打开 `.env` 并检查默认值。设置 `TENANT_ID` 以实现隔离部署,并添加计划使用的 API 密钥。容器化 Nginx 代理默认监听 `8088`/`8443`,以便与主机上的 Apache 或 Nginx 共存。**生产环境或接管部署**请将 `NGINX_HTTP_PORT` 改为 `80`、`NGINX_HTTPS_PORT` 改为 `443`,并确保该栈是主机上唯一监听的服务。使用 `REAL_BACKEND_HOSTS` 提供以逗号分隔的后端列表用于负载均衡,或使用 `REAL_BACKEND_HOST` 指定单一目标。详见 [docs/ubuntu_reverse_proxy.md](docs/ubuntu_reverse_proxy.md)。
完整上线流程请参考 [docs/test_to_production.md](docs/test_to_production.md)。
3. **设置 Python 虚拟环境:**
运行设置脚本创建虚拟环境并安装所有 Python 依赖。
环境创建后,使用约束文件安装项目要求:
```bash
pip install -r requirements.txt -c constraints.txt
```
若计划使用 Kubernetes 集成,请改用:
```bash
pip install -r requirements-kubernetes.txt -c constraints.txt
```
注意:Kubernetes 客户端当前依赖 `urllib3<2.4.0`,存在已知 CVE。仅在可接受此风险时使用该依赖集。
在 CI 中审计可选的 Kubernetes 依赖集,请运行
`security-controls` 工作流并设置 `audit_kubernetes=true`。
要在 GitHub 运行器上执行可选的 Kubernetes 冒烟测试(使用 kind),触发 `k8s-smoke` 工作流。
*Linux/macOS:*
```bash
sudo bash ./reset_venv.sh
```
*Windows(管理员 PowerShell):*
```bash
.\reset_venv.ps1
```
4. **生成密钥:**
运行密钥生成脚本以创建数据库、Admin UI 及其他服务的密码。脚本将生成 `kubernetes/secrets.yaml` 文件并打印凭证至控制台。运行 `--update-env`(如交互式设置中)时,脚本还会更新 `.env` 并将数据库与 Redis 密码写入 `secrets/pg_password.txt` 与 `secrets/redis_password.txt`,供 Docker Compose 挂载。这些文件在容器内具有可读权限,适用于本地与 CI 使用。
本地密钥安全检查清单:
- 对存储密钥的磁盘使用全磁盘加密(LUKS、FileVault、BitLocker)。
- 排除 `secrets/` 目录于任何云同步或备份工具之外。
- 生产环境建议使用密钥管理器(Vault、Docker Secrets 或 Kubernetes Secrets)。
*Linux/macOS:*
```bash
bash ./scripts/linux/generate_secrets.sh --update-env
# 导出凭证到 JSON 文件
bash ./scripts/linux/generate_secrets.sh --export-path my_secrets.json
```
*Windows:*
```bash
.\scripts\windows\Generate-Secrets.ps1
# 保存凭证到 JSON 文件
.\scripts\windows\Generate-Secrets.ps1 -ExportPath my_secrets.json
```
5. **启用 HTTPS(可选):**
编辑 `.env` 并设置 `ENABLE_HTTPS=true` 以及证书与密钥路径。
设置脚本会在 `nginx/certs/` 生成自签名证书(本地测试足够),生产环境请替换为可信证书。
```ini
ENABLE_HTTPS=true
TLS_CERT_PATH=./nginx/certs/tls.crt
TLS_KEY_PATH=./nginx/certs/tls.key
```
6. **启动栈:**
使用 Docker Compose 构建并启动服务:
```bash
docker-compose up --build -d
```
如需强化配置(丢弃 Linux 能力并强制 `no-new-privileges`),请使用:
```bash
docker compose -f docker-compose.yaml -f docker-compose.security.yml up -d
```
如需启用 Nginx 性能优化指令,请使用:
```bash
docker compose -f docker-compose.yaml -f docker-compose.performance.yml up -d
```
若需在前置代理后运行 WordPress,可执行 `./setup_wordpress_website.sh`(Windows 使用 `.ps1`),它将启动 WordPress 与 MariaDB 并自动设置 `REAL_BACKEND_HOST`。如需更轻量测试,可运行 `./setup_fake_website.sh` 创建简易 Nginx 站点。
7. **访问服务:**
- **管理 UI:** `http://localhost:5002`
- **云仪表盘:** `http://localhost:5006`
- **云代理:** `http://localhost:5008`
- **提示路由:** `http://localhost:8009`
- **Nginx 代理(推荐):** `http://localhost:8088`
- **Nginx 代理 HTTPS(如启用):** `https://localhost:8443`
- **Apache 代理(可选):** `http://localhost:8080`
## 可功能
多数集成默认关闭以保持轻量。可通过编辑 `.env` 启用:
- **Web 应用防火墙**(`ENABLE_WAF`)——挂载 `WAF_RULES_PATH` 下的 ModSecurity 规则。详见 [docs/waf_setup.md](docs/waf_setup.md)。
- **全局 CDN**(`ENABLE_GLOBAL_CDN`)——使用 Cloudflare 进行边缘缓存失效。需 `CLOUD_CDN_ZONE_ID` 与 `CLOUD_CDN_API_TOKEN`(或 `CLOUD_CDN_API_TOKEN_FILE`)。
- **DDoS 缓解**(`ENABLE_DDOS_PROTECTION`)——可选的 `ddos_guard.py` 日志监控,检测洪水模式与体积攻击,并将违规者上报至本地升级引擎。请求也可转发至外部提供者。
- **托管 TLS**(`ENABLE_MANAGED_TLS`)——通过 `TLS_PROVIDER` 自动签发证书,联系人邮箱为 `TLS_EMAIL`。
- **验证码验证**——设置 `CAPTCHA_SECRET` 以激活 reCAPTCHA 挑战。
- **Fail2ban**——启动 `fail2ban` 容器,基于封禁 IP 插入防火墙规则。详见 [docs/fail2ban.md](docs/fail2ban.md)。
- **LLM 陷阱页面**(`ENABLE_TARPIT_LLM_GENERATOR`)——使用 LLM 生成虚假页面(需提供模型 URI)。
- **管理 UI 双因素认证**——设置 `ADMIN_UI_2FA_SECRET`(或 `ADMIN_UI_2FA_SECRET_FILE`)并提供 TOTP 至 `X-2FA-Code` 头。
若 ISP 屏蔽入站托管端口,可通过 Cloudflare Tunnel 暴露本地栈:
```
# Linux quick temporary URL (trycloudflare.com)
./scripts/linux/start_cloudflare_tunnel.sh
# 使用现有 Cloudflare Zero Trust 隧道的令牌设置 Linux 命名隧道
CLOUDFLARE_TUNNEL_TOKEN= ./scripts/linux/start_cloudflare_tunnel.sh
```
```
# macOS
./scripts/macos/start_cloudflare_tunnel.zsh
```
```
# Windows PowerShell
.\scripts\windows\start_cloudflare_tunnel.ps1
```
## 项目结构
- `src/` —— 所有 Python 微服务与共享模块。
- `kubernetes/` —— 生产部署所需的 Kubernetes 清单。
- `nginx/` —— Nginx 与 Lua 配置文件。
- `docs/` —— 项目文档(含架构与数据流)。
- 若防病毒软件误报文件,请参考 [docs/antivirus.md](docs/antivirus.md)。
- `test/` —— Python 服务的单元测试。
- `sample.env` —— 本地开发配置模板。详见 [配置参考](docs/configuration.md)。
- `Dockerfile` —— 构建所有 Python 服务的基础镜像。
- `jszip-rs/` —— 伪造 JavaScript 归档的 Rust 实现。
- `markov-train-rs/` —— 马尔可夫训练工具的 Rust 实现。
在安全测试环境中运行前,请先执行 `./scripts/linux/security_setup.sh` 以安装所有单元测试与安全扫描所需依赖。
### 多租户运行
为每个租户创建独立的 `.env` 文件,使用唯一的 `TENANT_ID` 与端口映射。
使用不同的项目名称启动每个栈,使 Docker Compose 保持服务隔离:
```
docker compose --env-file .env.siteA -p siteA up -d
docker compose --env-file .env.siteB -p siteB up -d
```
Redis 键与 SQLite 记录将自动使用租户 ID 作为前缀。
## AI 模型配置
检测服务从 `.env` 中的 `MODEL_URI` 加载模型。示例包括本地 scikit-learn 文件或外部 API:
```
MODEL_URI=sklearn:///app/models/bot_detection_rf_model.joblib
MODEL_URI=openai://gpt-4-turbo
MODEL_URI=mistral://mistral-large-latest
```
对于远程提供者,请在 `.env` 中设置对应的 API 密钥(`OPENAI_API_KEY`、`MISTRAL_API_KEY` 等)。
若使用本地文件且采用 `sklearn://` 方案,文件必须位于受信任目录。默认仅允许从 `models/` 加载(可通过 `TRUSTED_MODEL_DIR` 覆盖)。
文件位于目录之外将被忽略,以避免执行不可信代码。
来自升级引擎的所有 LLM 请求均发送至 **提示路由器**。路由器根据 `PROMPT_ROUTER_HOST` 与 `PROMPT_ROUTER_PORT` 构建目标 URL,并决定使用本地模型或转发至云代理。默认端口值在 `sample.env` 中定义:
```
# excerpt from sample.env
PROMPT_ROUTER_PORT=8009
PROMETHEUS_PORT=9090
GRAFANA_PORT=3000
```
## 模型适配器指南
[模型适配器指南](docs/model_adapter_guide.md) 说明了所有可用方案及如何扩展系统以支持新提供者。
## 马尔可夫训练工具(Rust)
`markov-train-rs` 包含高性能的语料库加载器。
它通过 PyO3 暴露 `train_from_corpus_rs` 函数供 Python 调用。
仓库锁定在 **Rust 1.78.0**,请确保安装该工具链后再构建。
使用 Cargo 构建扩展:
```
cd markov-train-rs
cargo build --release
```
构建完成后,调用该函数填充 PostgreSQL:
```
python -c "import markov_train_rs, os; markov_train_rs.train_from_corpus_rs(os.environ['CORPUS_FILE_PATH'])"
```
确保已设置常用环境变量(`PG_HOST`、`PG_PORT`、`PG_DBNAME`、`PG_USER`、`PG_PASSWORD_FILE`),以便库能连接至 PostgreSQL。
## JS ZIP 生成器(Rust)
`jszip-rs` 提供可选的 Rust 后端,用于生成大体积伪造 JavaScript 归档文件,供陷阱使用。可通过 Cargo 构建:
```
cd jszip-rs
cargo build --release
```
构建需要 Python 开发头文件(如 `python3-dev`),以便 PyO3 能链接 `libpython`。
生成的 `jszip_rs` Python 模块将在可用时自动使用。
## 训练检测模型
`src/rag/training.py` 脚本现支持 `--model` 参数以选择机器学习算法。可选值:`rf`(随机森林,默认)、`xgb`(XGBoost)、`lr`(逻辑回归)。示例用法:
```
python src/rag/training.py --model xgb
```
该灵活性便于尝试不同分类器。
现在细调路径要求与导出数据集同目录的 provenance sidecar 文件。正常导出流程会自动写入这些元数据文件;导入的数据集应提供匹配的 `*.metadata.json` 文件,否则 `src/rag/finetune.py` 将默认拒绝。
详见 [docs/local_model_training.md](docs/local_model_training.md) 了解信任边界与审查要求。
## 快速 Kubernetes 部署
运行辅助脚本以一步将全部内容部署到 Kubernetes。确保
`kubernetes/secrets.yaml` 文件已存在(可通过 `scripts/linux/generate_secrets.sh` 或交互式设置生成):
```
./scripts/linux/quick_deploy.sh # or .\scripts\windows\quick_deploy.ps1 on Windows
```
在 Windows 上,请运行 `scripts\windows\quick_deploy.ps1`,需使用 **管理员 PowerShell**。
该脚本应用所有清单,不负责生成密钥。
## 手动 Kubernetes 部署
详细分步指南请参见 [docs/kubernetes_deployment.md](docs/kubernetes_deployment.md)。`scripts/linux/deploy.sh` 与 `scripts/windows/deploy.ps1` 提供手动方案(若需要更多控制)。
## 云端部署(GKE 示例)
要将栈部署到托管 Kubernetes 服务(如 Google Kubernetes Engine),请遵循 [docs/cloud_provider_deployment.md](docs/cloud_provider_deployment.md)。提供了自动化便利脚本:
```
./scripts/linux/gke_deploy.sh # or .\scripts\windows\gke_deploy.ps1 on Windows
```
### GitHub Actions 运行器部署
工作流 `linux-stack.yml` 现演示部署到 GitHub 运行器环境。可从 **Actions** 标签触发以查看部署工件上传。详见 [docs/github_actions_deployment.md](docs/github_actions_deployment.md)。
## 负载测试辅助
使用辅助脚本测试栈在负载下的表现:
```
./setup_load_test_suite.sh (or ./setup_load_test_suite.ps1 on Windows)
```
它安装常用开源工具(**wrk**、**siege**、**ab**、**k6**、**locust**)。请负责任地使用,仅针对你控制的环境。
安装完成后,可使用提供的脚本执行基础压力测试:
```
./stress_test.ps1 -Target http://your-linux-host:8088 -VUs 50 -DurationSeconds 30
```
```
./stress_test.sh http://your-linux-host:8088
```
## 安全扫描辅助
可选脚本 `scripts/linux/security_scan.sh` 与 `scripts/windows/security_scan.ps1` 自动化使用 **Nmap**、**Nikto** 与 **Trivy** 进行漏洞检查。请安装依赖并以适当权限运行以完成网络扫描。详见 [docs/security_scan.md](docs/security_scan.md)。**仅在你拥有或获授权测试的系统上使用。**
## 安全告警管理
### 从安全告警创建问题
`scripts/create_issues_from_alerts.py` 脚本可自动从代码扫描与密钥扫描告警创建 GitHub 问题,便于跟踪与管理安全发现。
**快速启动:**
```
# 安装依赖项
pip install requests PyGithub
# 以仅预览模式运行(不创建问题)
export GITHUB_TOKEN="your_github_token"
./scripts/run_create_issues.sh
# 创建问题(实时模式)
./scripts/run_create_issues.sh --live
```
**特性:**
- ✅ 获取所有开放的代码扫描与密钥扫描告警
- ✅ 合并相似告警以避免创建重复问题
- ✅ 创建包含修复建议的详细问题
- ✅ 在创建前检查现有问题
- ✅ 支持安全演练模式dry-run)
**文档:** 详见 [docs/creating_issues_from_alerts.md](docs/creating_issues_from_alerts.md) 获取详细用法。
**自动化:** 工作流每周一自动运行(通过 `.github/workflows/create-issues-from-alerts.yml`)或可从 **Actions** 标签手动触发。
### 管理与合并告警、问题与 PR
`scripts/manage_alerts_issues_prs.py` 脚本可协助管理安全告警、问题与拉取请求,通过识别重复项、诊断错误状态告警并保持仓库整洁。
**快速启动:**
```
# 安装依赖项
pip install requests PyGithub
# 以不进行更改的干运行模式运行
export GITHUB_TOKEN="your_github_token"
./scripts/run_alert_management.sh
# 或者使用 Python 直接运行
python scripts/manage_alerts_issues_prs.py \
--owner rhamenator \
--repo ai-scraping-defense \
--dry-run
```
**功能:**
- ✅ 合并重复的安全告警(代码扫描、密钥扫描、Dependabot)
- ✅ 关闭重复的问题与 PR 并附上超期说明
- ✅ 诊断错误状态告警并提出修复建议
- ✅ 生成所有操作的综合报告
该脚本智能分组条目(依据问题描述而非文件路径或 ID),确保跨文件重复告警被正确合并。所有关闭条目均会引用主条目。
**文档:**
- **快速启动:** [QUICK_START_ALERT_MANAGEMENT.md](QUICK_START_ALERT_MANAGEMENT.md)
- **详细指南:** [docs/alert_management_guide.md](docs/alert_management_guide.md)
- **技术文档:** [scripts/ALERT_MANAGEMENT_README.md](scripts/ALERT_MANAGEMENT_README.md)
也可通过 GitHub Actions 自动运行(参见 `.github/workflows/manage-alerts.yml`)。
## 监控栈
Docker Compose 包含一个轻量级的 Prometheus 与 Grafana 部署。Prometheus 每 15 秒抓取 Python 服务,Grafana 在 `${GRAFANA_PORT:-3000}` 暴露仪表板(默认登录 `admin` / `admin`)。可导入官方仪表板或自定义以监控请求速率与响应时间。
```
# excerpt from sample.env
PROMETHEUS_PORT=9090
GRAFANA_PORT=3000
```
- **Prometheus UI:** [http://localhost:${PROMETHEUS_PORT:-9090}](http://localhost:9090) 显示原始指标与抓取目标。
- **Grafana UI:** [http://localhost:${GRAFANA_PORT:-3000}](http://localhost:3000)(默认凭据 `admin` / `admin`)。可导入 Grafana 仪表板或自建以监控请求速率与响应时间。
栈中还运行 `watchtower` 容器,每分钟检查镜像更新并自动重启服务。如需手动更新,请注释或移除 `docker-compose.yaml` 中的 `watchtower` 部分。
标签:AI反爬虫, AI驱动安全, Apex, API密钥扫描, API序列异常检测, AppImage, CDN缓存, Cohere, DDoS缓解, Docker, IP封锁, LLM集成, Lua, Mistral, Nginx, NIDS, OpenAI, Python微服务, Redis, rizin, SaaS安全, SEO防护, Tarpit, Web应用防火墙, 内存规避, 内容防护, 反机器人, 可视化界面, 命名空间隔离, 多层防御, 威胁共享, 子域名突变, 安全防御评估, 实时检测, 容器化, 开源项目防护, 异常检测, 托管TLS, 插件API, 搜索引擎查询, 文档站点防护, 日志训练数据, 机器学习, 模型即适配器, 测试用例, 爬虫检测, 社区黑名单, 联邦威胁情报, 自定义请求头, 自适应限流, 蜜罐, 规则扩展, 证书利用, 诱捕, 请求拦截, 逆向工具, 马尔可夫评分, 验证码reCAPTCHA