OpenClaw + Camofox 浏览器自动化 - 让Agent上网冲浪

📅 2026-06-05 · 🏷️ Camofox · 浏览器自动化 · 隐身浏览 · ☕ 阅读约9分钟

为什么 Agent 需要"会用浏览器"?

想象一下:你让 Agent 帮你查一下某个网站的价格,结果它只能调 API。如果那个网站没有 API 呢?如果数据藏在需要登录才能看到的页面里呢?如果页面是 JavaScript 动态渲染的呢?

这就是浏览器自动化的价值——让 Agent 像人一样操作浏览器。打开网页、点击按钮、填写表单、截取截图、提取数据……这些原本需要你手动完成的事情,Agent 都能代劳。

而 Camofox,就是 OpenClaw 生态中最强大的浏览器自动化技能。它不是简单的 Puppeteer 封装,而是一套专门为 AI Agent 设计的、具备反检测能力的浏览器控制方案。

Camofox 是什么?不只是"会动的浏览器"

Camofox 是一个 OpenClaw 技能,基于 Playwright 构建,但加入了一层关键的"隐身斗篷"——反检测机制。普通浏览器自动化工具的特征指纹很容易被网站识别并封锁,而 Camofox 通过以下技术让 Agent 的浏览器行为看起来和真人无异:

  • 指纹伪装:自动修改浏览器的 navigator、WebGL、Canvas 等指纹信息,每次启动都生成不同的"身份"。
  • 行为模拟:鼠标移动轨迹、点击间隔、滚动速度都经过人性化处理,不是机械式的精确操作。
  • 代理轮换:支持配置代理池,自动轮换 IP 地址,避免被封。
  • Cookie 管理:持久化 Cookie 存储,保持登录状态,避免反复登录触发风控。

简单说,Camofox 让 Agent 成为了一个"看不出是机器人的上网者"。这在爬取数据、自动化测试、竞品监控等场景中至关重要。

安装与配置:5分钟上手

安装 Camofox 技能

# 通过 ClawHub 安装
openclaw skills install camofox-web-scraper

# 或者从本地安装
openclaw skills install ./camofox-web-scraper/

基本配置

安装后需要在 Agent 配置中启用 Camofox:

# ~/.openclaw/config.yaml
browser:
  provider: camofox
  headless: true              # 无头模式,服务器环境推荐
  stealth: true               # 启用反检测
  proxy:
    enabled: false            # 是否启用代理
    pool: []                  # 代理地址列表
  cookie_storage: ~/.openclaw/cookies/  # Cookie 持久化目录
  timeout: 30000              # 页面加载超时(毫秒)
  viewport:
    width: 1920
    height: 1080

核心能力详解

能力一:智能页面抓取

Camofox 不是简单的"获取 HTML",它能理解页面结构,提取有意义的内容:

# Agent 内部调用示例
# 抓取页面并提取正文内容
result = browser.navigate("https://example.com/article")
content = browser.extract_text()        # 提取纯文本
links = browser.extract_links()         # 提取所有链接
images = browser.extract_images()       # 提取图片信息
tables = browser.extract_tables()       # 提取表格数据

# 更精细的提取
price = browser.query_selector(".product-price") 
title = browser.query_selector("h1.product-title")
rating = browser.query_selector(".star-rating")

能力二:表单填写与提交

Agent 可以自动填写网页表单,这在自动化注册、数据提交等场景中非常有用:

# 导航到表单页面
browser.navigate("https://example.com/contact")

# 填写表单字段
browser.fill("#name", "妙趣AI助手")
browser.fill("#email", "agent@miaoquai.com")
browser.fill("#message", "这是一条自动发送的消息")

# 选择下拉框
browser.select("#subject", "技术支持")

# 勾选复选框
browser.check("#agree-terms")

# 提交表单
browser.click("#submit-button")

# 等待页面跳转
browser.wait_for_navigation()

能力三:截图与视觉分析

Camofox 支持多种截图模式,配合 OpenClaw 的视觉能力,Agent 可以"看"网页:

# 全页面截图
browser.screenshot(path="/tmp/page-full.png", full_page=True)

# 可视区域截图
browser.screenshot(path="/tmp/page-viewport.png")

# 指定元素截图
browser.screenshot_element("#main-content", path="/tmp/content.png")

# 截图后让 Agent 分析(配合视觉模型)
# Agent 可以看到截图内容并回答问题
vision_result = agent.analyze_image("/tmp/page-full.png", 
    question="这个页面的主标题是什么?价格是多少?")

能力四:多标签页管理

# 打开新标签页
browser.new_tab("https://example.com/page2")

# 切换标签页
browser.switch_to_tab(0)  # 切换到第一个标签页

# 获取所有标签页信息
tabs = browser.get_tabs()
# [{"id": 0, "url": "https://example.com", "title": "Example"}, ...]

# 关闭当前标签页
browser.close_tab()

反检测机制深度解析

Camofox 的反检测不是简单的 User-Agent 修改,而是一套系统性的伪装方案:

浏览器指纹伪装

# Camofox 自动处理的指纹维度:
# 1. Navigator 属性(platform, languages, hardwareConcurrency 等)
# 2. WebGL 渲染器信息
# 3. Canvas 指纹(添加微小噪声)
# 4. AudioContext 指纹
# 5. Screen 分辨率和色深
# 6. 时区和地理位置一致性
# 7. WebRTC 泄露防护

行为模拟引擎

# 人性化操作示例
# 不是瞬间点击,而是模拟人类的鼠标移动
browser.human_click("#button")  # 贝塞尔曲线鼠标轨迹 + 随机延迟

# 人性化打字,每个字符间隔随机
browser.human_type("#input", "搜索内容", delay_range=(50, 150))

# 人性化滚动
browser.human_scroll(direction="down", distance=500)  # 带惯性的滚动

实战场景

场景一:竞品价格监控

# 定时监控竞品网站的价格变化
def monitor_competitor_prices():
    competitors = [
        "https://competitor-a.com/product/123",
        "https://competitor-b.com/product/456",
    ]
    prices = {}
    for url in competitors:
        browser.navigate(url)
        price_text = browser.query_selector(".price")
        prices[url] = parse_price(price_text)
    
    # 与昨天的价格对比
    compare_with_history(prices)
    alert_if_significant_change(prices)

场景二:自动化数据采集

# 从需要翻页的列表页采集数据
def scrape_paginated_list(base_url):
    all_items = []
    page = 1
    while True:
        browser.navigate(f"{base_url}?page={page}")
        items = browser.extract_tables()[0]  # 提取第一个表格
        if not items:
            break
        all_items.extend(items)
        
        # 检查是否有下一页
        next_btn = browser.query_selector(".pagination .next")
        if not next_btn or browser.is_disabled(next_btn):
            break
        page += 1
    
    return all_items

场景三:登录态操作

# 利用 Cookie 持久化,避免反复登录
# 第一次登录后 Cookie 会自动保存
browser.navigate("https://app.example.com/login")
browser.fill("#username", "user@example.com")
browser.fill("#password", "********")
browser.click("#login-button")
browser.wait_for_url("**/dashboard**")  # 等待跳转到 dashboard

# 下次启动时 Cookie 自动加载,无需重新登录
# 直接访问需要登录的页面
browser.navigate("https://app.example.com/data")
data = browser.extract_text()

与 web_fetch 的区别

你可能会问:OpenClaw 不是已经有 web_fetch 工具了吗?为什么还需要 Camofox?

关键区别在于:

  • web_fetch:发送 HTTP 请求获取页面 HTML,适合静态页面。速度快、资源占用低,但无法处理 JavaScript 渲染的动态内容。
  • Camofox 浏览器:启动真实浏览器引擎,执行 JavaScript、处理动态渲染、支持交互操作。适合 SPA 应用、需要登录的页面、有反爬机制的网站。

一个简单的判断标准:如果 web_fetch 能拿到你要的数据,就用 web_fetch(更快更省资源);如果拿不到或需要交互操作,就上 Camofox。

最佳实践与注意事项

  • 优先用 web_fetch:浏览器自动化是"重型武器",能用轻量方案解决的问题不要动用浏览器。
  • 设置合理的超时:网络环境复杂,给页面加载留足时间,避免误判为加载失败。
  • 尊重 robots.txt:即使是自动化,也要遵守网站的爬虫规则。过度抓取可能导致 IP 被封。
  • 做好异常处理:页面结构可能变化,选择器可能失效,代码中要做好容错处理。
  • 控制并发:不要同时开太多浏览器实例,内存和 CPU 会吃不消。建议控制在 3-5 个并发以内。
  • 定期清理 Cookie:长期积累的 Cookie 可能导致异常行为,建议定期清理。

总结

Camofox 让 OpenClaw Agent 具备了真正的"上网能力"——不是简单的 HTTP 请求,而是像人一样操作浏览器。配合反检测机制,它能在各种复杂的网页环境中稳定工作。无论是数据采集、自动化测试还是竞品监控,Camofox 都是你的 Agent 的得力助手。

想了解更多浏览器自动化的用法,可以看看我们的浏览器自动化进阶教程web_fetch 轻量抓取指南

相关文章