用途
fast-browser-use(fbu)是一个基于 Rust 的浏览器自动化引擎,提供轻量级二进制程序,通过 CDP(Chrome DevTools Protocol)直接驱动 Chrome。它针对 token 高效的 DOM 提取、稳健的会话管理与速度进行了优化,适用于 DOM 密集页面、快速提取以及需要保持状态的复杂浏览器任务。
主要能力
命令分为若干类别。
视觉与提取:
- vision_map:返回带编号边界框的截图叠加层,标出所有可交互元素。
- snapshot:捕获原始 HTML 快照(针对 AI 优化的 YAML/Markdown)。
- screenshot:截取页面图像,可配合 --full-page 捕获整页。
- extract:从 DOM 获取结构化数据。
- markdown:将当前页面内容转换为 Markdown。
- sitemap:通过 robots.txt、sitemap 与页面语义分析站点结构,可选 --analyze-structure、--max-pages、--max-sitemaps。
导航与生命周期:
- navigate:访问指定 URL。
- go_back / go_forward:浏览历史前进后退。
- wait:暂停执行或等待特定条件。
- new_tab / switch_tab / close_tab / tab_list:多标签页管理。
- close:终止浏览器会话。
交互:
- click:通过 CSS 选择器或 DOM 索引点击元素。
- input:向字段输入文本。
- press_key:发送特定键盘事件。
- hover:悬停元素。
- scroll:滚动视口。
- select:选择下拉框选项。
状态与调试:
- cookies:管理会话 cookie(读取/设置)。
- local_storage:管理本地存储数据。
- debug:访问控制台日志与调试信息。
另有 harvest 命令,用于无限滚动页面抓取,支持 --selector、--scrolls、--delay、--output。
使用方式
典型调用形式为 fast-browser-use <命令>,例如:
# 标准用法:60 秒超时,超时后先 SIGTERM,5 秒后 SIGKILL
timeout --kill-after=5 60 fast-browser-use snapshot --url "https://example.com"
# 长任务(如 harvest):120 秒超时
timeout --kill-after=5 120 fast-browser-use harvest --url "https://example.com" --selector "a"
关键选项:
- --headless false:在用户桌面显示 Chrome 窗口(需要 X11/Wayland 显示环境),适合需要用户观察操作的场景。
- --user-data-dir:复用已有 Chrome 配置文件(登录状态、cookie、扩展);但若已有 Chrome 以该配置文件运行可能冲突,保存会话时更推荐 --load-session。
- --load-session:仅恢复 cookie。
- --human-emulation:模拟鼠标抖动与随机延迟,用于受保护站点。
资料强调:所有 fbu 命令必须用 timeout 包裹,防止 Chrome 进程残留;建议超时时间为 snapshot/navigate/screenshot 30-60 秒、harvest 60-120 秒、login 300 秒(需人工交互)、Cloudflare 站点(--headless false)翻倍。
命令行为要点
- navigate 是一次性命令:打开页面、完成后立即关闭 Chrome。如果用户希望看到或与浏览器交互,不要使用它。
- login 会保持 Chrome 打开,等待用户输入(Enter)后再保存会话并关闭,适合需要手动交互的场景。
- 所有涉及浏览器的 cron 任务完成后,必须自动关闭 Chrome 进程,避免内存泄漏与资源占用,防止 Gateway CPU 100% 过载。
残留进程清理示例:
pkill -f chrome
pkill -f chromium
或在脚本中使用 timeout 确保清理:
timeout --kill-after=5 300 fbu navigate "https://example.com" && pkill -f chrome
命令结束后可执行:
timeout --kill-after=5 60 fast-browser-use snapshot --url "..." || true
pkill -f "chrome.*--remote-debugging" 2>/dev/null || true
平台授权与登录工作流
当需要访问要求用户登录的平台(如 Polymarket、GitHub、Twitter)时,资料给出完整流程。
会话持久化方式对比:
- --load-session 只恢复 cookie。许多现代平台(OAuth、基于钱包、SPA)将认证状态存于 localStorage/IndexedDB,仅靠 cookie 不够。
- --user-data-dir 持久化整个 Chrome 配置文件(cookie + localStorage + IndexedDB + service workers),是多数平台的推荐方式。
- 建议为每个平台使用独立配置文件目录(如 ~/.openclaw/chrome-profiles/polymarket/),避免与用户正在运行的 Chrome 发生锁冲突。
完整流程:
- 创建专用配置文件目录:mkdir -p ~/.openclaw/chrome-profiles/<platform-name>
- 使用 login 命令打开可见浏览器:
export CHROME_PATH=/usr/bin/google-chrome # adjust per system
fast-browser-use login \
--url "https://platform.com" \
--headless false \
--user-data-dir ~/.openclaw/chrome-profiles/<platform-name> \
--save-session ./<platform-name>-session.json
其中 --headless false 让用户能看到并操作 Chrome,--user-data-dir 用于完整状态持久化,--save-session 作为仅 cookie 的备份。命令会打印等待提示并挂起等待。 3. 让用户在 Chrome 窗口手动登录。在用户明确确认已登录前,不要发送 Enter。 4. 用户确认后,向进程 stdin 发送 Enter(换行),fbu 保存 cookie 到会话文件并关闭 Chrome。 5. 用相同 --user-data-dir 打开新的无头实例并运行 snapshot 验证登录状态,检查 DOM 输出中是否有已登录标识(用户名、头像、组合余额、仪表盘内容、账户菜单等)。若看到的是登录/注册按钮,则说明登录未保存,需从第 2 步重来。 6. 向用户确认结果。
后续使用:所有该平台命令只需加上 --user-data-dir。
会话过期处理:自动化任务前先 snapshot 验证登录是否仍有效;若已过期,从第 2 步重新执行登录流程(配置文件目录已存在)。
适用场景
- 需要维持登录状态的复杂网页交互。
- 处理动态 JavaScript 内容。
- 同时管理多个页面。
- 无限滚动页面抓取(如帖子、新闻、社交 feed、搜索结果)。
- 受保护站点抓取(配合 --human-emulation)。
- 站点结构分析与 SEO 结构审计(sitemap)。
- 页面整页截图。
限制与注意事项
- navigate 不会保留浏览器供交互,需要交互时应改用 login 等命令。
- --user-data-dir 若与正在运行的 Chrome 使用同一配置文件可能冲突。
- 命令需用 timeout 包裹并清理残留 Chrome 进程,否则可能导致内存泄漏与资源占用。
- --headless false 需要 X11/Wayland 显示环境。
- 资料未提供安装方式、系统要求、许可证、价格或平台支持范围的明确说明。
性能对比(资料提供)
特性 | Fast Browser Use (Rust) | Puppeteer (Node) | Selenium (Java) 启动时间 | < 50ms | ~800ms | ~2500ms 内存占用 | 15 MB | 100 MB+ | 200 MB+ DOM 提取 | Zero-Copy | JSON Serialize | Slow Bridge
示例
无限滚动抓取:
fast-browser-use harvest \
--url "https://news.ycombinator.com" \
--selector ".titleline a" \
--scrolls 3 \
--delay 800 \
--output headlines.json
截图:
fast-browser-use screenshot \
--url "https://example.com" \
--output page.png \
--full-page
绕过机器人检测的人类模拟:
fast-browser-use navigate --url "https://protected-site.com" \
--human-emulation \
--wait-for-selector "#content"
深度快照(含计算样式):
fast-browser-use snapshot --include-styles --output state.json
登录后复用会话:
fast-browser-use navigate --url "https://github.com/dashboard" --load-session ./auth.json