pzaino/thecrowler
GitHub: pzaino/thecrowler
一个基于真实浏览器引擎和声明式规则集的自托管内容发现与情报平台,解决高级 Web 爬取、技术检测和自动化数据提取问题。
Stars: 58 | Forks: 10
# CROWler



[](https://goreportcard.com/report/github.com/pzaino/thecrowler)
[](https://github.com/pzaino/TheCROWler/actions/workflows/go-vulncheck.yml)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fpzaino%2Fthecrowler?ref=badge_shield&issueType=license)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fpzaino%2Fthecrowler?ref=badge_shield&issueType=security)

[](https://pkg.go.dev/github.com/pzaino/thecrowler)






## 它是什么?
The CROWler 是一个自托管、事件驱动的内容发现和情报开发平台,
旨在使用真实的浏览器、规则集、插件和 agent 进行高级 Web 爬取、抓取、检测和自动化。
**项目状态:** 仍在积极开发中(WIP)。大部分组件均可使用。
欢迎 Beta 测试人员参与。完整的[每日进度统计](https://githubtracker.com/pzaino/thecrowler)。
此外,该系统配备了一个强大的搜索 API,提供
简化的数据查询接口。此功能确保了便捷的
集成,并允许各种应用访问已索引的数据。
The CROWler 采用基于 microservices 的设计,因此可以轻松
部署在容器化环境中。
作为一个内容发现开发平台,The CROWler 集成了广泛的
技术和功能,包括插件、规则集、agent、
事件等。这些组件协同工作,提供了一个全面的
平台,用于开发您自己的内容发现、数据提取
等解决方案。
## The CROWler 的与众不同之处
- **真实的浏览器,而非抽象层**
The CROWler 使用实际的浏览器引擎,而不是
简化的请求管道。
- **声明式规则集**
爬取、抓取、检测和操作均在版本化的 YAML/JSON 规则集中定义。
- **一流的检测逻辑**
技术、框架、对象和漏洞均使用用户定义的规则进行检测。
- **事件驱动的自动化**
爬取和检测事件可以触发 agent、插件和工作流。
- **设计上的高度可扩展性**
JavaScript 插件可以扩展引擎、浏览器、API 和事件系统。
- **您拥有数据和基础设施的控制权**
The CROWler 完全自托管且可审计。
## The CROWler 适合谁?
The CROWler 专为以下人群和场景设计:
- 工程师和开发者
- 安全研究人员
- 情报和 OSINT 团队
- 高级数据收集 pipeline
- 需要完全控制和可审计性的组织
它**不是**为点击即用的 SaaS 抓取工具或交钥匙数据服务而设计的。
## 设计理念
The CROWler 基于以下几个核心原则构建:
- 控制优于抽象
- 逻辑应当是显式且“可检查的”
- 自动化应当是事件驱动的
- 情报应当由用户定义
- 基础设施和数据所有权至关重要
## 快速开始
- 文档:[doc/](https://github.com/pzaino/thecrowler/tree/develop/doc#readme)
- 基于 GPT 的支持[聊天机器人](https://chatgpt.com/g/g-dEfqHkqrW-the-crowler-support)(您必须登录 ChatGPT 才能正常使用,否则 CustomGPTs 的访问权限非常有限)
- 配置示例:[config.default](config.default)
- 规则集 schema:[schemas/](schemas/)
- 插件示例:[plugins/](plugins/)
从安装指南(见下文)和最小配置示例开始。
## 目录
- [功能](#features-overview)
- [它解决了什么问题?](#what-problem-does-it-solve)
- [这个名字怎么发音?](#how-do-i-pronounce-the-name)
- [如何使用它?](#how-to-use-it)
- [前置条件](#prerequisites)
- [安装说明](#installation)
- [简易安装与部署](#1-easy-installation-and-deployment)
- [如果您计划手动安装](#2-if-youre-planning-to-install-it-manually)
- [从源码构建](#build-from-source)
- [生产环境](#production)
- [数据库维护](#db-maintenance)
- [许可证](#license)
- [贡献指南](#contributing)
- [行为准则](#code-of-conduct)
- [鸣谢](#acknowledgements)
- [免责声明](#disclaimer)
- [顶级贡献者](#top-contributors)
## 功能(概述)
The CROWler 是一个**全方位的内容发现和情报平台**。
其能力涵盖爬取、交互、检测、自动化、安全
以及大规模数据分析。
以下是主要功能领域的**高度概述**。
有关完整且详细的细分,请参见:**[doc/features.md](doc/features.md)**
### Web 爬取与交互
- 递归和范围化的爬取(URL、域名、子域名、递归)
- 真实的浏览器渲染
- 人类行为模拟 (HBS)
- 动态 JavaScript 内容处理
- 自定义 User-Agent、请求过滤和带宽控制
### 搜索与发现
- 高性能的基于 API 的搜索引擎
- 高级查询操作符和 dorking
- 实体提取与关联
- 结果导出(CSV、JSON)
### 抓取与数据处理
- 声明式抓取规则(CSS、XPath、regex)
- 后处理、转换和丰富
- 基于插件和 AI 的数据 pipeline
### 检测与情报
- 技术、框架和库检测
- 漏洞与安全标头分析
- TLS/SSL 指纹识别(JA3、JA4、证书)
- 集成外部情报源
### 规则、操作与自动化
- 声明式规则集(爬取、抓取、操作、检测)
- 通过真实的浏览器执行系统级操作
- 事件驱动的工作流和调度
### 可扩展性
- JavaScript 插件系统(引擎、浏览器、API、事件)
- 自定义 API endpoint
- 由 agent 控制的执行
### Agent 与 AI
- 传统 AI agent
- 事件驱动的 agent 编排
- 预部署的容器化 AI 模型(CUDA / 非 CUDA)
- 多模型 AI 工作流
### 安全与网络安全
- 网络侦察(DNS、WHOIS、服务发现)
- Fuzzing 和安全测试
- 原生支持第三方安全服务
### 部署与可扩展性
- Microservices 架构
- 引擎、VDI、API 的水平扩展
- 基于 Docker 的部署
- 本地、云端和混合环境
**完整功能列表及详细说明:**
[doc/features.md](doc/features.md)
### 它解决了什么问题?
The CROWler 旨在解决有关 Web 爬取、内容
发现、技术检测和数据提取的一系列问题。
虽然它的主要目标是让私人、专业和企业用户
能够快速开发其内容发现解决方案,但它也被设计为
能够爬取私有网络和内网,因此您可以使用它来创建
您自己或您公司的搜索引擎。
除此之外,它还可以作为更复杂网络安全工具的
“基础”,因为它可用于收集有关网站、其网络、
所有者、漏洞、正在暴露的服务等的信息。
鉴于它还能提取信息,因此可用于创建
带有来源引用的知识库,或创建有关特定
主题的信息数据库。
显然,它也可以用于执行关键字分析、语言检测等。
但这是所有爬虫都能做到的事情。然而,所有的
“经典”功能均已实现/正在实现中。
### 这个名字怎么发音?
**The**:在辅音音素前发为 /ðə/,听起来像
"thuh"。
**CROW**:发为 /kroʊ/,与 "know" 或 "snow" 押韵。
**ler**:后半部分发为 /lər/,类似于
"crawler" 一词的结尾或 "tumbler" 中的 "ler"。
连在一起,它的发音就像 "**thuh KROH-lər**"
### ChatGPT 对 The CROWLer 有什么看法 ;)
(以下部分有意轻松幽默,不具备权威性。)
"The CROWler 不仅仅是一个工具;它是对道德、高效且
有效的 Web 爬取的承诺。无论您是在进行学术研究、市场
分析,还是增强您的网络安全态势,The CROWler 都能以
正直和精准兑现其价值。
加入我们,重新定义 Web 爬取的标准。探索更多并为
The CROWler 走向更尊重、更具洞察力的数字
探索之旅做出贡献。"
😂 这显然有点夸张了,但这很有趣,我决定把
它放在这里,只是为了好玩。顺便说一下,它确实让我
想补充一句:
“……还有一件事!”(我想知道为什么?!?!)😂
## 如何使用它?
### 前置条件
The CROWler 被设计为基于 microservices 的系统,允许引擎、VDI、API 和事件管理进行独立扩展、隔离和编排。
- [Docker](https://docs.docker.com/install/)
- [Docker Compose](https://docs.docker.com/compose/install/)
对于基于 docker compose 的安装,这就是您需要的全部内容。
如果您已经安装了 docker 和 docker compose,则可以跳过下一部分
并直接进入**安装说明**部分。
### 安装说明
#### 1. 简易安装与部署
**安装 CROWler 最简单的方法**是使用 docker compose 文件。
为此,请按照[此处的说明](doc/docker_build.md)进行操作。
**请注意(1)**:如果您对 config.yaml 或 ENV 变量
或规则集等有疑问,可以使用 GPT 聊天机器人来帮助您。只需访问
此处的[链接(向所有人免费开放)](https://chatgpt.com/g/g-dEfqHkqrW-the-crowler-support)
**请注意(2)**:如果您在 Raspberry Pi 上运行 CROWler,您
需要为 `arm64` 平台构建 CROWler。为此,最简单的方法
是直接在 Raspberry Pi 上使用 `docker-build.sh` 脚本
构建 CROWler。
#### 2. 如果您计划手动安装
相反,如果您计划手动安装 CROWler,您需要
安装以下 Docker 容器:
- [PostgreSQL Container](https://hub.docker.com/_/postgres)
- 目前支持 Postgres 15 及以上版本(同时支持 ARM 和 x86)。
- 然后在其上运行数据库 schema 设置脚本(确保您检查
包含用户凭据的数据库 schema 部分,并正确设置那些 SQL
变量)
- 另请注意:The Crowler 需要构建其 VDI 镜像,因此您
还需要构建 VDI 镜像。
### 从源码构建
如果您使用 docker compose,那么一切都会自动构建,
您只需要按照安装说明部分中的
说明进行操作。
相反,如果您想在本地机器上构建,请按照
本节中的说明进行操作。
要从源码构建 CROWler,您需要安装以下内容:
- [Go](https://golang.org/doc/install)
然后,您需要克隆仓库并构建所需的目标。
要一次性构建所有内容,请运行以下命令:
```
./autobuild.sh
```
要构建单个目标:
首先,检查哪些目标可以构建且可用,运行以下
命令:
```
./autobuild name-of-the-target
```
这将在 `./bin` 目录中构建您请求的
```
./bin/removeSite
./bin/addSite
./bin/addCategory
./bin/api
./bin/thecrowler
```
根据需要构建它们,或者运行 `autobuild.sh`(不带参数)来构建
所有内容。
您可以选择构建 Docker 镜像,为此请运行以下命令:
```
docker build -t .
```
**注意**:如果您构建了 CROWler 引擎 docker 容器,请记住
使用以下 docker 命令运行它(这是必需的!)
```
docker run -it --rm --cap-add=NET_ADMIN --cap-add=NET_RAW crowler_engine
```
**重要提示**:如果您从源码构建,您仍然需要构建一个
CROWler VDI docker 镜像,这是必需的,因为 CROWler 使用了一系列
外部工具来完成其工作,所有这些工具都分组并构建在
VDI 镜像(虚拟桌面镜像)中。
### 用法
有关如何使用它的说明,请参见[此处](doc/usage.md)。
## 生产环境
如果您想在生产环境中使用 CROWler,我建议使用 docker
compose 安装方式。这是最简单的安装方法,也是
最安全的。
为了获得更好的安全性,我强烈建议将 API 部署在独立于
CROWler 容器的单独容器中。此外,无需将 CROWler 容器暴露给
外部世界,但需要确保其拥有互联网访问权限。
## 数据库维护
The CROWler 的默认配置使用 PostgreSQL 作为其数据库。数据库
存储在 Docker volume 中并且是持久化的。
数据库应该不需要维护,The CROWler 会负责
处理。任何时候
如果没有爬取活动,并且距离上一次维护活动超过 1 小时,
The CROWler 将清理数据库并优化索引。
## 许可证
The CROWler 采用 Apache 2.0 许可证授权。有关更多信息,请参见
[LICENSE](LICENSE) 文件。
## 贡献指南
如果您想为该项目做出贡献,请阅读 [CONTRIBUTING](CONTRIBUTING.md)
文件。
## 行为准则
The CROWler 采用了 Contributor Covenant 行为准则。更多
信息请参见 [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) 文件。
## 鸣谢
The CROWler 构建于许多开源项目之上,我想
感谢所有为这些项目做出贡献的开发者。如果没有他们,
The CROWler 就不可能实现。
同时,我也想感谢那些帮助我推进该项目的人,无论是
通过贡献代码、测试,还是提供反馈。谢谢大家!
## 免责声明
The CROWler 是一款旨在帮助您以尊重的方式爬取网站的
工具。
但是,以尊重的方式使用它是您的责任。对于任何
对该工具的滥用,The CROWler 概不负责。
## 顶级贡献者



[](https://goreportcard.com/report/github.com/pzaino/thecrowler)
[](https://github.com/pzaino/TheCROWler/actions/workflows/go-vulncheck.yml)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fpzaino%2Fthecrowler?ref=badge_shield&issueType=license)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fpzaino%2Fthecrowler?ref=badge_shield&issueType=security)

[](https://pkg.go.dev/github.com/pzaino/thecrowler)






## 它是什么?
The CROWler 是一个自托管、事件驱动的内容发现和情报开发平台,
旨在使用真实的浏览器、规则集、插件和 agent 进行高级 Web 爬取、抓取、检测和自动化。
**项目状态:** 仍在积极开发中(WIP)。大部分组件均可使用。
欢迎 Beta 测试人员参与。完整的[每日进度统计](https://githubtracker.com/pzaino/thecrowler)。
此外,该系统配备了一个强大的搜索 API,提供
简化的数据查询接口。此功能确保了便捷的
集成,并允许各种应用访问已索引的数据。
The CROWler 采用基于 microservices 的设计,因此可以轻松
部署在容器化环境中。
作为一个内容发现开发平台,The CROWler 集成了广泛的
技术和功能,包括插件、规则集、agent、
事件等。这些组件协同工作,提供了一个全面的
平台,用于开发您自己的内容发现、数据提取
等解决方案。
## The CROWler 的与众不同之处
- **真实的浏览器,而非抽象层**
The CROWler 使用实际的浏览器引擎,而不是
简化的请求管道。
- **声明式规则集**
爬取、抓取、检测和操作均在版本化的 YAML/JSON 规则集中定义。
- **一流的检测逻辑**
技术、框架、对象和漏洞均使用用户定义的规则进行检测。
- **事件驱动的自动化**
爬取和检测事件可以触发 agent、插件和工作流。
- **设计上的高度可扩展性**
JavaScript 插件可以扩展引擎、浏览器、API 和事件系统。
- **您拥有数据和基础设施的控制权**
The CROWler 完全自托管且可审计。
## The CROWler 适合谁?
The CROWler 专为以下人群和场景设计:
- 工程师和开发者
- 安全研究人员
- 情报和 OSINT 团队
- 高级数据收集 pipeline
- 需要完全控制和可审计性的组织
它**不是**为点击即用的 SaaS 抓取工具或交钥匙数据服务而设计的。
## 设计理念
The CROWler 基于以下几个核心原则构建:
- 控制优于抽象
- 逻辑应当是显式且“可检查的”
- 自动化应当是事件驱动的
- 情报应当由用户定义
- 基础设施和数据所有权至关重要
## 快速开始
- 文档:[doc/](https://github.com/pzaino/thecrowler/tree/develop/doc#readme)
- 基于 GPT 的支持[聊天机器人](https://chatgpt.com/g/g-dEfqHkqrW-the-crowler-support)(您必须登录 ChatGPT 才能正常使用,否则 CustomGPTs 的访问权限非常有限)
- 配置示例:[config.default](config.default)
- 规则集 schema:[schemas/](schemas/)
- 插件示例:[plugins/](plugins/)
从安装指南(见下文)和最小配置示例开始。
## 目录
- [功能](#features-overview)
- [它解决了什么问题?](#what-problem-does-it-solve)
- [这个名字怎么发音?](#how-do-i-pronounce-the-name)
- [如何使用它?](#how-to-use-it)
- [前置条件](#prerequisites)
- [安装说明](#installation)
- [简易安装与部署](#1-easy-installation-and-deployment)
- [如果您计划手动安装](#2-if-youre-planning-to-install-it-manually)
- [从源码构建](#build-from-source)
- [生产环境](#production)
- [数据库维护](#db-maintenance)
- [许可证](#license)
- [贡献指南](#contributing)
- [行为准则](#code-of-conduct)
- [鸣谢](#acknowledgements)
- [免责声明](#disclaimer)
- [顶级贡献者](#top-contributors)
## 功能(概述)
The CROWler 是一个**全方位的内容发现和情报平台**。
其能力涵盖爬取、交互、检测、自动化、安全
以及大规模数据分析。
以下是主要功能领域的**高度概述**。
有关完整且详细的细分,请参见:**[doc/features.md](doc/features.md)**
### Web 爬取与交互
- 递归和范围化的爬取(URL、域名、子域名、递归)
- 真实的浏览器渲染
- 人类行为模拟 (HBS)
- 动态 JavaScript 内容处理
- 自定义 User-Agent、请求过滤和带宽控制
### 搜索与发现
- 高性能的基于 API 的搜索引擎
- 高级查询操作符和 dorking
- 实体提取与关联
- 结果导出(CSV、JSON)
### 抓取与数据处理
- 声明式抓取规则(CSS、XPath、regex)
- 后处理、转换和丰富
- 基于插件和 AI 的数据 pipeline
### 检测与情报
- 技术、框架和库检测
- 漏洞与安全标头分析
- TLS/SSL 指纹识别(JA3、JA4、证书)
- 集成外部情报源
### 规则、操作与自动化
- 声明式规则集(爬取、抓取、操作、检测)
- 通过真实的浏览器执行系统级操作
- 事件驱动的工作流和调度
### 可扩展性
- JavaScript 插件系统(引擎、浏览器、API、事件)
- 自定义 API endpoint
- 由 agent 控制的执行
### Agent 与 AI
- 传统 AI agent
- 事件驱动的 agent 编排
- 预部署的容器化 AI 模型(CUDA / 非 CUDA)
- 多模型 AI 工作流
### 安全与网络安全
- 网络侦察(DNS、WHOIS、服务发现)
- Fuzzing 和安全测试
- 原生支持第三方安全服务
### 部署与可扩展性
- Microservices 架构
- 引擎、VDI、API 的水平扩展
- 基于 Docker 的部署
- 本地、云端和混合环境
**完整功能列表及详细说明:**
[doc/features.md](doc/features.md)
### 它解决了什么问题?
The CROWler 旨在解决有关 Web 爬取、内容
发现、技术检测和数据提取的一系列问题。
虽然它的主要目标是让私人、专业和企业用户
能够快速开发其内容发现解决方案,但它也被设计为
能够爬取私有网络和内网,因此您可以使用它来创建
您自己或您公司的搜索引擎。
除此之外,它还可以作为更复杂网络安全工具的
“基础”,因为它可用于收集有关网站、其网络、
所有者、漏洞、正在暴露的服务等的信息。
鉴于它还能提取信息,因此可用于创建
带有来源引用的知识库,或创建有关特定
主题的信息数据库。
显然,它也可以用于执行关键字分析、语言检测等。
但这是所有爬虫都能做到的事情。然而,所有的
“经典”功能均已实现/正在实现中。
### 这个名字怎么发音?
**The**:在辅音音素前发为 /ðə/,听起来像
"thuh"。
**CROW**:发为 /kroʊ/,与 "know" 或 "snow" 押韵。
**ler**:后半部分发为 /lər/,类似于
"crawler" 一词的结尾或 "tumbler" 中的 "ler"。
连在一起,它的发音就像 "**thuh KROH-lər**"
### ChatGPT 对 The CROWLer 有什么看法 ;)
(以下部分有意轻松幽默,不具备权威性。)
"The CROWler 不仅仅是一个工具;它是对道德、高效且
有效的 Web 爬取的承诺。无论您是在进行学术研究、市场
分析,还是增强您的网络安全态势,The CROWler 都能以
正直和精准兑现其价值。
加入我们,重新定义 Web 爬取的标准。探索更多并为
The CROWler 走向更尊重、更具洞察力的数字
探索之旅做出贡献。"
😂 这显然有点夸张了,但这很有趣,我决定把
它放在这里,只是为了好玩。顺便说一下,它确实让我
想补充一句:
“……还有一件事!”(我想知道为什么?!?!)😂
## 如何使用它?
### 前置条件
The CROWler 被设计为基于 microservices 的系统,允许引擎、VDI、API 和事件管理进行独立扩展、隔离和编排。
- [Docker](https://docs.docker.com/install/)
- [Docker Compose](https://docs.docker.com/compose/install/)
对于基于 docker compose 的安装,这就是您需要的全部内容。
如果您已经安装了 docker 和 docker compose,则可以跳过下一部分
并直接进入**安装说明**部分。
### 安装说明
#### 1. 简易安装与部署
**安装 CROWler 最简单的方法**是使用 docker compose 文件。
为此,请按照[此处的说明](doc/docker_build.md)进行操作。
**请注意(1)**:如果您对 config.yaml 或 ENV 变量
或规则集等有疑问,可以使用 GPT 聊天机器人来帮助您。只需访问
此处的[链接(向所有人免费开放)](https://chatgpt.com/g/g-dEfqHkqrW-the-crowler-support)
**请注意(2)**:如果您在 Raspberry Pi 上运行 CROWler,您
需要为 `arm64` 平台构建 CROWler。为此,最简单的方法
是直接在 Raspberry Pi 上使用 `docker-build.sh` 脚本
构建 CROWler。
#### 2. 如果您计划手动安装
相反,如果您计划手动安装 CROWler,您需要
安装以下 Docker 容器:
- [PostgreSQL Container](https://hub.docker.com/_/postgres)
- 目前支持 Postgres 15 及以上版本(同时支持 ARM 和 x86)。
- 然后在其上运行数据库 schema 设置脚本(确保您检查
包含用户凭据的数据库 schema 部分,并正确设置那些 SQL
变量)
- 另请注意:The Crowler 需要构建其 VDI 镜像,因此您
还需要构建 VDI 镜像。
### 从源码构建
如果您使用 docker compose,那么一切都会自动构建,
您只需要按照安装说明部分中的
说明进行操作。
相反,如果您想在本地机器上构建,请按照
本节中的说明进行操作。
要从源码构建 CROWler,您需要安装以下内容:
- [Go](https://golang.org/doc/install)
然后,您需要克隆仓库并构建所需的目标。
要一次性构建所有内容,请运行以下命令:
```
./autobuild.sh
```
要构建单个目标:
首先,检查哪些目标可以构建且可用,运行以下
命令:
```
./autobuild name-of-the-target
```
这将在 `./bin` 目录中构建您请求的
```
./bin/removeSite
./bin/addSite
./bin/addCategory
./bin/api
./bin/thecrowler
```
根据需要构建它们,或者运行 `autobuild.sh`(不带参数)来构建
所有内容。
您可以选择构建 Docker 镜像,为此请运行以下命令:
```
docker build -t 标签:EVTX分析, Go语言, Homebrew安装, Web数据采集, 主机安全, 代码示例, 内容发现, 密码管理, 数据分析, 数据可视化, 日志审计, 测试用例, 版权保护, 程序破解, 请求拦截