tpyo/kilter

GitHub: tpyo/kilter

基于Cloudflare Pingora框架开发的高性能限流反向代理,能区分友好爬虫和恶意爬虫并实施差异化限流策略。

Stars: 1 | Forks: 0

# kilter 基于 Cloudflare 的 [Pingora](https://github.com/cloudflare/pingora) 框架构建的高性能限流反向代理,受 [sphinx](https://github.com/Clever/sphinx) 启发。 ## 设计上对爬虫友好 搜索引擎爬虫对你的网站有益,但激进的爬虫则不然。Kilter 让你能够区分它们: - **内置 IP 集合**用于 Google、Bing、OpenAI(SearchBot、GPTBot、ChatGPT-User)- 启动时获取 - 使用 IP 集合或 User-Agent 模式将已知爬虫排除在限流之外 - 对未识别的机器人实施严格限制,同时保持已验证爬虫无限制 ## 功能 - **短生命周期 IP 封禁**:每个封禁都带有 TTL。封禁自动过期——无需手动清理,IP 轮换不会造成附带损害。 - **爬虫感知 IP 集合**:内置 Google、Bing、OpenAI 的数据源。同时支持内联 CIDR 范围。 - **多种限流算法**:滑动窗口、固定窗口、令牌桶和 GCRA——全部实现为原子 Redis Lua 脚本。 - **分布式**:多个 kilter 实例通过 Redis 共享状态,因此限流和封禁在整个集群中一致生效。 - **故障开放**:当 Redis 不可用时,请求直接通过。你的网站保持在线;只是暂时失去限流功能。 - **灵活匹配**:通过路径正则、Header 模式和 IP 集合应用规则。组合匹配和排除条件。 - **X-Forwarded-For 解析**:可信代理链解析,这样你可以对真实客户端 IP 限流,而不是对你的负载均衡器。 - **可观测性**:Prometheus 指标、OpenTelemetry 追踪、结构化日志(默认、logfmt 或 JSON)。 ## 快速开始 ``` cargo build --release ``` 1. 启动 Redis:`redis-server` 2. 复制并编辑 `config.ron` 以适配你的环境 3. 运行:`./target/release/kilter` 检查健康状态:`curl http://localhost:8081/healthz` 查看指标:`curl http://localhost:8081/metrics` ## Docker 镜像已发布到 [ghcr.io/tpyo/kilter](https://github.com/tpyo/kilter/pkgs/container/kilter)。 ``` docker pull ghcr.io/tpyo/kilter:latest ``` ### 开发环境 ``` docker compose up ``` 启动 kilter 并启用热重载、Redis、测试后端、Grafana、Prometheus 和 Tempo。 ## 参考资料 - [Pingora](https://github.com/cloudflare/pingora) - Cloudflare 的代理框架 - [RON](https://github.com/ron-rs/ron) - Rusty Object Notation
标签:Cloudflare, DDoS防护, Fail-open, GCRA, GET参数, IP限流, Lua脚本, MITRE ATT&CK, OpenTelemetry, Pingora, Redis, Rust, User-Agent检测, Web安全, X-Forwarded-For, 令牌桶, 分布式系统, 原子操作, 反向代理, 可视化界面, 响应大小分析, 搜索引擎查询, 滑动窗口, 爬虫管理, 爬虫识别, 用户代理, 结构化日志, 网络安全, 网络流量审计, 自定义请求头, 蓝队分析, 请求拦截, 负载均衡, 通知系统, 隐私保护, 高并发