浏览器自动化是OpenClaw的扩展能力,通过集成浏览器控制功能,让AI助手能够像真人一样操作网页、提取数据、执行交互任务。以下是详细的功能介绍和操作指南。
浏览器自动化的核心能力
1. 网页数据抓取与监控
- 实时数据采集:股票价格、商品库存、新闻动态、汇率变化
- 价格监控:电商平台价格跟踪,设置降价提醒
- 竞品分析:自动收集竞争对手的产品信息和定价
- 内容聚合:从多个新闻源抓取特定主题文章
2. 自动化测试与质量保证
- 功能测试:自动执行网页功能回归测试
- 兼容性测试:跨浏览器、跨设备页面渲染检查
- 性能监控:页面加载速度、资源加载情况监测
- 表单验证:自动填写并提交表单测试
3. 工作流程自动化
- 日常操作:自动登录系统、下载报表、提交工单
- 数据录入:将Excel/CSV数据批量录入网页系统
- 文件处理:自动下载、重命名、分类存储文件
- 定时任务:每天固定时间执行网页操作
4. 交互式网页操作
- 点击与导航:模拟用户点击按钮、链接、菜单
- 表单填写:自动输入文本、选择选项、上传文件
- 滚动与等待:处理动态加载内容,等待元素出现
- 截图与录屏:记录操作过程,生成操作报告
5. 高级数据处理
- 结构化提取:从表格、列表、卡片中提取规整数据
- 文本分析:抓取页面文本进行关键词提取、情感分析
- 图像识别:配合OCR技术读取图片中的文字信息
- API模拟:分析网页请求,直接调用后端API提高效率
安装与配置浏览器自动化
前提条件
- 操作系统:Windows 10/11,macOS 10.15+,Linux Ubuntu 18.04+
- Node.js:版本22或更高
- OpenClaw:2026.2.26及以上版本
- 浏览器:Chrome/Edge 120+ 或 Firefox 115+
安装浏览器自动化技能
方法一:通过ClawHub安装(推荐)
# 搜索浏览器相关技能clawhub search browserclawhub search puppeteerclawhub search playwright# 安装主技能包clawhub install browser-automation# 安装扩展技能clawhub install web-scraperclawhub install form-autofillclawhub install screenshot-tools
方法二:手动安装Playwright集成
# 进入技能目录cd ~/.openclaw/workspace/skills# 克隆浏览器自动化技能git clone https://github.com/openclaw/skill-browser-automation.git# 安装Playwright浏览器cd skill-browser-automationnpm installnpx playwright install chromium # 安装Chromiumnpx playwright install firefox # 安装Firefox(可选)npx playwright install webkit # 安装WebKit(可选)
方法三:安装Puppeteer方案
# 安装Puppeteer技能clawhub install puppeteer-control# 或手动安装cd ~/.openclaw/workspace/skillsgit clone https://github.com/openclaw/skill-puppeteer.gitcd skill-puppeteernpm install puppeteer
配置浏览器环境
# 设置浏览器路径(如使用自定义Chrome)openclaw config set browser.path "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"# 配置浏览器参数openclaw config set browser.args '["--no-sandbox", "--disable-setuid-sandbox"]'# 设置用户数据目录(保持登录状态)openclaw config set browser.userDataDir "~/.openclaw/browser-profile"# 配置代理(如需要)openclaw config set browser.proxy "http://127.0.0.1:7890"
基础操作指南
1. 启动浏览器会话
# 通过OpenClaw命令启动openclaw browser start# 指定浏览器类型openclaw browser start --browser chromiumopenclaw browser start --browser firefox# 无头模式(不显示界面)openclaw browser start --headless# 指定视口大小openclaw browser start --viewport "1920,1080"
2. 基本网页操作命令
在OpenClaw聊天窗口中,可以直接使用自然语言控制浏览器:
"打开百度首页""在搜索框输入OpenClaw浏览器自动化""点击搜索按钮""滚动到页面底部""截取整个页面保存为screenshot.png""提取前10个搜索结果标题和链接""点击下一页""关闭浏览器"
3. 自动化脚本示例
创建自动化脚本文件 automation.mjs:
// 示例:自动登录并抓取数据export default async function automate(browser) {const page = await browser.newPage();// 1. 访问登录页面await page.goto('https://example.com/login');// 2. 填写登录表单await page.type('#username', 'your_username');await page.type('#password', 'your_password');await page.click('#login-button');// 3. 等待登录完成await page.waitForNavigation();// 4. 访问目标页面await page.goto('https://example.com/dashboard');// 5. 提取数据const data = await page.evaluate(() => {const items = document.querySelectorAll('.data-item');return Array.from(items).map(item => ({title: item.querySelector('.title').textContent,value: item.querySelector('.value').textContent}));});// 6. 保存数据await browser.saveData(data, 'extracted_data.json');// 7. 截图记录await page.screenshot({ path: 'dashboard.png' });return data;}
实际应用场景与操作
场景一:电商价格监控
# 创建价格监控任务openclaw automation create --name "price-monitor" --schedule "0 */6 * * *"# 监控脚本示例cat > ~/.openclaw/automations/price-monitor.mjs << 'EOF'export default async function monitor(browser) {const page = await browser.newPage();// 监控亚马逊商品价格await page.goto('https://www.amazon.com/dp/B0XXXXXXX');const price = await page.$eval('#priceblock_ourprice', el => el.textContent);const title = await page.$eval('#productTitle', el => el.textContent.trim());// 价格低于阈值时通知const currentPrice = parseFloat(price.replace('$', ''));if (currentPrice < 99.99) {await browser.notify(`价格下降: ${title} 现在仅售 ${price}`);}// 保存历史价格await browser.appendData({date: new Date().toISOString(),product: title,price: currentPrice}, 'price-history.json');return { title, price: currentPrice };}EOF
场景二:自动填写日报
# 日报自动化配置openclaw config set automations.daily-report.enabled trueopenclaw config set automations.daily-report.time "18:00"openclaw config set automations.daily-report.days "[1,2,3,4,5]" # 周一到周五# 日报脚本cat > ~/.openclaw/automations/daily-report.mjs << 'EOF'export default async function fillReport(browser, context) {const page = await browser.newPage();// 登录公司系统await page.goto('https://internal.company.com/login');await page.type('#username', process.env.COMPANY_USER);await page.type('#password', process.env.COMPANY_PASS);await page.click('#submit');// 进入日报页面await page.waitForNavigation();await page.goto('https://internal.company.com/daily-report');// 读取今日工作内容(从本地文件)const todayWork = await context.readFile('today-work.md');// 填写日报await page.type('#work-content', todayWork);// 选择项目await page.select('#project', 'PROJECT-001');// 填写工时await page.type('#hours', '8');// 明日计划const tomorrowPlan = await context.generateText('生成明日工作计划');await page.type('#tomorrow-plan', tomorrowPlan);// 提交await page.click('#submit-report');// 确认提交成功await page.waitForSelector('.success-message', { timeout: 5000 });return { status: 'success', time: new Date().toISOString() };}EOF
场景三:竞品数据收集
# 多网站数据收集配置openclaw config set automations.competitor-monitor.sites '["site1.com", "site2.com", "site3.com"]'openclaw config set automations.competitor-monitor.interval 3600 # 每小时运行# 收集脚本cat > ~/.openclaw/automations/competitor-monitor.mjs << 'EOF'export default async function collectCompetitorData(browser) {const results = [];const sites = ['https://competitor1.com/products','https://competitor2.com/offerings','https://competitor3.com/catalog'];for (const site of sites) {const page = await browser.newPage();await page.goto(site);// 提取产品信息const products = await page.evaluate(() => {const items = document.querySelectorAll('.product-item');return Array.from(items).map(item => ({name: item.querySelector('.name')?.textContent || '',price: item.querySelector('.price')?.textContent || '',description: item.querySelector('.desc')?.textContent || '',url: item.querySelector('a')?.href || ''}));});results.push({site: new URL(site).hostname,timestamp: new Date().toISOString(),productCount: products.length,products: products.slice(0, 10) // 只取前10个});await page.close();}// 数据分析const analysis = await browser.analyzeData(results, {type: 'competitor_analysis',metrics: ['price_comparison', 'feature_analysis']});// 生成报告const report = await browser.generateReport({data: results,analysis: analysis,format: 'markdown'});await browser.saveData(report, `competitor-report-${Date.now()}.md`);return { collected: results.length, analysis: analysis.summary };}EOF
高级功能配置
1. 处理验证码和反爬机制
// 配置反反爬策略openclaw config set browser.stealth trueopenclaw config set browser.delay "1000-3000" // 随机延迟1-3秒// 使用代理池openclaw config set browser.proxyPool.enabled trueopenclaw config set browser.proxyPool.list '["proxy1:port", "proxy2:port"]'// 验证码处理(需要第三方服务)openclaw config set browser.captcha.service "2captcha"openclaw config set browser.captcha.apiKey "your_2captcha_key"
2. 数据存储与处理管道
# 配置数据存储openclaw config set automation.storage.type "json" # json, csv, databaseopenclaw config set automation.storage.path "./data"openclaw config set automation.storage.backup true# 设置数据处理管道openclaw config set automation.pipeline.enabled trueopenclaw config set automation.pipeline.steps '["clean", "deduplicate", "enrich", "export"]'
3. 错误处理与重试机制
// 自动化脚本中的错误处理export default async function robustAutomation(browser) {const maxRetries = 3;let retries = 0;while (retries < maxRetries) {try {const page = await browser.newPage();await page.goto('https://example.com', {timeout: 30000,waitUntil: 'networkidle2'});// 页面操作...return await extractData(page);} catch (error) {retries++;console.error(`尝试 ${retries}/${maxRetries} 失败:`, error.message);if (retries >= maxRetries) {await browser.notify(`自动化任务失败: ${error.message}`);throw error;}// 等待后重试await browser.sleep(5000 * retries);}}}
4. 性能优化配置
# 浏览器资源限制openclaw config set browser.resourceLimits.cpu 0.5 # 50% CPU限制openclaw config set browser.resourceLimits.memory "1G" # 内存限制openclaw config set browser.resourceLimits.timeout 300 # 5分钟超时# 并发控制openclaw config set browser.concurrency.max 3 # 最大并发页面数openclaw config set browser.concurrency.delay 1000 # 页面间延迟# 缓存配置openclaw config set browser.cache.enabled trueopenclaw config set browser.cache.ttl 3600 # 缓存1小时
监控与管理
1. 查看自动化任务状态
# 列出所有自动化任务openclaw automation list# 查看任务详情openclaw automation info <任务名># 查看任务日志openclaw automation logs <任务名>openclaw automation logs <任务名> --tail 50openclaw automation logs <任务名> --follow# 任务统计openclaw automation statsopenclaw automation stats --period "7d"
2. 任务控制命令
# 启动任务openclaw automation start <任务名>openclaw automation start-all# 停止任务openclaw automation stop <任务名>openclaw automation stop-all# 立即运行一次openclaw automation run <任务名># 暂停/恢复任务openclaw automation pause <任务名>openclaw automation resume <任务名># 删除任务openclaw automation remove <任务名>
3. 性能监控
# 查看浏览器资源使用openclaw browser stats# 监控自动化任务性能openclaw automation monitor <任务名># 生成性能报告openclaw automation report <任务名> --period "30d"
安全与最佳实践
1. 安全配置
# 限制访问域名openclaw config set browser.allowedDomains '["example.com", "api.example.com"]'# 禁用危险功能openclaw config set browser.security.disableWebSecurity falseopenclaw config set browser.security.ignoreHTTPSErrors false# 设置内容安全策略openclaw config set browser.security.csp "default-src 'self'"# 数据清理配置openclaw config set browser.privacy.clearCookies trueopenclaw config set browser.privacy.clearCache true
2. 合规性注意事项
- 遵守robots.txt:尊重网站的爬虫协议
- 设置合理频率:避免对目标网站造成压力
- 用户代理标识:使用可识别的User-Agent
- 数据使用许可:确保有权利使用抓取的数据
- 个人隐私保护:不收集个人信息,遵守GDPR等法规
3. 维护建议
# 定期更新浏览器和驱动npx playwright install --with-depsnpm update puppeteer# 清理临时文件openclaw browser cleanup# 备份重要数据openclaw automation backup --output ./backup/# 监控任务健康openclaw health check --automation
故障排除
常见问题解决
-
浏览器启动失败
# 检查浏览器安装openclaw browser check# 重新安装浏览器npx playwright install# 清理浏览器缓存openclaw browser cleanup --cache
-
页面加载超时
// 增加超时时间await page.goto(url, { timeout: 60000 });// 调整等待策略await page.goto(url, { waitUntil: 'domcontentloaded' });// 使用更宽松的等待条件await page.waitForFunction(() => document.readyState === 'complete');
-
元素找不到
// 使用多种选择器await page.waitForSelector('.class1, .class2, #id');// 增加等待时间await page.waitForSelector('.element', { timeout: 10000 });// 检查iframeconst frame = page.frames().find(f => f.name() === 'frame-name');await frame.waitForSelector('.element');
-
反爬虫检测
# 启用隐身模式openclaw config set browser.stealth true# 使用真实User-Agentopenclaw config set browser.userAgent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"# 添加随机延迟openclaw config set browser.randomDelay "2000-5000"
通过以上配置和操作,你可以充分利用OpenClaw的浏览器自动化能力,实现各种网页操作任务的自动化。建议从简单任务开始,逐步增加复杂度,并始终注意遵守目标网站的使用条款。