OpenClaw
返回博客
2026-02-12· 7 min Browser 自动化

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. 1.凭据管理:所有账号密码通过环境变量注入,不要写死在配置文件
  2. 2.频率限制:设置合理的请求间隔(delay_between_requests),避免对目标网站造成压力
  3. 3.robots.txt:开启 respect_robots_txt: true,遵守网站抓取规则
  4. 4.沙箱隔离:Browser Relay 默认在独立进程中运行,不影响其他 Agent 的工作

小结

Browser 自动化是 OpenClaw 最强大的能力之一。它能处理的不只是简单的表单填写,而是任何需要真实浏览器交互的场景:

  • 需要登录态的数据抓取
  • 动态加载的 JavaScript 页面
  • 复杂的多步骤工作流
  • 定时自动化的重复性操作

从一个简单的登录脚本开始,逐步构建你的浏览器自动化体系。

想从零开始搭建自己的 OpenClaw?

专业工程师远程安装,安装完成即可上手,无需自己踩坑。

扫码联系专家 →