Camofox引擎 + 无头浏览器 + 表单填写 + 数据抓取 + 多标签页管理
很多网站没有API,数据只能通过浏览器获取。OpenClaw的浏览器自动化能力让你的AI Agent可以像人一样操作浏览器——打开网页、点击按钮、填写表单、抓取数据、生成截图。
凌晨2点15分,你的Agent打开了竞品网站,逐页扫描价格变化,截图存证,然后生成了一份对比报告。整个过程,人类在睡觉。
| 工具 | 功能 | 场景 |
|---|---|---|
| browser(action=open) | 打开URL | 访问网页 |
| browser(action=snapshot) | 页面快照 | 获取页面结构 |
| browser(action=screenshot) | 截图 | 页面截图 |
| browser(action=act) | 执行操作 | 点击/输入/选择 |
| browser(action=navigate) | 导航 | 跳转页面 |
| browser(action=tabs) | 标签页管理 | 多标签页操作 |
| browser(action=console) | 控制台 | 执行JS |
| browser(action=pdf) | 生成PDF | 页面导出 |
// 打开一个网页
browser({
action: "open",
url: "https://miaoquai.com"
})
// 在新标签页打开
browser({
action: "open",
url: "https://clawhub.ai",
label: "ClawHub"
})
// 获取页面结构(AI可读格式)
browser({
action: "snapshot",
refs: "aria" // 使用aria-ref格式,更稳定
})
// 返回页面元素树,包含可交互元素的引用ID
// 全页面截图
browser({
action: "screenshot",
fullPage: true
})
// 指定区域截图
browser({
action: "screenshot",
selector: ".main-content"
})
// 通过ref点击(从snapshot获取)
browser({
action: "act",
kind: "click",
ref: "e12" // snapshot返回的元素引用
})
// 通过坐标点击
browser({
action: "act",
kind: "clickCoords",
x: 500,
y: 300
})
// 填写输入框
browser({
action: "act",
kind: "fill",
ref: "e15",
text: "OpenClaw教程"
})
// 选择下拉框
browser({
action: "act",
kind: "select",
ref: "e18",
values: ["选项1"]
})
// 按键操作
browser({
action: "act",
kind: "press",
key: "Enter"
})
// 悬停
browser({
action: "act",
kind: "hover",
ref: "e20"
})
// 拖拽
browser({
action: "act",
kind: "drag",
startRef: "e20",
endRef: "e25"
})
// 在页面中执行JS
browser({
action: "console",
fn: "document.title"
})
// 获取页面数据
browser({
action: "console",
fn: "JSON.stringify(Array.from(document.querySelectorAll('h2')).map(h => h.textContent))"
})
// 列出所有标签页
browser({ action: "tabs" })
// 切换标签页
browser({
action: "focus",
label: "ClawHub"
})
// 关闭标签页
browser({
action: "close",
label: "ClawHub"
})
// 等待特定元素出现
browser({
action: "act",
kind: "wait",
selector: ".results-loaded",
timeoutMs: 10000
})
// 1. 打开竞品网站
browser({ action: "open", url: "https://competitor.com/pricing" })
// 2. 获取快照
const snapshot = browser({ action: "snapshot" })
// 3. 提取价格数据
const prices = browser({
action: "console",
fn: "JSON.stringify(Array.from(document.querySelectorAll('.price')).map(p => p.textContent))"
})
// 4. 截图存证
browser({ action: "screenshot", fullPage: true })
// 5. 记录到数据库或Bitable
// 1. 打开表单页面
browser({ action: "open", url: "https://example.com/form" })
// 2. 填写各个字段
browser({ action: "act", kind: "fill", ref: "e10", text: "妙趣AI" })
browser({ action: "act", kind: "fill", ref: "e12", text: "hello@miaoquai.com" })
browser({ action: "act", kind: "fill", ref: "e14", text: "AI工具导航平台" })
// 3. 选择下拉选项
browser({ action: "act", kind: "select", ref: "e16", values: ["技术类"] })
// 4. 提交表单
browser({ action: "act", kind: "click", ref: "e20" }) // 提交按钮
// 循环抓取多个页面
const urls = [
"https://example.com/page1",
"https://example.com/page2",
"https://example.com/page3"
]
for (const url of urls) {
browser({ action: "navigate", url })
const data = browser({
action: "console",
fn: "JSON.stringify(extractPageData())"
})
// 保存数据...
}
// 使用已登录的浏览器(保留cookies)
browser({
action: "open",
url: "https://example.com",
profile: "user" // 使用用户浏览器
})
// 使用隔离浏览器(默认)
browser({
action: "open",
url: "https://example.com"
// 不指定profile,使用openclaw默认浏览器
})
先用snapshot获取页面结构,确认元素的ref或selector。如果页面是动态加载的,使用wait等待元素出现。
使用Camofox引擎的反检测功能,或者使用profile="user"模式。避免操作过快,加入适当的延迟。
目前OpenClaw不支持自动验证码识别。建议使用profile="user"模式,在人工登录后再交给Agent操作。