rhamenator/ai-scraping-defense-iis

GitHub: rhamenator/ai-scraping-defense-iis

面向 Windows Server/IIS 环境的 ASP.NET Core 防御框架,通过实时检测、Tarpit 诱捕、行为分析和社区协同等多层机制对抗未经授权的 AI 爬虫抓取。

Stars: 1 | Forks: 0

# AI Scraping 防御 (.NET) 本仓库正重新定位回其初衷:实现一个纯 .NET 的 `ai-scraping-defense` 技术栈,而不是一个 IIS 到 Linux 的控制平面适配器。 当前代码库现已在 [RedisBlocklistMiddlewareApp/Program.cs](RedisBlocklistMiddlewareApp/Program.cs) 中包含首个 .NET 原生防御切片: - 基于 Redis 的边缘 IP 黑名单强制执行。 - 针对已知恶意 User-Agent、格式错误的 Headers 和可疑路径的启发式请求检测。 - 具有后台分析工作线程的有界可疑请求队列。 - 基于 Redis 的请求频率跟踪,用于简单的升级决策。 - 通过配置的 CIDR 信誉范围、可选的 HTTP 信誉检查以及可选的 OpenAI 兼容分类器钩子实现的可插拔升级机制。 - 返回合成 HTML 和递归链接的确定性 Tarpit(诱导陷阱)端点。 - 位于 `/defense/events` 的轻量级认证事件源,用于记录最近的决策。 - 位于 `/defense/*` 下的认证操作员指标和黑名单管理端点。 - 带有基于 SQLite 的持久化存储的认证 `/analyze` Webhook 端点,用于接收已确认的恶意事件。 - 可选的社区黑名单源同步,并在 `/defense/community-blocklist/status` 下显示认证状态。 - 可选的 Peer 同步功能,支持显式的 `ObserveOnly` 和 `BlockList` 信任模式,以及位于 `/peer-sync/signals` 的认证信号导出。 - 可选的 PostgreSQL 支持的 Markov Tarpit 内容,具有确定性渲染变体。 ## 商业 v1 范围 首个商业版本是一个单一可部署的 ASP.NET Core 服务,在 .NET 中提供核心 `ai-scraping-defense` 工作流: - 在边缘检查入站请求 - Tarpit(诱捕)可疑流量 - 持久化防御决策和操作员可见的事件 - 接收用于已确认恶意流量的认证 Webhook - 通过认证的操作员端点封禁和解封 IP 这在 v1 中故意设计为模块化单体。它保留了上游的功能角色,但在 .NET 契约和生产行为稳定之前,将它们保留在一个部署单元中。 请参阅 [docs/architecture.md](docs/architecture.md) 了解当前架构,[docs/commercial_scope.md](docs/commercial_scope.md) 了解 v1 定义,以及 [docs/dotnet_parity_roadmap.md](docs/dotnet_parity_roadmap.md) 了解 v1 后的平衡队列。 ## 已实现的端点 - `GET /health` - `GET /anti-scrape-tarpit/{path}` `GET /defense/events` 仅在配置了 `DefenseEngine:Management:ApiKey` 时暴露。 `GET /defense/metrics` 和黑名单管理端点通过配置的 `DefenseEngine:Management:ApiKeyHeaderName` Header 遵循相同的 API 密钥保护。 `POST /analyze` 仅在配置了 `DefenseEngine:Intake:ApiKey` 时暴露,并期望配置的 `DefenseEngine:Intake:ApiKeyHeaderName` Header。 管理端点: - `GET /defense/events?count=50` - `GET /defense/metrics` - `GET /defense/community-blocklist/status` - `GET /defense/peer-sync/status` - `GET /defense/blocklist?ip=203.0.113.10` - `POST /defense/blocklist?ip=203.0.113.10&reason=manual_block` - `DELETE /defense/blocklist?ip=203.0.113.10` Webhook 接收端点: - `POST /analyze` - 主体结构反映了旧版 AI 服务 Webhook:`event_type`、`reason`、`timestamp_utc`、`details` - `details.ip` 是必需的,并且必须是一个有效的 IP 地址 - 接受的事件在后台处理之前会被持久化写入 Peer 导出端点: - `GET /peer-sync/signals?count=200` - 仅在配置了 `DefenseEngine:PeerSync:ExportApiKey` 时暴露 - 需要配置的 `DefenseEngine:PeerSync:ExportApiKeyHeaderName` Header - 将最近的封禁防御决策导出为可共享的 Peer 信号 ## 支持的数据存储 - `Redis`:热操作状态(如黑名单和短窗口频率计数器)所需。 - `SQLite`:支持用于本地开发、演示和单节点/轻量级生产安装,作为持久化审计和 Webhook 接收存储。 - `PostgreSQL`:支持 Markov 支持的 Tarpit 语料库,并且仍然是主要的生产关系型方向,用于更丰富的内容和更大规模的持久化。 - `SQL Server`:已延期。除非客户需求证明额外的提供者和测试覆盖面是合理的,否则它不是商业 v1 的目标。 ## 升级扩展 排队的可疑请求分析现在持久化一个分数细分,包含来自以下方面的命名贡献: - 基础边缘启发式 - 短窗口请求频率 - 配置的 CIDR 信誉范围 - 可选的 HTTP 信誉提供者 - 可选的 OpenAI 兼容分类器端点 默认配置保持外部信誉/模型钩子禁用。它们在 `DefenseEngine:Escalation` 下暴露,以便生产部署可以选择加入,而无需更改请求管道的其余部分。 ## PostgreSQL Tarpit Tarpit 现在可以在 `DefenseEngine:Tarpit:PostgresMarkov` 下从固定的合成段落切换到 PostgreSQL 支持的 Markov 语料库。启用后,应用程序读取 `markov_words` 和 `markov_sequences` 表,并使用持久化语料库生成确定性的浪费爬虫时间的段落。基础 Schema 位于 [init_markov.sql](/home/rich/dev/ai-scraping-defense-iis/db/init_markov.sql)。 ## 配置 .NET 防御基础在 `DefenseEngine` 部分下的 [RedisBlocklistMiddlewareApp/appsettings.json](RedisBlocklistMiddlewareApp/appsettings.json) 中配置。 关键区域: - `DefenseEngine:Redis` - `DefenseEngine:Heuristics` - `DefenseEngine:Networking` - `DefenseEngine:Management` - `DefenseEngine:Intake` - `DefenseEngine:Audit` - `DefenseEngine:Escalation` - `DefenseEngine:CommunityBlocklist` - `DefenseEngine:PeerSync` - `DefenseEngine:Queue` - `DefenseEngine:Tarpit` 对于直接边缘部署,请将 `DefenseEngine:Networking:ClientIpResolutionMode` 保留为 `Direct`。如果应用程序位于反向代理或 CDN 后面,请将其切换为 `TrustedProxy`,并使用您明确信任的代理 IP 填充 `DefenseEngine:Networking:TrustedProxies`。 防御决策现在通过 `DefenseEngine:Audit:DatabasePath` 持久化到 SQLite,这使得最近的事件历史记录在重启后仍然可用。 在 `Production` 环境中,如果 Redis 仍然指向像 `localhost` 这样的环回端点,启动现在会快速失败,除非您使用 `DefenseEngine:Redis:AllowLoopbackConnectionStringInProduction` 显式选择加入。 ## 状态 该项目现在有一个明确的 commercial-v1 目标,但发布准备就绪仍取决于解决 [docs/release_blockers.md](docs/release_blockers.md) 中的剩余项目以及 [docs/dotnet_parity_roadmap.md](docs/dotnet_parity_roadmap.md) 中的 v1 后平衡队列。
标签:AI 爬虫防御, ASP.NET Core, ATT&CK 防护, CIDR 声誉, CISA项目, IIS 安全, IP 黑名单, LLM 集成, Petitpotam, PostgreSQL, Redis, SQLite, Tarpit, WAF, Windows Server, 反爬虫, 多人体追踪, 恶意请求检测, 搜索引擎查询, 机器人流量管理, 测试用例, 网络安全, 网络应用防火墙, 蜜罐技术, 边缘计算, 防御策略, 隐私保护