浏览器自动化专题教程

advanced
## 浏览器工具概述 OpenClaw 内置了浏览器工具(Browser Tool),可以让智能体控制一个真实的 Chromium 浏览器实例。这不是简单的 HTTP 请求——智能体能像人一样操作网页:打开页面、点击按钮、填写表单、截图分析、提取文本。 浏览器工具的核心能力: - **导航**:打开任意 URL,等待页面加载完成 - **交互**:点击元素、输入文本、选择下拉框 - **截图**:对整个页面或指定区域截图 - **提取**:获取页面文本内容、DOM 结构 - **Cookie 管理**:保持登录状态,跨会话复用 ## 启用浏览器工具 浏览器工具默认是禁用的,需要在配置中显式启用。 ### 方法一:配置文件 编辑 `~/.openclaw/openclaw.json`: ```json { "tools": { "allow": ["browser"] } } ``` ### 方法二:使用工具组 如果你想启用包含浏览器在内的一组 Web 工具: ```json { "tools": { "allow": ["group:web"] } } ``` `group:web` 包含 `browser`、`web_search`、`web_fetch` 等网络相关工具。 ### 方法三:按智能体配置 如果你运行多个智能体,可以只给特定智能体启用浏览器: ```json { "agents": { "list": [ { "id": "web-agent", "tools": { "allow": ["browser"] } }, { "id": "code-agent", "tools": { "deny": ["browser"] } } ] } } ``` ## 基本操作 ### 导航 — 打开网页 让智能体打开一个网页: ``` 请打开 https://example.com 并告诉我页面上有什么内容 ``` 智能体会使用浏览器工具: 1. 启动 Chromium 实例(如果尚未启动) 2. 导航到目标 URL 3. 等待页面加载完成 4. 提取页面内容或截图 ### 点击 — 交互操作 智能体可以通过 CSS 选择器或文本内容定位并点击元素: ``` 打开 https://example.com,点击"登录"按钮 ``` 浏览器工具支持多种定位方式: - **文本内容**:点击包含特定文本的元素 - **CSS 选择器**:通过 class、id 等精确定位 - **坐标**:点击页面上的特定位置 ### 输入 — 填写表单 智能体可以在输入框中输入文本: ``` 在搜索框中输入"OpenClaw 教程",然后点击搜索按钮 ``` ### 截图 — 页面分析 截图是浏览器工具最常用的功能之一。智能体可以截取页面截图,然后通过视觉分析理解页面内容: ``` 打开 https://example.com 并截图,分析页面的布局结构 ``` 截图的用途: - 分析页面 UI 布局 - 检查样式是否正确 - 验证部署后的页面效果 - 捕获错误页面用于排查 ### 提取文本 — 获取内容 智能体可以提取页面上的文本内容: ``` 打开这个网页,提取所有文章标题和链接 ``` 这对于网页抓取、数据采集非常有用。 ## 登录保持 很多网站需要登录才能访问内容。OpenClaw 提供了 `browser-login` 功能来保持登录状态。 ### 使用 browser-login ```bash openclaw browser-login ``` 这个命令会: 1. 打开一个可见的 Chromium 窗口 2. 你手动登录目标网站 3. 登录完成后,Cookie 会被保存 4. 后续智能体使用浏览器工具时会自动携带这些 Cookie ### 保存 Cookie Cookie 保存在 OpenClaw 的数据目录中: ``` ~/.openclaw/browser/cookies.json ``` ### 多站点登录 你可以为多个网站保存登录状态: ```bash # 登录 GitHub openclaw browser-login --url https://github.com # 登录其他网站 openclaw browser-login --url https://example.com ``` ### 注意事项 - Cookie 有过期时间,过期后需要重新登录 - 不要在共享环境中使用 browser-login,Cookie 包含敏感信息 - 某些网站的反爬机制可能会检测自动化浏览器 ## Linux 服务器环境排查 在 Linux 服务器上使用浏览器工具,最常见的问题是缺少 Chromium 依赖。 ### 安装 Chromium Ubuntu/Debian: ```bash sudo apt update sudo apt install -y chromium-browser # 或者安装 Google Chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb sudo apt -f install ``` CentOS/RHEL: ```bash sudo yum install -y chromium ``` ### 安装依赖库 Chromium 需要一些系统库才能运行。如果遇到启动失败,安装以下依赖: ```bash sudo apt install -y \ libnss3 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libdrm2 \ libxkbcommon0 \ libxcomposite1 \ libxdamage1 \ libxrandr2 \ libgbm1 \ libpango-1.0-0 \ libcairo2 \ libasound2 ``` ### 无头模式 服务器通常没有图形界面,需要使用无头模式(Headless)。OpenClaw 默认在无头模式下运行浏览器,无需额外配置。 如果遇到问题,可以在配置中显式指定: ```json { "browser": { "headless": true } } ``` ### 常见错误排查 **错误:Failed to launch the browser process** ```bash # 检查 Chromium 是否安装 which chromium-browser || which google-chrome # 检查依赖是否完整 ldd $(which chromium-browser) | grep "not found" # 尝试手动启动 chromium-browser --headless --no-sandbox --dump-dom https://example.com ``` **错误:No usable sandbox** 在 Docker 容器或某些受限环境中,需要禁用沙箱: ```json { "browser": { "args": ["--no-sandbox", "--disable-setuid-sandbox"] } } ``` ⚠️ 禁用沙箱会降低安全性,仅在受信任的环境中使用。 ## WSL2/Windows 远程 CDP 配置 如果你在 WSL2 中运行 OpenClaw,但想使用 Windows 上的 Chrome 浏览器,可以通过 Chrome DevTools Protocol(CDP)远程连接。 ### 步骤一:在 Windows 上启动 Chrome 调试模式 在 Windows 的命令提示符或 PowerShell 中运行: ```powershell "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 ``` ### 步骤二:在 WSL2 中配置 OpenClaw 编辑 `~/.openclaw/openclaw.json`: ```json { "browser": { "cdpUrl": "ws://host.docker.internal:9222" } } ``` 如果 `host.docker.internal` 不可用,使用 Windows 主机的 IP 地址: ```bash # 在 WSL2 中获取 Windows 主机 IP cat /etc/resolv.conf | grep nameserver | awk '{print $2}' ``` 然后配置: ```json { "browser": { "cdpUrl": "ws://172.x.x.x:9222" } } ``` ### 步骤三:验证连接 ```bash # 测试 CDP 连接 curl http://172.x.x.x:9222/json/version ``` 如果返回 Chrome 版本信息,说明连接成功。 ## 常见使用场景 ### 场景一:网页抓取 让智能体抓取网页数据: ``` 请打开 https://news.ycombinator.com,提取首页所有文章的标题和链接, 整理成 Markdown 表格 ``` ### 场景二:表单填写 自动化填写重复性表单: ``` 打开后台管理页面 https://admin.example.com, 在"新建用户"表单中填写以下信息: - 用户名:testuser - 邮箱:test@example.com - 角色:管理员 然后点击提交 ``` ### 场景三:截图分析 检查网页的视觉效果: ``` 打开 https://my-site.com,分别在桌面端和移动端视口下截图, 对比两个版本的布局差异 ``` ### 场景四:Web 测试 简单的端到端测试: ``` 打开 https://my-app.com/login, 输入用户名 admin 和密码 test123, 点击登录按钮, 验证是否跳转到了仪表板页面 ``` ### 场景五:竞品分析 分析竞品网站的功能和设计: ``` 打开以下三个网站,分别截图并分析它们的首页设计: 1. https://site-a.com 2. https://site-b.com 3. https://site-c.com 对比它们的导航结构、配色方案和 CTA 按钮设计 ``` ## 安全注意事项 使用浏览器工具时需要注意以下安全问题: ### Cookie 安全 - 不要在共享服务器上保存敏感网站的 Cookie - 定期清理不再需要的 Cookie - 使用沙箱模式隔离浏览器环境 ### 访问控制 - 通过 `tools.allow` / `tools.deny` 精确控制哪些智能体可以使用浏览器 - 不受信任的技能不应该有浏览器访问权限 - 考虑使用沙箱模式运行浏览器 ### 网站规则 - 遵守目标网站的 robots.txt 和使用条款 - 控制请求频率,避免被封禁 - 不要用浏览器工具进行恶意操作 ### 数据安全 - 浏览器截图可能包含敏感信息 - 提取的页面内容会进入智能体的上下文 - 注意不要将敏感页面内容泄露到日志中 ## 性能优化 ### 复用浏览器实例 OpenClaw 默认会复用浏览器实例,避免每次操作都启动新的 Chromium 进程。如果你发现浏览器占用过多内存,可以配置自动关闭: ```json { "browser": { "idleTimeout": 300 } } ``` 这会在浏览器空闲 5 分钟后自动关闭。 ### 禁用不必要的功能 在服务器环境中,可以禁用一些不需要的浏览器功能来节省资源: ```json { "browser": { "args": [ "--disable-gpu", "--disable-dev-shm-usage", "--disable-extensions", "--no-first-run" ] } } ``` ## 小结 浏览器工具让 OpenClaw 智能体具备了"看见"和"操作"网页的能力: - 通过 `tools.allow` 启用浏览器工具 - 支持导航、点击、输入、截图、文本提取等操作 - 使用 `browser-login` 保持登录状态 - Linux 服务器需要安装 Chromium 和依赖库 - WSL2 可以通过 CDP 连接 Windows 上的 Chrome - 注意安全:控制访问权限、保护 Cookie、遵守网站规则 #浏览器自动化 #网页操作 #Chromium控制 #截图分析 #龙虾技能库