Firecrawl Browser Sandbox 为你的智能体提供一个安全的浏览器环境,使智能体能够与 Web 交互。可以填写表单、点击按钮、进行身份验证等。
无需本地配置、无需安装 Chromium,也不存在驱动兼容性问题。环境中已预装 agent-browser 和 Playwright。
可通过 API、CLI (Bash / agent-browser、Python、Node)、Node SDK、Python SDK、Vercel AI SDK 和 MCP Server 使用。
要为 AI 代码智能体 (Claude Code、Codex、Open Code、Cursor 等) 添加浏览器支持,请安装 Firecrawl 技能:
npx -y firecrawl-cli@latest init --all --browser
每个会话都在隔离的一次性或持久化沙箱中运行,并且可在无需管理基础设施的情况下进行扩展。
创建会话,执行代码,然后关闭会话:
// npm install @mendable/firecrawl-js
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
// 1. 启动会话
const session = await firecrawl.browser();
console.log(session.cdpUrl); // wss://cdp-proxy.firecrawl.dev/cdp/...
// 2. Execute code
const result = await firecrawl.browserExecute(session.id, {
code: `
await page.goto("https://news.ycombinator.com");
const title = await page.title();
console.log(title);
`,
language: "node",
});
console.log(result.result); // "Hacker News"
// 3. Close
await firecrawl.deleteBrowser(session.id);
- 无需安装驱动 - 无需 Chromium 二进制文件、无需执行
playwright install,也没有驱动兼容性问题
- Python、JavaScript 与 Bash - 通过 API、CLI 或 SDK 发送代码并获取结果。三种语言都会在远程沙盒中运行
- agent-browser - 预装的 CLI,内置 40+ 条命令。AI agent 只需编写简单的 Bash 命令,无需编写 Playwright 代码
- Playwright 已预装 - Playwright 在沙盒中已预装,agent 如有需要也可以直接编写 Playwright 代码
- CDP 访问 - 当你需要完全控制时,可通过 WebSocket 连接你自己的 Playwright 实例
- 实时视图 - 通过可嵌入的流式 URL 实时查看会话
- 交互式实时视图 - 通过可嵌入的交互式流,让用户可直接与浏览器交互
返回会话 ID、CDP URL 和实时视图 URL。
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
const session = await firecrawl.browser({
ttl: 120,
activityTtl: 60,
});
console.log(session.id);
console.log(session.cdpUrl); // wss://cdp-proxy.firecrawl.dev/cdp/...
console.log(session.liveViewUrl); // https://liveview.firecrawl.dev/...
{
"success": true,
"id": "550e8400-e29b-41d4-a716-446655440000",
"cdpUrl": "wss://cdp-proxy.firecrawl.dev/cdp/550e8400-e29b-41d4-a716-446655440000",
"liveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000",
"interactiveLiveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000?interactive=true"
}
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
const result = await firecrawl.browserExecute("YOUR_SESSION_ID", {
code: 'await page.goto("https://example.com"); const title = await page.title(); console.log(title);',
language: "node",
});
console.log(result);
{
"success": true,
"result": "Example Domain"
}
在会话中下载的文件可以捕获并以 base64 形式返回。可通过 execute 端点使用 Playwright 的下载 API:
import base64
async with page.expect_download() as download_info:
await page.click('a#download-link') # 点击触发下载的元素
download = download_info.value
path = await download.path()
# 可选:保存到指定路径
# await download.save_as('/tmp/myfile.pdf')
# 读取文件内容并以 base64 输出
with open(path, "rb") as f:
content = base64.b64encode(f.read()).decode()
print(content)
沙箱文件系统是临时的——会话结束后,已下载的文件就会丢失。若要持久保存文件,请在会话期间读取其内容并保存到你自己的存储中。持久化配置文件会保留浏览器状态 (cookies、localStorage) ,但不会保留磁盘上的文件。
agent-browser 是一个无头浏览器 CLI,已预装在每个沙箱中。智能体无需编写 Playwright 代码,只需发送简单的 bash 命令。CLI 会自动注入 --cdp,使 agent-browser 自动连接到你的当前会话。
这是使用 browser 的最快方式。简写和 execute 都会自动将命令发送给 agent-browser。简写只是跳过了 execute,并在需要时自动启动会话:
firecrawl browser "open https://example.com"
firecrawl browser "snapshot"
firecrawl browser "click @e5"
显式用法使用 execute 命令。命令会自动发送到 agent-browser —— 无需手动输入 agent-browser 或使用 --bash:
firecrawl browser execute "open https://example.com"
firecrawl browser execute "snapshot"
使用 language: "bash",通过 API 或 SDK 执行 agent-browser 命令:
curl -X POST "https://api.firecrawl.dev/v2/browser/YOUR_SESSION_ID/execute" \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"code": "agent-browser snapshot",
"language": "bash"
}'
默认情况下,每个浏览器会话都会从全新环境开始。通过 profile,你可以在会话之间保存并复用浏览器状态。这对于保持登录状态和保留偏好设置非常有用。
若要保存或选择某个持久化配置文件,请在创建会话时使用 profile 参数。
const session = await firecrawl.browser({
ttl: 600,
profile: {
name: "my-profile",
saveChanges: true,
},
});
| 参数 | 默认值 | 描述 |
|---|
name | — | 持久化配置文件的名称。使用相同名称的会话会共享存储。 |
saveChanges | true | 当为 true 时,浏览器状态会在关闭时保存回该配置文件。将其设置为 false 可在不写入的情况下加载已有数据——在需要多个并发只读访问时很有用。 |
同一时间只有一个会话可以向某个配置文件保存数据。如果已有其他会话在保存,你会收到 409 错误。你仍然可以以 saveChanges: false 的方式打开同一配置文件,或者稍后重试。
浏览器会话状态只有在会话关闭时才会保存。因此,我们建议在使用完成后关闭浏览器会话,以便后续复用。会话一旦关闭,其会话 ID 将不再有效——你无法再次使用它。请改为使用相同的配置文件名称创建一个新会话,并使用响应中返回的新会话 ID。要保存并关闭会话:
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
await firecrawl.deleteBrowser("YOUR_SESSION_ID");
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
const { sessions } = await firecrawl.listBrowsers();
console.log(sessions);
// 按状态过滤
const { sessions: active } = await firecrawl.listBrowsers({ status: "active" });
console.log(active);
{
"success": true,
"sessions": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "active",
"cdpUrl": "wss://cdp-proxy.firecrawl.dev/cdp/550e8400-e29b-41d4-a716-446655440000",
"liveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000",
"interactiveLiveViewUrl": "https://liveview.firecrawl.dev/550e8400-e29b-41d4-a716-446655440000?interactive=true",
"createdAt": "2025-01-15T10:30:00Z",
"lastActivity": "2025-01-15T10:35:00Z"
}
]
}
会话有两个 TTL 参数:
| 参数 | 默认值 | 描述 |
|---|
ttl | 600s (10 分钟) | 会话的最长存续时间 (30-3600s) |
activityTtl | 300s (5 分钟) | 会话空闲达到该时长后自动关闭 (10-3600s) |
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
await firecrawl.deleteBrowser("YOUR_SESSION_ID");
每个会话的响应中都会包含一个 liveViewUrl,你可以将其嵌入以实时查看浏览器行为。适用于调试、演示或构建由浏览器驱动的 UI。
{
"success": true,
"id": "550e8400-e29b-41d4-a716-446655440000",
"cdpUrl": "wss://cdp-proxy.firecrawl.dev/cdp/550e8400-...",
"liveViewUrl": "https://liveview.firecrawl.dev/550e8400-...",
"interactiveLiveViewUrl": "https://liveview.firecrawl.dev/550e8400-...?interactive=true"
}
<iframe src="LIVE_VIEW_URL" width="100%" height="600" />
响应中还包含一个 interactiveLiveViewUrl。与仅支持查看的标准实时视图不同,交互式实时视图允许用户通过嵌入的流直接点击、输入并与浏览器会话进行交互。这对于构建面向用户的浏览器界面、协同调试,或任何需要查看者直接控制浏览器的场景都非常有用。
<iframe src="INTERACTIVE_LIVE_VIEW_URL" width="100%" height="600" />
每个会话都会暴露一个 CDP WebSocket URL。execute API 和 --bash 参数覆盖了大多数用例,但如果你需要完全的本地控制,可以直接进行连接。
import Firecrawl from '@mendable/firecrawl-js';
import { chromium } from "playwright-core";
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
const session = await firecrawl.browser();
const browser = await chromium.connectOverCDP(session.cdpUrl);
const context = browser.contexts()[0];
const page = context.pages()[0] || (await context.newPage());
await page.goto("https://example.com");
console.log(await page.title());
await browser.close();
await firecrawl.deleteBrowser(session.id);
| 使用场景 | 合适工具 |
|---|
| 从已知 URL 提取内容 | Scrape |
| 在网上搜索并获取结果 | Search |
| 执行分页导航、填写表单、点击操作流程 | 浏览器 |
| 包含交互的多步工作流 | 浏览器 |
| 在多个网站上并行浏览 | 浏览器 (每个会话彼此隔离) |
- 竞争情报 - 浏览竞争对手网站,操作搜索表单和筛选器,将价格和功能信息提取为结构化数据
- 知识库接入 - 浏览需要点击操作、分页或登录认证的帮助中心、文档和支持门户
- 市场调研 - 启动并行浏览器会话,从招聘网站、房产列表或法律数据库中构建数据集
计费简单明了:每个浏览器使用分钟 2 个积分。免费用户可享有 5 小时的免费使用额度。
在初始发布阶段,所有套餐均支持最多 20 个并发浏览器会话。
有反馈或需要帮助?请发送邮件至 help@firecrawl.com 或在 Discord 上联系我们。