欢迎光临
我们一直在努力

Firecrawl:给 AI Agent 用的"网页上下文 API"

01. 为什么每次让 AI “联网查一下”,都像让一辆手推车去撞墙?

AI agent 抓网页撞墙
图 1:想直接抓网页,会被 JS 渲染、代理、验证码、频率限制轮番挡回来。

让 AI agent 去”读个网页”,听起来是最自然不过的请求,但真动手你就会发现,这门生意的水太深了。很多现代网页离了 JavaScript 渲染根本就是一张白纸,稍微复杂一点的站点还有反爬、验证码、频率限制、IP 封锁等着你,更别提各种反人类的 HTML 结构和铺天盖地的广告弹窗。我自己以前写爬虫,80% 的时间都不是在分析数据,而是在跟这些基础设施较劲:维护代理池、调 Playwright、处理 Cloudflare、写 XPath 兜底。到最后,一个原本只想”帮我看看这篇文章写了啥”的小需求,能折腾成一个小工程。

所以当我第一次看到 Firecrawl 的时候,第一反应不是”又一个爬虫工具”,而是”终于有人愿意把这套脏活打包成一个 API 了”。它不像传统爬虫框架那样给你一把螺丝刀就让你自己造车,而是直接给你一个整车:你只需要告诉它”我要什么”,它帮你解决”怎么拿到”的绝大多数问题。这种体验上的差别,可能比功能列表上的差别更重要。

02. Firecrawl 的定位:不是爬虫,是”网页上下文 API”

Firecrawl 把脏网页变成干净 Markdown 和 JSON
图 2:Firecrawl 把搜索、抓取、解析这些脏活全收进一个 API,出来就是 LLM-ready 的干净数据。

Firecrawl 的官方 slogan 是 “The context API to search, scrape, and interact with the web at scale”,翻译成人话就是:它把自己定位成给 AI agent 用的”网页上下文 API”。它的任务不是帮你存一堆原始 HTML,而是把网页转成 AI 能直接消化的东西——干净的 Markdown、结构化的 JSON、关键页面的截图,以及可以被 LLM 理解的元数据。这个定位很精准:传统爬虫面向的是人,Firecrawl 面向的是 agent。

项目本身也够硬。仓库有 17.5 万 star、9600 多个 fork,从 2024 年 4 月开源到现在一直保持高频迭代,最新版已经到 v2.11.0。代码主体是 TypeScript,采用 AGPL-3.0 协议开源,同时运营着一个云端托管服务 firecrawl.dev。也就是说,它既给了开源社区一条自托管的路,也给了不想折腾基础设施的人一个开箱即用的选择。这种”两条腿走路”的打法,我觉得是它能在短时间内起量的关键原因之一。

03. 五个核心端点,对应五种常见需求

Firecrawl 的五个端点像五个抽屉
图 3:搜索、抓取、爬取、映射、智能体,挑一个抽屉拉开就行。

Firecrawl 的 API 设计得很直接,核心端点就五个,每个解决一类典型场景。你不需要翻厚厚的文档去配参数,基本上看到端点名字就知道该用哪个。这种设计其实特别对 agent 的胃口:agent 不需要理解底层抓取策略,只需要在决策时选对工具。对开发者来说,它也省了很多”到底该用 scrape 还是 crawl”的纠结——场景和端点基本一一对应。下面是我在实际试用和读文档之后做的归纳:

端点 解决什么问题 典型用法
/search 先搜网页,再拿内容 让 agent 像人一样”百度一下”,返回搜索结果并把每个结果抓取成 Markdown
/scrape 抓单个 URL 给你一篇文章、一个商品页、一份文档,吐出干净 Markdown 或 JSON
/crawl 整站爬取 给一个起始 URL,自动递归抓取整站内容,适合 FAQ、文档站
/map 发现全站链接 不深入抓取内容,只快速列出目标网站的所有 URL 清单
/agent 让 AI 自己决定怎么抓 描述你要什么数据,agent 自动规划搜索、抓取、提取步骤

这里最让我感兴趣的是 /agent,它其实是从旧的 /extract 端点演化来的。你不需要提前知道数据藏在哪个 URL 里,只需要描述”我要查某公司的创始人”或者”我要列出这个电商页的所有商品”,它会自己决定搜什么、抓什么、怎么解析。这种”目标驱动”的抓取方式,跟传统爬虫”URL 驱动”的思维方式完全不一样,也更适合 LLM agent 的调用链路。另外 /scrape/{id}/interact 还能在抓取之后对页面做进一步交互,比如点击、滚动、输入文字,这对需要登录态或动态加载的页面特别有用。

04. LLM 提取:给 schema,直接吐结构化 JSON

网页套 schema 后变成结构化 JSON
图 4:给 Firecrawl 一个 Pydantic schema,它就能把网页按字段压成 JSON。

光把网页变成 Markdown 还不够,很多时候我们需要的是结构化的字段。Firecrawl 的做法是让你定义一个 schema——用 Pydantic 模型最方便——然后它把网页内容往里套。这个能力在 /agent 里尤其好用,因为你不需要自己写正则、XPath 或者 CSS 选择器去抠字段,只需要描述每个字段的含义。

举个官方例子,如果你想查一家公司的创始人,可以这么写。注意这里的关键不是 prompt 写得多复杂,而是 schema 把输出格式提前定死了:模型不管怎么推理,最终都必须按字段填进去。Pydantic 的 Field 描述还能引导模型理解每个字段该填什么,列表、可选字段也都能直接声明。这让下游代码处理起来非常稳:

from firecrawl import Firecrawl
from pydantic import BaseModel, Field
from typing import List, Optional

app = Firecrawl(api_key="your-api-key")

class Founder(BaseModel):
    name: str = Field(description="创始人全名")
    role: Optional[str] = Field(description="职位")

class FoundersSchema(BaseModel):
    founders: List[Founder] = Field(description="创始人列表")

result = app.agent(
    prompt="Find the founders of Firecrawl",
    schema=FoundersSchema
)
print(result.data)

返回的就是规整的 JSON,每个字段都在 schema 里预先定好了。这种方式的好处显而易见:第一,不用维护脆弱的解析逻辑;第二,LLM 可以直接消费结果,不用再做一次”文本理解”;第三,schema 本身就是一份文档,团队交接的时候看一眼就知道这个 agent 在抓什么。我自己的体会是,它把”抓取”和”理解”这两个步骤之间的边界打通了——你不再只是”拿到网页”,而是”拿到已经理解好的网页”。

05. 自托管还是上云?两条路,两种账

自托管与云端二选一
图 5:左边是 Docker 本地跑,数据不出门;右边是云端开箱即用,但高级功能只在云上。

Firecrawl 提供两条使用路径。第一条是直接用 firecrawl.dev 的云端 API,注册拿 key 就能跑;第二条是把仓库 clone 下来,用 Docker Compose 在本地或自己的服务器上跑。如果你只是做几个小脚本、低频次抓取,云端是最省事的;但如果你对数据隐私、成本控制、或者定制化有要求,自托管就值得认真考虑。

自托管的最小启动步骤大致如下,以官方文档推荐的 v2.11.162 为例。整个流程就是 clone、checkout、写 .env、docker compose up,大概十分钟能把本地 API 跑起来。这个默认栈会拉起 API、PostgreSQL、Redis、RabbitMQ 和 Playwright 等一堆服务,所以本地资源要留够。不过别急着把它挂到公网——默认配置是评估环境,没有认证和 TLS:

git clone https://github.com/firecrawl/firecrawl.git
cd firecrawl
git checkout v2.11.162

cat > .env <<'EOF'
USE_DB_AUTHENTICATION=false
POSTGRES_USER=postgres
POSTGRES_PASSWORD=replace-with-at-least-32-random-characters
POSTGRES_DB=postgres
EOF

docker compose up --build -d
curl http://localhost:3002/v0/health/readiness

启动后,本地 API 监听在 http://localhost:3002,可以直接用 /v2/scrape 做测试。不过官方也强调得很清楚:这个默认配置是**评估环境**,没有持久化存储、没有 TLS、没有认证,不能拿到公网上直接用。生产环境需要自己加数据库卷、反向代理、TLS 和身份认证。这一点很诚实,也避免了很多人一上来就踩坑。

能力 自托管 Firecrawl Cloud
基础 scrape / crawl / map / search 支持 支持
JS 渲染与基础反爬 默认已包含 Playwright 支持
LLM 提取 / agent 需接入 OpenAI 兼容或 Ollama 开箱即用
截图、页面交互、Fire-engine 高级反爬 默认不支持,需额外配置 云端能力

做这张表的时候我特别注意了一下:自托管并不是云的”阉割版”,而是需要你额外把 LLM provider、代理、反爬引擎这些外部服务接进来。接不接、怎么接,完全看你的预算和合规要求。这种设计其实挺合理——它把”必须开源”的部分给你,把”需要基础设施规模”的部分留成云服务,两边都有饭吃。反过来也说明,如果你打算重度使用 agent 提取或者大规模反爬,要么花钱上云,要么花人运维自托管,没有免费的捷径。

06. 生态:SDK 多得离谱,MCP 也上了桌

除了 REST API,Firecrawl 的 SDK 覆盖也相当广。官方支持 Python、Node.js、Go、Java、Elixir、Rust、Ruby、.NET、PHP 九种语言,基本上主流后端语言都包含了。它还提供了一个 firecrawl-cli 命令行工具,以及一个 firecrawl-mcp MCP server。MCP 这条线值得单独提一句:有了它,任何支持 MCP 的 AI agent 或 IDE 插件,都能直接调用 Firecrawl 去联网查资料,而不需要你写任何桥接代码。

我用 Python SDK 试了一个最简单的场景——抓取一篇博客转成 Markdown。这个例子很能说明它的体验优势:你不需要手动处理请求、轮询、重试这些脏活,传一个 URL 和 formats 参数,拿到手的直接就是干净文本。比起自己写 requests + BeautifulSoup + html2text 那一套,代码量和心智负担都小很多:

from firecrawl import Firecrawl

app = Firecrawl(api_key="your-api-key")
doc = app.scrape("https://firecrawl.dev", formats=["markdown"])
print(doc.markdown[:500])

代码就两行核心业务逻辑,剩下的异步轮询、重试、错误处理 SDK 都包好了。作为一个平时不太愿意在工具链上花太多时间的人来说,这种”传个 URL 就给我干净文本”的体验,确实比传统爬虫舒服太多。而且因为它输出的是 Markdown, downstream 的 LLM 提示词可以直接用,不需要再写”请忽略导航栏和广告”之类的脏 prompt。

写在最后:别只盯着”方便”,也得算清楚账单和协议

云端 credits 像水表一样转
图 6:批量抓取很爽,但云端是按 credits 计费的,账单会跟着转。

Firecrawl 确实把网页抓取这件事的体验往前推了一大步,尤其是对那些不想维护爬虫基础设施、又需要给 agent 喂实时网页上下文的人来说,它的价值非常直接。但越是好用的工具,越需要你在冲动上线前把几笔账算明白。第一笔是成本账:云端是按 credits 计费的,单次抓取看起来便宜,一旦上量——比如做整站监控、批量竞品跟踪、每日新闻聚合——credits 会像水表一样哗哗转,账单可能比你预想的跑得快得多。所以在决定用它之前,最好先用小批量跑一个星期的费用曲线,再决定是否切自托管。

第二笔是运维账。自托管看起来很美好,数据不出门、成本可控,但它也把基础设施的责任完全交给你了:PostgreSQL、Redis、RabbitMQ、Playwright、worker 扩展、TLS、认证、备份、升级,哪一项都不能撒手。如果你团队里没有专门的人负责运维,自托管的快乐可能只会持续到你第一次遇到生产事故为止。官方文档里也反复强调默认配置不是生产架构,这不是客套,是真话。

第三笔是协议账。Firecrawl 开源代码是 AGPL-3.0 协议,这个协议的网络传染性很强:如果你基于它修改并对外提供网络服务,理论上需要开源你的衍生代码。直接用它的云端 API、或者直接运行它的二进制来给自己的内部脚本用,一般不构成传染性;但如果你想拿它二开做一个闭源 SaaS 产品,建议先让法务或合规过一遍。最后还想提醒一点:无论用云还是自托管,抓取网页都要尊重目标站的 robots.txt 和使用条款,工具再方便,法律责任也还是要落到使用者自己身上。

未经允许不得转载:AI TOOL PUSH » Firecrawl:给 AI Agent 用的"网页上下文 API"

评论 抢沙发

更好的WordPress主题

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

登录

找回密码

注册