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, 令牌桶, 分布式系统, 原子操作, 反向代理, 可视化界面, 响应大小分析, 搜索引擎查询, 滑动窗口, 爬虫管理, 爬虫识别, 用户代理, 结构化日志, 网络安全, 网络流量审计, 自定义请求头, 蓝队分析, 请求拦截, 负载均衡, 通知系统, 隐私保护, 高并发