一、这个项目在解决什么
如果你做过 RAG(检索增强生成)或 AI Agent,迟早会遇到一个痛点:网页内容不等于 LLM 可用的内容。
传统爬虫抓回来的是 HTML,里面夹杂着导航栏、广告、脚本、样式、Cookie 横幅——这些对人类浏览有用,对 LLM 来说全是噪音。你得自己写清洗逻辑、自己处理表格/代码块/链接引用、自己想办法过滤无关内容。
unclecode/crawl4ai 就是为解决这个问题而生的:一个专为 LLM 和 AI 应用设计的网页爬虫,输出的是干净、结构化、带引用标注的 Markdown,可直接喂给 RAG 系统、AI Agent 或数据管道。
截至 2025 年底,它已获得 53K+ GitHub Stars,是目前最受欢迎的开源爬虫项目。
二、作者故事:愤怒驱动的开源
作者 unclecode 在 README 里写了一段”个人故事”:
我在研究生阶段专攻 NLP,为学术研究写过爬虫。2023 年,我需要一个”网页转 Markdown”的工具。当时市场上的”开源”方案要求注册账号、获取 API Token、还要付 $16——结果还不好用。
我当时就怒了,几天之内写出了 Crawl4AI,发布后迅速走红。现在它是 GitHub 上 Star 数最多的爬虫项目。
我做开源是为了可用性(availability)——任何人不需要门槛就能用。现在我正在做平台,是为了可负担性(affordability)——任何人都能在不破产的前提下跑大规模爬取。
这个故事解释了 Crawl4AI 的两个核心基因:零门槛安装和大规模生产可用。
三、核心特性
1. LLM 友好的输出
- 干净的 Markdown:自动保留标题层级、表格、代码块、引用,过滤导航/广告/脚注
- Fit Markdown:启发式过滤,只保留对 AI 有用的核心内容
- 引用与参考文献:把页面链接转为编号引用列表,方便溯源
- BM25 过滤:基于经典信息检索算法,按用户查询筛选最相关的内容块
2. 高性能异步架构
- 异步浏览器池:基于 Playwright 的异步并发爬取
- 智能缓存:避免重复抓取,提升速度
- Prefetch 模式:v0.8.0 新增,URL 发现速度提升 5–10 倍
- 崩溃恢复:长时间深度爬取支持断点续爬(
resume_state+on_state_change回调)
3. 完整的浏览器控制
- 会话管理:保持登录态、Cookies、User Agent
- 浏览器画像:创建持久化 Profile,保存认证状态
- 代理支持:无缝对接代理池
- JS 执行:动态内容抓取,等待异步渲染
- 隐蔽模式:模拟真实用户,绕过反爬检测
- 远程浏览器控制:通过 Chrome DevTools Protocol 远程大规模抓取
4. 结构化数据提取
- LLM 驱动提取:支持所有主流 LLM(开源/闭源),自定义 Schema 输出 JSON
- 分块策略:主题分块、正则分块、句子级分块
- 余弦相似度:按语义相关性筛选内容块
- CSS/XPath 提取:快速定位重复模式(商品列表/表格/评论区)
5. 部署与扩展
- Docker 化部署:内置 FastAPI 服务器,一键启动
- JWT 认证:API 安全内置(v0.9.0 起默认开启)
- 命令行工具:
crwl命令行接口,无需写代码即可爬取 - 云端就绪:适配主流云平台部署
四、快速开始
安装
# 安装包
pip install -U crawl4ai
# 运行安装后设置
crawl4ai-setup
# 验证安装
crawl4ai-doctor
Python 代码示例
import asyncio
from crawl4ai import *
async def main():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(
url="https://www.nbcnews.com/business",
)
print(result.markdown)
if __name__ == "__main__":
asyncio.run(main())
命令行使用
# 基础爬取,输出 Markdown
crwl https://www.nbcnews.com/business -o markdown
# 深度爬取(BFS 策略,最多 10 页)
crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10
# LLM 提取(指定问题)
crwl https://www.example.com/products -q "Extract all product prices"
五、版本演进与安全加固
Crawl4AI 近期版本更新频繁,安全加固力度很大:
| 版本 | 核心更新 |
|---|---|
| v0.9.2 | 修复 MemoryAdaptiveDispatcher 任务/页面泄漏,Docker Monitor WebSocket 认证,GPU 构建支持 |
| v0.9.0 | 安全优先版本:Docker API 默认开启认证,请求体作为不可信边界,服务器默认绑定本地回环 |
| v0.8.7 | 安全加固:修复 Docker API 的 RCE、SSRF、认证绕过、文件写入、XSS、硬编码 JWT 密钥等严重漏洞 |
| v0.8.0 | 崩溃恢复(断点续爬)+ Prefetch 模式(5–10 倍 URL 发现速度) |
| v0.7.8 | 稳定性修复:11 个 bug 修复,覆盖 Docker API、LLM 提取、URL 处理 |
这种安全迭代节奏,说明项目已经进入生产可用阶段,团队对漏洞响应非常及时。
六、典型使用场景
场景一:RAG 知识库构建
某技术博客采集 CSDN 专栏 500 篇文章:
- 传统爬虫(Requests + BeautifulSoup):爬取 3 小时,分页漏掉 20% 文章,代码块/公式/表格全乱码,手动整理 6 小时
- Crawl4AI + LLM 提取:爬取+清洗+结构化 1 小时完成,效率提升 6 倍
场景二:AI Agent 工具调用
让 AI Agent 实时抓取网页内容,自动提取关键信息:
from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, LLMExtractionStrategy
from pydantic import BaseModel
class ProductInfo(BaseModel):
name: str
price: float
rating: float
async def extract_products(url):
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(
url=url,
extraction_strategy=LLMExtractionStrategy(
llm_config=LLMConfig(provider="openai/gpt-4o"),
schema=ProductInfo
)
)
return result.extracted_content
场景三:大规模深度爬取
# 深度爬取 + 断点续爬
config = CrawlerRunConfig(
deep_crawl_strategy=BFSDeepCrawlStrategy(max_depth=3),
cache_mode=CacheMode.ENABLED,
)
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(
url="https://docs.crawl4ai.com",
config=config
)
七、与其他爬虫的对比
| 维度 | 传统爬虫(Scrapy/BeautifulSoup) | Crawl4AI |
|---|---|---|
| 输出格式 | HTML/原始文本,需自行清洗 | LLM 就绪的 Markdown,自动过滤噪音 |
| 动态内容 | 需额外配置 Headless 浏览器 | 内置 Playwright,开箱即用 |
| LLM 集成 | 无,需自己写提取逻辑 | 内置 LLMExtractionStrategy,支持所有主流 LLM |
| 会话管理 | 需自行实现 | 内置 Session/Profile 管理 |
| 部署方式 | 纯 Python 脚本 | Python CLI + Docker API 服务器 |
| 安全加固 | 依赖用户自行处理 | v0.9.0 起默认开启认证,修复过 RCE/SSRF 等严重漏洞 |
八、Cloud API 计划
Crawl4AI 正在筹备云端 API 服务(Closed Beta):
- 定位:比现有方案成本更低的大规模网页提取服务
- 目标用户:需要大规模、稳定、高性价比网页提取的企业/团队
- 申请方式:填写表单,分批 onboard
这说明项目正在从”开源工具”向”开源 + 商业平台”演进——开源版本保证可用性,云端版本提供可负担的大规模能力。
九、适用人群
适合:
- RAG 系统构建者(需要把网页内容转为向量数据库输入)
- AI Agent 开发者(需要实时抓取网页并提取结构化信息)
- 数据工程师(需要大规模、生产级爬虫管道)
- 研究者/分析师(需要快速采集大量网页内容进行分析)
不适合:
- 简单一次性抓取(直接用浏览器开发者工具或 curl 即可)
- 高度定制化的反爬对抗场景(Crawl4AI 提供了隐蔽模式,但极端场景可能需要更专业的方案)
十、一句话总结
Crawl4AI 是目前 GitHub 上最受关注的 LLM 友好型爬虫——它把”网页抓取 + 清洗 + 结构化”这三步合并成一步,输出直接可用的 Markdown,背后是一个 53K+ Star 的社区、持续的安全加固和即将推出的云端服务。
GitHub 地址:https://github.com/unclecode/crawl4ai
官方文档:https://docs.crawl4ai.com/
Discord 社区:https://discord.gg/jP8KfhDhyN
