OpenClaw + Camofox 浏览器自动化 - 让Agent上网冲浪
为什么 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 轻量抓取指南。