Skip to main content
抓取页面以获取干净的数据,然后调用 /interact 在该页面中开始执行 actions:点击按钮、填写表单、提取动态内容,或进一步深入导航。只需描述你想做什么;如果需要完全控制,也可以编写代码。

AI prompts

描述你希望在页面中执行的操作

代码执行

通过代码安全地与 playwright、agent-browser 交互

实时视图

通过可嵌入的流实时观看或与浏览器交互

工作原理

  1. 使用 POST /v2/scrape 抓取一个 URL。响应会在 data.metadata.scrapeId 中返回 scrapeId。如果你想持久保存浏览器状态,请在此请求中传入 profile
  2. 调用 POST /v2/scrape/{scrapeId}/interact,并传入 prompt 或 Playwright code 进行交互。此处不要传入 profile;交互会话会继承抓取任务中的 profile
  3. 完成后,使用 DELETE /v2/scrape/{scrapeId}/interact 停止该会话。对于可写的 profile,会话停止时会保存更改。

快速开始

抓取页面、与其交互,然后停止会话:
Response

通过 prompt 交互

这是与页面交互的最简单方式。用自然语言描述你的需求,它会自动点击、输入、滚动并提取数据。
响应中包含一个 output 字段,其中包含代理的答案:
Response

保持 prompt 简短且聚焦

当每个 prompt 都是单一且明确的任务时,效果最好。不要一次性要求代理完成复杂的多步骤工作流,而应将其拆分为单独的交互调用。每次调用都会复用同一个浏览器会话,因此状态会在调用之间延续。

运行代码

若要实现完全控制,你可以直接在浏览器沙箱中执行代码。page 变量 (一个 Playwright Page 对象) 可在 Node.js 和 Python 中使用。Bash 模式已预装 agent-browser。你还可以在当前会话中截取屏幕截图:在 Node.js 中使用 (await page.screenshot()).toString("base64"),在 Python 中使用 await page.screenshot(path="/tmp/screenshot.png"),或在 Bash 中使用 agent-browser screenshot

Node.js (Playwright)

默认语言。可直接编写 Playwright 代码。page 已连接到浏览器。

Python

language 设置为 "python",以使用 Playwright 的 Python API。

Bash (agent-browser)

agent-browser 是一个预装在沙箱中的 CLI 工具,提供 60 多个命令。它会提供带有元素引用 (@e1@e2 等) 的辅助功能树,非常适合由 LLM 驱动的自动化。
常见的 agent-browser 命令:

实时视图

每个交互响应都会返回一个 liveViewUrl,你可以将其嵌入页面中,以实时查看浏览器画面。适用于调试、演示或构建基于浏览器的 UI。
Response

交互式实时视图

响应还包含一个 interactiveLiveViewUrl。与仅可查看的标准实时视图不同,交互式实时视图允许用户通过嵌入式流直接点击、输入,并与浏览器会话交互。这对于构建面向用户的浏览器 UI 很有帮助,例如登录流程,或需要终端用户控制浏览器的引导式工作流。

CDP URL

每个交互响应也会返回一个 cdpUrl:即该浏览器会话的原始 Chrome DevTools Protocol (CDP) WebSocket URL。你可以用它从 Playwright、Puppeteer 或任何 CDP 客户端直接连接到实时会话,并通过自己的代码控制浏览器。

会话生命周期

创建

首次调用 POST /v2/scrape/{scrapeId}/interact 会延续抓取会话并启动交互。

复用

对同一个 scrapeId 的后续 interact 调用会复用现有会话。浏览器会保持打开状态,并在调用之间保留其状态,因此你可以将多个交互串联起来:

清理

完成后请显式停止会话:
会话也会根据 TTL (默认值:10 分钟) 或无活动 timeout (默认值:5 分钟) 自动过期。
请务必在使用完毕后停止会话,以避免不必要的计费。额度按秒折算。

使用 抓取 + 交互 的持久化配置文件

默认情况下,每个 scrape + 交互 会话都会从全新的浏览器状态开始。使用 profile,你可以在多次抓取之间保存并复用浏览器状态 (cookies、localStorage、会话) 。这对于保持登录状态和保留偏好设置非常有用。 在初始 POST /v2/scrape 请求中传入 profile 对象。不要在 POST /v2/scrape/{scrapeId}/interact 中传入 profile;交互 会话会复用抓取任务的浏览器会话和 profile 设置。使用 DELETE /v2/scrape/{scrapeId}/interact 停止 交互 会话,以便保存对可写配置文件所做的更改。
cURL
配置文件的生命周期如下:
  1. 使用 profile.namesaveChanges: true 创建抓取。
  2. 针对返回的 scrapeId 运行 prompt 或代码交互。
  3. 停止会话以保存 cookies、localStorage 和其他浏览器状态。
  4. 稍后使用相同的 profile.name 启动新的抓取。当你只想读取现有状态而不将更改写回时,使用 saveChanges: false
同一时间只能有一个会话保存到某个配置文件。如果另一个会话已在保存,你将收到 409 错误。你仍然可以使用 saveChanges: false 打开同一个配置文件,或稍后重试。
浏览器状态会在 交互 会话停止时保存。完成后请务必停止该会话,以便该配置文件可以被复用。

验证持久化

你可以在一个会话中写入 localStorage 值并停止该会话,然后在第二个使用相同配置文件的会话中读取该值,以此测试持久化,而无需依赖真实的登录流程。
cURL
第二个交互响应应显示 localStorage"saved"cookietrue
通过 API 创建的 Profiles 可能暂时还不会显示在 Dashboard > Interact > Profiles 中。Dashboard 目前尚未提供通过 API 创建的持久化 Profiles 的完整列表。

何时使用什么

交互 与 浏览器沙箱:交互构建在与 浏览器沙箱 相同的基础设施之上,但针对最常见的使用模式提供了更好的界面:先抓取页面,再进一步深入。当你需要一个不绑定到特定抓取任务的独立浏览器会话时,浏览器沙箱更合适。

定价

  • 仅代码 (无 prompt): 每个会话分钟 2 个额度
  • 使用 AI prompts: 每个会话分钟 7 个额度
  • 抓取: 单独计费 (每次抓取 1 个额度,外加任何特定格式的费用) 。

API 参考

请求体 (POST)

响应


有反馈或需要帮助?请发送邮件至 help@firecrawl.com,或通过 Discord 联系我们。