Browser 自动化实战:让 OpenClaw 接管真实网页工作流
从 Browser Relay 到 Playwright 动作链,拆解如何让 OpenClaw 自动登录、抓取、填单。
Browser Relay 是什么
Browser Relay 是 OpenClaw 内置的浏览器控制模块,充当 AI Agent 与真实浏览器之间的桥梁。它的核心职责是:
- 指令翻译:将 Agent 的自然语言意图转换为具体的浏览器操作
- 会话管理:维护浏览器实例的生命周期,包括启动、复用和回收
- 状态同步:实时将页面状态(DOM、截图、网络请求)反馈给 Agent
- 安全隔离:在沙箱环境中执行操作,防止越权访问
架构上,Browser Relay 底层依赖 Playwright,支持 Chromium、Firefox 和 WebKit 三大引擎。你可以把它理解为一个"浏览器遥控器"——Agent 发出指令,Relay 负责执行并汇报结果。
# config/browser.yml
browser:
enabled: true
engine: "playwright"
browsers:
chromium:
enabled: true
headless: true
defaults:
viewport:
width: 1920
height: 1080
timeout: 30000
locale: "zh-CN"Playwright 动作链:用代码描述网页操作
Playwright 动作链是 Browser Relay 的执行单元。每个动作链由一系列有序步骤组成,每个步骤对应一个浏览器操作:导航、等待、点击、输入、提取等。
OpenClaw 使用 YAML 格式定义动作链,支持变量插值和条件判断:
steps:
- action: "navigate"
url: "https://example.com/page"
- action: "wait"
selector: "#target-element"
timeout: 5000
- action: "fill"
selector: "input[name='query']"
value: "{{search_term}}"
- action: "click"
selector: "button[type='submit']"
- action: "extract"
selector: ".result-list .item"
output_var: "results"动作链的强大之处在于可组合性——你可以把多个小动作链串联成复杂的工作流,也可以在 Agent 对话中动态生成。
实战场景 1:自动登录后台系统
最常见的需求:每天登录某个管理后台,查看数据或执行操作。手动操作需要打开浏览器、输入账号密码、处理验证码、等待加载。用 OpenClaw 可以一步到位。
# config/forms.yml
forms:
admin_login:
url: "https://admin.example.com/login"
description: "自动登录管理后台"
steps:
- action: "navigate"
url: "https://admin.example.com/login"
- action: "wait"
selector: "#username"
timeout: 8000
- action: "fill"
selector: "#username"
value: "${ADMIN_USERNAME}"
- action: "fill"
selector: "#password"
value: "${ADMIN_PASSWORD}"
- action: "click"
selector: "button[type='submit']"
- action: "wait"
selector: ".dashboard-container"
timeout: 15000
- action: "screenshot"
path: "screenshots/login_success.png"执行登录:
# 运行预定义的登录流程
claw forms run admin_login
# 配合定时任务,每天自动登录并截图
claw schedule add --name "daily_login" \
--cron "0 9 * * *" \
--command "claw forms run admin_login"注意:账号密码通过环境变量注入(${ADMIN_USERNAME}),永远不要把凭据硬编码在配置文件中。
实战场景 2:自动抓取网页数据并整理
假设你需要每天从竞品网站抓取产品价格,或者从内部系统导出报表数据。Browser Relay 可以模拟真实用户行为。
scraping:
rules:
competitor_prices:
url: "https://competitor.example.com/products"
allowed: true
steps:
- action: "navigate"
url: "https://competitor.example.com/products"
- action: "wait"
selector: ".product-grid"
- action: "extract"
selector: ".product-card"
fields:
name: ".product-name"
price: ".product-price"
stock: ".stock-status"
output_var: "products"
pagination:
enabled: true
max_pages: 10
next_button: "a.next-page"
limits:
delay_between_requests: 3000
max_concurrent: 2
respect_robots_txt: true抓取完成后,Agent 可以自动整理数据并输出对比表。
实战场景 3:自动填写表单提交
批量提交表单是另一个高频场景,比如批量注册测试账号、批量提交工单、自动填写报销单等。
forms:
expense_report:
url: "https://oa.example.com/expense/new"
steps:
- action: "navigate"
url: "https://oa.example.com/expense/new"
- action: "fill"
selector: "input[name='title']"
value: "{{expense.title}}"
- action: "fill"
selector: "input[name='amount']"
value: "{{expense.amount}}"
- action: "select"
selector: "select[name='category']"
value: "{{expense.category}}"
- action: "upload"
selector: "input[type='file']"
file: "{{expense.receipt_path}}"
- action: "click"
selector: "button.submit-btn"
- action: "wait"
selector: ".success-toast"
timeout: 10000批量执行:
# 从 CSV 读取数据批量提交
claw forms run expense_report \
--data-file expenses.csv \
--delay 2000配置要点
Headless vs Headed 模式
- Headless(无界面):适合服务器环境和自动化任务,资源占用少
- Headed(有界面):调试时使用,可以直观看到操作过程
browser:
browsers:
chromium:
headless: false # 调试时设为 false超时处理
网络波动和页面加载慢是常见问题,建议为不同场景配置合理的超时:
defaults:
timeout: 30000 # 默认 30 秒
navigation_timeout: 60000 # 页面导航 60 秒错误重试策略
retry:
max_attempts: 3
delay: 2000
on_errors:
- "TimeoutError"
- "NetworkError"安全注意事项
- 1.凭据管理:所有账号密码通过环境变量注入,不要写死在配置文件
- 2.频率限制:设置合理的请求间隔(
delay_between_requests),避免对目标网站造成压力 - 3.robots.txt:开启
respect_robots_txt: true,遵守网站抓取规则 - 4.沙箱隔离:Browser Relay 默认在独立进程中运行,不影响其他 Agent 的工作
小结
Browser 自动化是 OpenClaw 最强大的能力之一。它能处理的不只是简单的表单填写,而是任何需要真实浏览器交互的场景:
- 需要登录态的数据抓取
- 动态加载的 JavaScript 页面
- 复杂的多步骤工作流
- 定时自动化的重复性操作
从一个简单的登录脚本开始,逐步构建你的浏览器自动化体系。