Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Krawl — Krawl是一个可定制、轻量级、云原生的网络诱骗服务器和反爬虫工具,它利用逼真、随机生成的诱饵数据和AI生成的HTML模板,创建具有低悬果实漏洞的虚假Web应用。 | Kitploit
工具/GitHubGitHub/blessedrebus/krawl
容器安全信息收集Web安全网络安全云安全威胁情报事件响应反机器人AI 安全
GitHubblessedrebus/krawl

Krawl

Krawl是一个可定制、轻量级、云原生的网络诱骗服务器和反爬虫工具,它利用逼真、随机生成的诱饵数据和AI生成的HTML模板,创建具有低悬果实漏洞的虚假Web应用。

查看仓库
558455小时38分前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Krawl

一个现代化、可自定义的 Web 蜜罐服务器,旨在通过欺骗性网页、伪造凭据和 Canary 令牌来检测并追踪攻击者与网络爬虫的恶意活动。

License Release
GitHub Container Registry Kubernetes Helm Chart

目录

  • 演示
  • 什么是 Krawl?
  • Krawl 仪表盘
  • 部署模式
  • Krawl 封禁列表
  • 快速开始
    • Docker 运行
    • Docker Compose
    • Kubernetes
    • Uvicorn(Python)
  • 配置
    • config.yaml
    • 环境变量
  • 封禁恶意 IP
  • IP 信誉
  • 在反向代理或 CDN 后运行
  • 指标与监控
  • 其他文档
  • 使用 AI 的欺骗页面
  • 参与贡献

演示

提示:爬取 robots.txt 中的路径可以获得额外乐趣

Krawl 网址:http://demo.krawlme.com

查看仪表盘 http://demo.krawlme.com/das_dashboard

什么是 Krawl?

Krawl 是一款云原生的欺骗服务器,旨在检测、拖延并分析恶意攻击者、网络爬虫和自动化扫描器。

它创建逼真的虚假 Web 应用程序,其中布满唾手可得的诱饵,如管理后台、配置文件以及暴露的伪造凭据,以吸引并识别可疑活动。

仪表盘

通过消耗攻击者的资源,Krawl 能够清晰地将恶意行为与合法爬虫区分开来。

它具有以下特性:

  • AI 生成的欺骗页面:让攻击者帮你生成伪造的脆弱攻击面
  • 蜘蛛陷阱页面:基于 spidertrap 项目 生成无限随机链接,消耗爬虫资源
  • 伪造登录页面:WordPress、phpMyAdmin、管理后台
  • 蜜罐路径:在 robots.txt 中公布以捕获扫描器
  • 伪造凭据:逼真的用户名、密码、API 密钥
  • Canary 令牌 集成:触发外部告警
  • 随机服务器响应头:根据服务器头和版本迷惑攻击
  • 实时仪表盘:监控可疑活动
  • 可自定义字典:基于 JSON 的简易配置
  • 随机错误注入:模拟真实服务器行为

你可以通过反向代理轻松地将 Krawl 与你的其他服务一同对外暴露,从而保护它们免受网络爬虫和恶意用户的侵扰。更多详情请参阅反向代理文档。

使用场景

Krawl 仪表盘

Krawl 提供了一个功能全面的仪表盘,可通过启动时生成的随机秘密路径访问,或通过 KRAWL_DASHBOARD_SECRET_PATH 配置的自定义路径访问,使其对扫描蜜罐的攻击者保持隐藏。

仪表盘分为六个选项卡:

  • 概览:攻击活动的高层级视图:IP 来源交互式地图、最近的可疑请求,以及排名靠前的 IP、User-Agent 和路径。

geoip

  • 攻击:捕获的凭据、蜜罐触发事件以及检测到的攻击类型(SQLi、XSS、路径遍历等)的详细分类,包含图表和表格。

attack_types

  • IP 洞察:所选 IP 的深度取证视图:地理位置、ISP/ASN 信息、信誉标记、行为时间线、攻击类型分布以及完整访问历史。

ipinsight

此外,使用仪表盘密码认证后,两个受保护的选项卡将变为可用:

  • 追踪的 IP:维护一个你想长期监控的 IP 地址观察列表。
  • IP 封禁列表:管理 IP 封禁、查看检测到的攻击者,并以原始或 IPTables 格式导出封禁列表。
  • 欺骗页面:管理 AI 生成的页面、导出或导入新的页面。

更多详情请参阅仪表盘文档。

部署模式

Krawl 支持两种部署模式,可通过 config.yaml 中的 mode 设置或 KRAWL_MODE 环境变量进行控制。

独立模式:非常适合开发环境或请求量较低的家庭实验室。无需任何额外配置,直接运行 Krawl 即可工作。

  • 单容器部署,无外部依赖
  • 更低的内存和资源占用

可扩展模式:专为生产环境或高流量蜜罐设计。Helm chart 默认使用此模式。

  • 借助 Redis 多层缓存,仪表盘更快速、更灵敏
  • Redis 作为 PostgreSQL 前的热路径缓存,降低磁盘 I/O
  • 水平扩展可增加负载均衡器后方的 Krawl 副本数量

有关详细配置、Docker Compose 示例、Kubernetes/Helm 部署以及分步迁移说明,请参阅部署模式文档。

Krawl 封禁列表

Krawl 维护着一个定期更新的 banlist.txt,其中包含触发其蜜罐陷阱的攻击者的 IP 地址。该封禁列表每周发布并可供下载,帮助社区即使不使用 Krawl 也能预先封禁已知的恶意行为者。

该封禁列表也可以直接从以下地址获取: https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw。

在实例之间共享封禁列表

Krawl 实例之间可以联合共享封禁列表:每个实例都可以在无需认证的路径上发布自己的列表, 并从其他实例(或任何纯文本 IP 列表)拉取列表。拉取到的 IP 会合并到本地封禁决策中,并显示在仪表盘上。```yaml banlist:

Public, unauthenticated download path for this instance's banlist.

Supports the same ?categories= and ?fwtype= parameters as the main API.

Empty = disabled.

export_path: "/public_banlist.txt"

Upstream banlists to fetch and merge. Plain ".txt" lists work too.

sources: - "https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw" - "https://krawl.example.com/public_banlist.txt"

refresh_interval: 3600 # seconds between fetches

root@kitploit:~
## 快速入门

### Docker 运行

使用最新镜像以独立模式运行 Krawl:```bash
docker run -d \
  -p 5000:5000 \
  -e KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard" \
  -e KRAWL_DASHBOARD_PASSWORD="my-secret-password" \
  -v krawl-data:/app/data \
  --name krawl \
  ghcr.io/blessedrebus/krawl:latest

通过 http://localhost:5000 访问服务器

Docker Compose

使用两种部署模式之一创建 docker-compose.yaml。

独立模式:仅包含 Krawl 服务器与 Sqlite 存储:```yaml services: krawl: image: ghcr.io/blessedrebus/krawl:latest container_name: krawl-server ports: - "5000:5000" environment: - CONFIG_LOCATION=config.yaml # - KRAWL_DASHBOARD_PASSWORD=my-secret-password volumes: - ./config.yaml:/app/config.yaml:ro - krawl-data:/app/data restart: unless-stopped

volumes: krawl-data:

root@kitploit:~
**可扩展**:基于 PostgreSQL 和 Redis:

> [!CAUTION]
> 以下示例使用**默认密码**(`krawl`/`krawl`)。**在部署到生产环境之前请更改它们。**```yaml
services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: krawl
      POSTGRES_USER: krawl
      POSTGRES_PASSWORD: krawl
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U krawl -d krawl"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  krawl:
    image: ghcr.io/blessedrebus/krawl:latest
    container_name: krawl-server
    ports:
      - "5000:5000"
    environment:
      - CONFIG_LOCATION=config.yaml
      - KRAWL_MODE=scalable
      - KRAWL_POSTGRES_HOST=postgres
      - KRAWL_POSTGRES_PORT=5432
      - KRAWL_POSTGRES_USER=krawl
      - KRAWL_POSTGRES_PASSWORD=krawl
      - KRAWL_POSTGRES_DATABASE=krawl
      - KRAWL_REDIS_HOST=redis
      - KRAWL_REDIS_PORT=6379
      # - KRAWL_DASHBOARD_PASSWORD=my-secret-password
    volumes:
      - ./config.yaml:/app/config.yaml:ro
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy

volumes:
  postgres_data:
  redis_data:

要部署,只需运行```bash docker compose up -d

root@kitploit:~
生产就绪的 compose 文件也位于 [`docker/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/) 目录中。对于**开发**(从源代码构建并支持热重载),请使用 [`docker/dev/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/dev/) 中的 compose 文件。

有关这两种模式的更多详细信息,请参阅 [部署模式](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md)。

### Kubernetes
**Krawl 也可原生用于 Kubernetes**。可以通过 [清单](https://github.com/blessedrebus/krawl/blob/HEAD/kubernetes/README.md) 或 [使用 Helm chart](https://github.com/blessedrebus/krawl/blob/HEAD/helm/README.md) 进行安装。

Helm chart **默认采用可扩展模式**,并捆绑了 PostgreSQL 和 Redis:```bash
helm install krawl oci://ghcr.io/blessedrebus/krawl-chart --version 2.3.0 \
  -n krawl-system --create-namespace \
  --set postgres.password=your-password \
  --set redis.password=your-redis-password \
  --set dashboardPassword=your-dashboard-password \
  --set config.dashboard.secret_path=/my-secret-dashboard

最小化示例值文件提供了两种模式:

  • values-minimal.yaml ---> 可扩展(默认)
  • values-standalone.yaml ---> 独立

查看 部署模式 和 Chart 文档 获取完整配置和迁移说明。

Uvicorn (Python)

使用 Python 3.13+ 和 uvicorn 直接运行 Krawl,用于本地开发或测试:```bash pip install -r requirements.txt uvicorn app:app --host 0.0.0.0 --port 5000 --app-dir src --no-server-header

root@kitploit:~
访问服务器:`http://localhost:5000`


## 配置
Krawl 采用**配置层级结构**,其中**环境变量的优先级高于配置文件**。这种方法推荐用于 Docker 部署和快速开箱即用的定制。

### 通过 config.yaml 配置
你可以使用 [config.yaml](https://github.com/blessedrebus/krawl/blob/HEAD/config.yaml) 文件进行高级配置,例如 Docker Compose 或 Helm chart 部署。

### 通过环境变量配置

所有设置都可以通过环境变量提供,这些变量会覆盖 `config.yaml`。
变量名由 `KRAWL_` 加上大写的设置路径组成,因此 `dashboard.password`
变为 `KRAWL_DASHBOARD_PASSWORD`。

<details>
<summary><b>服务器与链接生成</b>(12 个变量)</summary>

Krawl 如何呈现自身并构建生成页面的迷宫。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `CONFIG_LOCATION` | yaml 配置文件的路径 | `config.yaml` |
| `KRAWL_PORT` | 服务器监听端口 | `5000` |
| `KRAWL_DELAY` | 响应延迟(毫秒) | `100` |
| `KRAWL_SERVER_HEADER` | 用于迷惑的 HTTP Server 响应头 | `""` |
| `KRAWL_LINKS_LENGTH_RANGE` | 链接长度范围,格式为 `min,max` | `5,15` |
| `KRAWL_LINKS_PER_PAGE_RANGE` | 每页链接数,格式为 `min,max` | `10,15` |
| `KRAWL_CHAR_SPACE` | 用于链接生成的字符集 | `abcdefgh...` |
| `KRAWL_MAX_COUNTER` | 计数器初始值 | `10` |
| `KRAWL_PROBABILITY_ERROR_CODES` | 错误响应概率(0-100%) | `0` |
| `KRAWL_INFINITE_PAGES_FOR_MALICIOUS` | 向恶意 IP 提供无限页面 | `true` |
| `KRAWL_MAX_PAGES_LIMIT` | 爬虫的最大页面限制 | `250` |
| `KRAWL_BAN_DURATION_SECONDS` | 受限 IP 的封禁时长(秒) | `600` |

</details>

<details>
<summary><b>仪表盘、指标与日志</b>(8 个变量)</summary>

仪表盘访问、缓存预热、Prometheus 和日志级别。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_DASHBOARD_SECRET_PATH` | 自定义仪表盘路径 | 自动生成 |
| `KRAWL_DASHBOARD_PASSWORD` | 受保护仪表盘面板的密码 | 自动生成 |
| `KRAWL_DASHBOARD_CACHE_WARMUP` | 每 5 分钟预计算仪表盘数据,实现页面即时加载 | `true` |
| `KRAWL_DASHBOARD_WARMUP_PAGES` | 每个表面板预热的页面数量 | `10` |
| `KRAWL_DASHBOARD_WARMUP_AGGREGATION` | 预计算完整的 top_paths/top_ua 聚合,实现零查询服务 | `false` |
| `KRAWL_DASHBOARD_TOP_N_MIN_COUNT` | 热门路径/用户代理面板的最低访问次数(设为 1 可禁用) | `5` |
| `KRAWL_METRICS_ENABLED` | 在 `/<dashboard_path>/metrics` 暴露 Prometheus 指标 | `true` |
| `KRAWL_LOG_LEVEL` | 应用日志级别(`DEBUG`、`INFO`、`WARNING`、`ERROR`) | `INFO` |

</details>

<details>
<summary><b>数据库、保留与备份</b>(6 个变量)</summary>

存储位置、数据保留时长以及转储任务。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_DATABASE_PATH` | 数据库文件位置 | `data/krawl.db` |
| `KRAWL_DATABASE_PERSIST_SUSPICIOUS_ONLY` | 仅将可疑请求持久化到访问日志 | `false` |
| `KRAWL_DATABASE_RETENTION_DAYS` | 数据在数据库中的保留天数 | `30` |
| `KRAWL_BACKUPS_PATH` | 数据库转储保存路径 | `backups` |
| `KRAWL_BACKUPS_CRON` | 用于控制备份任务计划的 cron 表达式 | `*/30 * * * *` |
| `KRAWL_BACKUPS_ENABLED` | 是否启用数据库转储任务的布尔值 | `true` |

</details>

<details>
<summary><b>陷阱:tarpit、欺骗页面与 canary</b>(6 个变量)</summary>

可选加入的陷阱以及提供给攻击者的页面。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_TARPIT_ENABLED` | 通过慢响应和随机文本诱捕 AI 代理 | `false` |
| `KRAWL_TARPIT_DELAY_SECONDS` | tarpit 激活时每次响应额外增加的延迟(秒) | `5` |
| `KRAWL_DECEPTION_IMPORT_PAGES` | 启动时自动从 `src/templates/deception/` 导入欺骗页面 | `true` |
| `KRAWL_CUSTOM_TEMPLATE_PATH` | 容器内自定义 HTML 模板的路径。模板必须包含 `{counter}` 和 `{content}` 占位符。 | `/templates/custom_page.html` |
| `KRAWL_CANARY_TOKEN_URL` | 外部 canary token URL | None |
| `KRAWL_CANARY_TOKEN_TRIES` | 显示 canary token 之前的请求次数 | `10` |

</details>

<details>
<summary><b>IP 信誉分析器</b>(6 个变量)</summary>

决定 IP 如何被分类的阈值。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_HTTP_RISKY_METHODS_THRESHOLD` | 风险 HTTP 方法检测的阈值 | `0.1` |
| `KRAWL_VIOLATED_ROBOTS_THRESHOLD` | robots.txt 违规检测的阈值 | `0.1` |
| `KRAWL_UNEVEN_REQUEST_TIMING_THRESHOLD` | 请求时间间隔的变异系数阈值 | `0.5` |
| `KRAWL_UNEVEN_REQUEST_TIMING_TIME_WINDOW_SECONDS` | 请求时间分析的时间窗口(秒) | `300` |
| `KRAWL_USER_AGENTS_USED_THRESHOLD` | 检测多个用户代理的阈值 | `2` |
| `KRAWL_ATTACK_URLS_THRESHOLD` | 攻击 URL 检测的阈值 | `1` |

</details>

<details>
<summary><b>封禁列表与忽略的 IP</b>(4 个变量)</summary>

与其他实例共享封禁列表,以及永不跟踪的流量。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_IGNORED_IPS` | 以逗号分隔的 IP/CIDR 列表,这些地址永远不会被跟踪、封禁或导出 | Loopback、RFC1918、link-local、CGNAT |
| `KRAWL_BANLIST_EXPORT_PATH` | 公开封禁列表下载路径,例如 `/public_banlist.txt`(空值 = 禁用) | `""` |
| `KRAWL_BANLIST_SOURCES` | 以逗号分隔的上游封禁列表 URL,用于获取并合并 | Krawl 社区封禁列表 |
| `KRAWL_BANLIST_REFRESH_INTERVAL` | 获取上游封禁列表的间隔秒数 | `3600` |

</details>

<details>
<summary><b>AI 生成的欺骗页面</b>(10 个变量)</summary>

参见 [AI 生成文档](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md)。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_AI_ENABLED` | 启用 AI 生成的欺骗页面 | `false` |
| `KRAWL_AI_PROVIDER` | AI 提供商(`"openrouter"` 或 `"openai"`) | `"openrouter"` |
| `KRAWL_AI_OPENAI_BASE_URL` | 可选的自定义 API 端点的 OpenAI Base URL | `"https://api.openai.com/v1"` |
| `KRAWL_AI_API_KEY` | AI 提供商的 API 密钥 | `None` |
| `KRAWL_AI_MODEL` | 用于页面生成的 AI 模型 | `"nvidia/nemotron-3-super-120b-a12b:free"` |
| `KRAWL_AI_TIMEOUT` | AI API 调用的请求超时(秒) | `60` |
| `KRAWL_AI_MAX_DAILY_REQUESTS` | 每天最大 AI 生成页面数(0 = 无限制) | `0` |
| `KRAWL_AI_PROMPT` | 用于 AI 页面生成的自定义提示词模板 | 默认提示词 |
| `KRAWL_AI_REASONING_ENABLED` | 启用推理 token(仅限 OpenRouter 推理模型) | `false` |
| `KRAWL_AI_REASONING_EFFORT` | 推理努力程度(`none`、`minimal`、`low`、`medium`、`high`、`xhigh`) | `"medium"` |

</details>

<details>
<summary><b>可扩展模式:PostgreSQL 和 Redis</b>(13 个变量)</summary>

仅在 `KRAWL_MODE=scalable` 时使用。参见 [部署模式](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md)。

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_MODE` | 部署模式(`standalone` 或 `scalable`) | `standalone` |
| `KRAWL_POSTGRES_HOST` | PostgreSQL 主机名 | `localhost` |
| `KRAWL_POSTGRES_PORT` | PostgreSQL 端口 | `5432` |
| `KRAWL_POSTGRES_USER` | PostgreSQL 用户名 | `krawl` |
| `KRAWL_POSTGRES_PASSWORD` | PostgreSQL 密码 | `krawl` |
| `KRAWL_POSTGRES_DATABASE` | PostgreSQL 数据库名称 | `krawl` |
| `KRAWL_REDIS_HOST` | Redis 主机名 | `localhost` |
| `KRAWL_REDIS_PORT` | Redis 端口 | `6379` |
| `KRAWL_REDIS_DB` | Redis 数据库编号 | `0` |
| `KRAWL_REDIS_PASSWORD` | Redis 密码 | None |
| `KRAWL_REDIS_CACHE_TTL` | 仪表盘预热数据的 TTL(秒) | `600` |
| `KRAWL_REDIS_HOT_TTL` | 热路径数据(封禁信息、IP 分类)的 TTL(秒) | `30` |
| `KRAWL_REDIS_TABLE_TTL` | 分页仪表盘表的 TTL(秒) | `120` |

</details>


例如```bash
# Set canary token
export CONFIG_LOCATION="config.yaml"
export KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"

# Set number of pages range (min,max format)
export KRAWL_LINKS_PER_PAGE_RANGE="5,25"

# Set analyzer thresholds
export KRAWL_HTTP_RISKY_METHODS_THRESHOLD="0.2"
export KRAWL_VIOLATED_ROBOTS_THRESHOLD="0.15"

# Set custom dashboard path and password
export KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard"
export KRAWL_DASHBOARD_PASSWORD="my-secret-password"

带环境变量(独立模式)的 Docker 运行示例:```bash docker run -d
-p 5000:5000
-e KRAWL_MODE=standalone
-e KRAWL_PORT=5000
-e KRAWL_DELAY=100
-e KRAWL_DASHBOARD_PASSWORD="my-secret-password"
-e KRAWL_CUSTOM_TEMPLATE_PATH="/templates/custom_page.html"
-e KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"
--name krawl
ghcr.io/blessedrebus/krawl:latest

root@kitploit:~
## 使用 Krawl 封禁恶意 IP
Krawl 使用基于信誉的系统对攻击者 IP 地址进行分类,并提供两种导出 IP 列表的方式以供防火墙集成。

`/api/export-ips` 端点直接查询数据库,支持按 IP 类别(`attacker`、`bad_crawler`、`regular_user`、`good_crawler`)和输出格式(`raw`、`iptables`、`nftables`)进行过滤:```bash
curl "https://your-krawl-instance/<DASHBOARD-PATH>/api/export-ips?categories=attacker&fwtype=raw"

此功能可在各种平台上自动阻止恶意流量:

  • OPNsense 和 pfSense
  • RouterOS
  • IPtables 和 Nftables
  • Fail2Ban

有关完整 API 参数、示例以及添加自定义防火墙格式,请参阅 防火墙导出器文档。

Krawl 还可以将封禁的 IP 直接推送到 Cloudflare 账户 IP 列表,用于 WAF 规则。该同步作为后台任务运行,并在可配置的间隔内通过完全替换来更新列表。请参阅 Cloudflare 封禁列表同步 文档。

IP 信誉

Krawl 使用任务分析近期流量,以构建并持续更新 IP 信誉 评分。它会定期运行,基于多种行为指标评估每个活跃 IP 地址,以将其分类为攻击者、爬虫或普通用户。阈值完全可自定义。

ip reputation

分析内容包括:

  • 高风险 HTTP 方法使用(例如 POST、PUT、DELETE 的比率)
  • Robots.txt 违规
  • 请求时序异常(突发或不规则模式)
  • User-Agent 一致性
  • 攻击 URL 检测(例如 SQL 注入、XSS 模式)

每个信号都会对加权评分模型做出贡献,该模型会分配一个信誉类别:

  • attacker
  • bad_crawler
  • good_crawler
  • regular_user
  • unknown(数据不足时)

最终的分数和指标存储在数据库中,供 Krawl 用于驱动仪表盘、信誉追踪以及自动缓解操作,例如 IP 封禁或防火墙集成。

AI 生成的诱骗页面

Krawl 可以使用 OpenRouter 或 OpenAI API 中的 AI 模型自动生成逼真的诱骗页面。此功能可即时创建独一无二、看似合理的蜜罐页面,从而无需手动创建页面即可诱骗攻击者。

主要特性:

  • 动态生成:为任意请求路径创建独特的 HTML 页面
  • 智能缓存:缓存生成的页面以避免重复的 API 调用
  • 每日速率限制:通过可配置的请求限额控制 API 成本
  • 多提供商支持:支持 OpenRouter(免费选项)和 OpenAI
  • 优雅降级:在禁用或达到限制时回退到标准蜜罐
  • 缓存服务:即使 AI 被禁用,也能提供之前生成的页面

快速设置:```yaml ai: enabled: true provider: "openrouter" openai_base_url: "your-custom-base-url" api_key: "your-api-key" model: "nvidia/nemotron-3-super-120b-a12b:free" timeout: 60 max_daily_requests: 10

root@kitploit:~
有关详细配置和用法,请参阅 [AI 生成文档](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md)。

您还可以通过提交 PR 来**贡献欺骗模板**,请参阅 [贡献欺骗模板](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deception_pages.md#contributing-deception-templates-via-pr)。

## 在反向代理或 CDN 后运行

**NGINX、Traefik 以及 CloudFlare 等其他代理**需要转发请求头,以便 Krawl 能够看到真实的 IP。有关配置示例和完整的请求头列表,请参阅 [反向代理文档](https://github.com/blessedrebus/krawl/blob/HEAD/docs/reverse-proxy.md)。

## 指标与监控

Krawl 在 `/<dashboard_secret_path>/metrics` 暴露 [Prometheus](https://prometheus.io/) 指标(默认启用),并附带一个可直接导入的 [Grafana](https://grafana.com/) 仪表板,位于 [`grafana-dashboard.json`](https://github.com/blessedrebus/krawl/blob/HEAD/grafana-dashboard.json)。

有关完整的指标列表、Grafana 导入步骤以及 Prometheus / Kubernetes(`ServiceMonitor`)抓取配置,请参阅 [监控文档](https://github.com/blessedrebus/krawl/blob/HEAD/docs/monitoring.md)。

## 其他文档

| 主题 | 描述 |
|-------|-------------|
| [AI 生成](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md) | 使用 OpenRouter 或 OpenAI 配置 AI 生成的欺骗页面 |
| [欺骗页面](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deception_pages.md) | 管理、导入和导出欺骗页面;批量操作与基于日期的筛选 |
| [部署模式](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md) | 独立模式(SQLite)与可扩展模式(PostgreSQL + Redis)、配置及数据迁移 |
| [蜜罐](https://github.com/blessedrebus/krawl/blob/HEAD/docs/honeypot.md) | 蜜罐页面的完整概览:假登录、目录列表、凭据文件、SQLi/XSS/XXE/命令注入陷阱等 |
| [仪表板](https://github.com/blessedrebus/krawl/blob/HEAD/docs/dashboard.md) | 访问并探索实时监控仪表板 |
| [仪表板 API](https://github.com/blessedrebus/krawl/blob/HEAD/docs/dashboard-api.md) | Krawl 自有的 JSON API:端点参考、身份验证、交互式 OpenAPI 文档及附件下载 |
| [外部 API](https://github.com/blessedrebus/krawl/blob/HEAD/docs/api.md) | Krawl 为获取 IP 数据、信誉和地理位置而调用的第三方 API |
| [反向代理](https://github.com/blessedrebus/krawl/blob/HEAD/docs/reverse-proxy.md) | 如何在 NGINX 后部署 Krawl 或使用诱饵子域名 |
| [数据库备份](https://github.com/blessedrebus/krawl/blob/HEAD/docs/backups.md) | 启用并配置自动数据库转储任务 |
| [金丝雀令牌](https://github.com/blessedrebus/krawl/blob/HEAD/docs/canary-token.md) | 通过 canarytokens.org 设置外部警报触发器 |
| [词表](https://github.com/blessedrebus/krawl/blob/HEAD/docs/wordlist.md) | 自定义虚假用户名、密码和目录列表 |
| [架构](https://github.com/blessedrebus/krawl/blob/HEAD/docs/architecture.md) | 代码库、请求管道、数据库架构和后台任务的技术概述 |
| [Cloudflare 封禁列表同步](https://github.com/blessedrebus/krawl/blob/HEAD/docs/cloudflare_banlist.md) | 将 Krawl 中的被封禁 IP 推送到 Cloudflare 账户 IP 列表,以供 WAF 规则使用。该同步作为后台任务运行,并通过完全替换的方式更新列表。 |
| [防火墙导出器](https://github.com/blessedrebus/krawl/blob/HEAD/docs/firewall-exporters.md) | 通过 REST API 以 raw、iptables 或 nftables 格式导出 IP 封禁列表 |
| [蜜罐减速器(Tarpit)](https://github.com/blessedrebus/krawl/blob/HEAD/docs/tarpit.md) | 通过延迟和噪声填充响应来拖慢并毒化 AI 爬虫 |
| [指标与监控](https://github.com/blessedrebus/krawl/blob/HEAD/docs/monitoring.md) | Prometheus 指标端点、公开指标参考、Grafana 仪表板及 ServiceMonitor 抓取 |

## 贡献

欢迎贡献!请:
1. Fork 该仓库
2. 创建功能分支
3. 进行你的更改
4. 提交拉取请求(说明更改内容!)

## 免责声明
> [!CAUTION]
> 这是一个欺骗/蜜罐系统。请在隔离环境中部署,并仔细监控安全事件。请负责任地使用,并遵守适用的法律法规。

## Star 历史
<img src="https://star-history.dera.page/svg?repos=BlessedRebuS/Krawl&amp;type=Date" width="600" alt="Star 历史图表" />
下载工具
独立模式可扩展模式
数据库SQLite(WAL 模式)PostgreSQL
缓存内存中的 Python dictRedis(多层 TTL)
副本数1(单实例)1+(水平扩展)
外部依赖无PostgreSQL + Redis
适用场景开发环境、家庭实验室、<500k 请求生产环境、高可用、>500k 请求