OpenClaw进阶篇:浏览器自动化——让AI帮你操作网页

OpenClaw进阶篇:浏览器自动化——让AI帮你操作网页

OpenClaw进阶篇:浏览器自动化——让AI帮你操作网页

前言

上篇我们写了自定义Skill,发现核心是Prompt模板

但Skill只是告诉AI"怎么做",真正执行还需要Tool

今天讲一个强大的Tool:browser

它让AI能像人一样操作浏览器——点击、输入、截图、执行JS。


一、browser工具是什么

OpenClaw的browser工具提供了三种连接模式

1. 内置浏览器(默认)

OpenClaw自带Playwright浏览器,AI可以直接调用:

功能说明示例
navigate打开网页访问百度、知乎
snapshot获取页面快照了解当前页面状态
screenshot截图保留证据
click点击元素登录、搜索、提交
type输入文字填表单、发评论
evaluate执行JS提取数据、计算
select下拉选择选择日期、分类
hover悬停显示隐藏菜单

特点:开箱即用,适合大多数场景。

2. CDP模式(Chrome DevTools Protocol)

连接你已有的Chrome浏览器,通过调试端口控制:

// 启动Chrome时加上调试端口// macOS:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222// Windows:"C:\Program Files\Google\Chrome\Application\chrome.exe"--remote-debugging-port=9222// Linux: google-chrome --remote-debugging-port=9222

然后在OpenClaw配置中指定:

browser:remoteUrl: http://localhost:9222

优势

  • 保持登录状态(Cookie、Session持久化)
  • 可以用已有浏览器,不额外占用资源
  • 支持多个标签页

3. 浏览器扩展插件模式

安装OpenClaw的Chrome扩展,可以:

  • 控制已打开的标签页
  • 获取浏览器历史、书签
  • 在用户当前浏览上下文中执行

适合需要「接管用户当前页面」的场景。

4. 远程浏览器服务

通过CDP协议连接远程服务器上的浏览器:

browser:node: your-remote-server # 指定远程节点# 或通过CDP URLcdpUrl: ws://your-server:9222

适合服务器环境或需要更高隔离性的场景。


核心能力:让AI像人一样操作网页。

选择建议

  • 个人使用、日常任务 → 内置浏览器
  • 需要保持登录态 → CDP模式
  • 需要接管用户当前页 → 扩展插件
  • 服务器批量任务 → 远程浏览器

二、先看个例子

我们用浏览器自动化的思路,改造之前的热榜查询:

// 不再依赖外部API,直接爬取const result =await browser.navigate('https://weibo.com/hot')// 获取快照了解页面结构const page =await browser.snapshot()// 提取热搜标题const titles =await browser.evaluate(()=>{return[...document.querySelectorAll('.hot-item .title')].map(el=> el.innerText).slice(0,10)})// 输出结果 console.log(titles)

这就是浏览器自动化的威力——不依赖API,直接操作网页。


三、实战:自动获取微博热搜

3.1 两种方式的对比

获取微博热搜有两种方式:

方式优点缺点
API调用速度快、代码简单、无反爬问题需要依赖第三方服务、可能有频率限制
浏览器自动化数据完整、可获取任意页面、无需API Key速度较慢、需要处理反爬、占用资源

各自适用场景:

  • 定时任务、批量获取 → 用API(省资源)
  • 获取详细内容、分析页面 → 用浏览器(更灵活)

3.2 用浏览器自动化的场景

什么时候适合用browser工具?

  1. API不支持的数据:比如你想获取热搜的详细讨论、评论数等
  2. 需要登录才能看到:比如知乎的关注者列表
  3. 网页结构复杂:API返回的数据格式不够用

本节示例:演示如何用browser获取微博热搜(作为browser工具的入门案例)

3.3 编写Skill

---name: weibo_hot_browser description: 获取微博热搜榜单,了解最新热点话题(浏览器方式) ---# 微博热搜查询(browser版)## 什么时候触发- 用户问"微博热搜" - 用户说"今天有什么热点" - 用户说"帮我看看微博" ## 如何执行### 第1步:访问微博热搜 使用 `browser.navigate` 打开: ```text https://s.weibo.com/top/summary 

第2步:等待页面加载

页面是动态渲染的,需要等待热搜榜加载完成。
使用 browser.snapshot 查看当前页面状态。

如果页面还没加载完成,继续等待或刷新。

第3步:提取数据

使用 browser.evaluate 执行JS获取热搜列表:

const items = document.querySelectorAll('.c-table tbody tr')return[...items].slice(0,15).map(item=>{const rank = item.querySelector('.td-01').innerText const title = item.querySelector('.td-02 a').innerText const hot = item.querySelector('.td-02 span')?.innerText ||''return`${rank}. ${title}${hot}`})

第4步:格式化输出

🔥 微博热搜榜 1. xxx(热度过万) 2. xxx(热度8000) ... 数据来源:微博 | 时间:xxx 

注意事项

  • 微博有反爬机制,可能需要登录
  • 如果访问失败,尝试直接访问移动版:https://m.weibo.cn
  • 返回结果要包含排名、标题、热度

3.4 测试

用户:帮我看看微博热搜 AI: → browser.navigate('https://s.weibo.com/top/summary') → browser.snapshot() → browser.evaluate(...) → 格式化输出 

四、进阶:多步骤自动化

browser工具的真正威力在于多步骤串联

4.1 案例:自动登录知乎

---name: zhihu_login description: 自动登录知乎(需要提供账号密码) ---# 知乎自动登录## 触发场景 用户说"帮我登录知乎"、"登录我的知乎账号" ## 执行步骤### 第1步:打开知乎登录页 ```javascript await browser.navigate('https://www.zhihu.com/signin') await browser.snapshot() 

第2步:输入用户名

await browser.click('[name="username"]')await browser.type('[name="username"]','你的手机号')

第3步:点击获取验证码

await browser.click('.SignFlow-tab')await browser.click('.SignFlow-sendInput-button')

第4步:等待用户输入验证码

AI应该提示用户:验证码已发送到手机,请在30秒内输入。

第5步:完成登录

// 用户手动输入验证码后await browser.click('.SignFlow-submitButton')await browser.snapshot()// 验证是否登录成功

注意

  • 这个Skill需要用户配合(输入验证码)
  • 不能自动跳过验证码,这是安全机制
  • 登录状态会保持,直到退出或过期

五、进阶:数据提取与保存

浏览器自动化最强大的场景之一:提取网页数据并保存

5.1 案例:定期抓取B站热门视频

---name: bilibili_trend description: 获取B站热门视频排行榜 ---# B站热门榜查询## 触发场景- 用户问"B站热门" - 用户说"今天B站什么视频火" - 用户说"帮我看看哔哩哔哩排行榜" ## 执行步骤### 第1步:访问B站排行榜 ```javascript await browser.navigate('https://www.bilibili.com/v/popular/rank/all') await browser.snapshot() 

第2步:等待内容加载

B站是SPA(单页应用),需要等待视频列表渲染。

检查是否有多于0个视频元素,如果有则继续。

第3步:提取数据

const videos =await browser.evaluate(()=>{return[...document.querySelectorAll('.video-item')].slice(0,20).map(item=>{const title = item.querySelector('.title').innerText const author = item.querySelector('.author').innerText const play = item.querySelector('.play').innerText const like = item.querySelector('.like').innerText return{ title, author, play, like }})})

第4步:格式化输出

📺 B站热门榜 🥇 {videos[0].title} UP主:{videos[0].author} | 播放:{videos[0].play} | 点赞:{videos[0].like} 🥈 {videos[1].title} UP主:{videos[1].author} | 播放:{videos[1].play} | 点赞:{videos[1].like} ...(展示前10) 

第5步:保存数据(可选)

如果用户要求"每天定时发送",可以将数据保存到文件或数据库。

// 保存为JSONconst fs =require('fs')const data ={date:newDate().toISOString(),platform:'bilibili',videos: videos } fs.writeFileSync('/tmp/bilibili-trend.json',JSON.stringify(data,null,2))

注意事项

  • B站有反爬限制,频繁访问可能需要登录
  • 排行榜每2小时更新一次
  • 视频标题可能包含emoji,需要清理

六、调试技巧

6.1 查看页面快照

// 获取当前页面所有可交互元素const snapshot =await browser.snapshot() console.log(JSON.stringify(snapshot,null,2))

输出会包含:

  • 当前URL
  • 页面标题
  • 所有可点击的按钮、链接
  • 所有输入框
  • 所有图片(用于验证截图)

6.2 截图debug

// 在关键步骤截图await browser.screenshot({path:'/tmp/step1.png'})// 出现问题时截图try{await browser.click('.login-button')}catch(e){await browser.screenshot({path:'/tmp/error.png'})throw e }

6.3 等待技巧

// 等待元素出现(最多等10秒)await browser.waitForSelector('.hot-list',{timeout:10000})// 等待页面加载完成await browser.waitForLoadState('networkidle')// 等待某个条件await browser.waitForFunction(()=>{return document.querySelectorAll('.item').length >0})

七、常见问题

Q1: 页面加载慢怎么办?

// 增加超时时间await browser.navigate('https://example.com',{waitUntil:'networkidle',// 等待网络空闲timeout:30000// 30秒超时})

Q2: 元素找不到?

// 先用snapshot看页面结构const page =await browser.snapshot()// 检查选择器是否正确// 注意:很多网站动态生成class,可能需要用其他选择器await browser.click('text=登录')// 用文本选择器await browser.click('[aria-label="搜索"]')// 用aria属性

Q3: 被反爬了怎么办?

// 设置User-Agentawait browser.extra.setExtraHTTPHeaders({'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64) ...'})// 或者用stealth模式// 注意:频繁访问仍然可能被限制

Q4: 登录状态如何保持?

// 保存浏览器上下文await browser.contexts[0].storageState({path:'/tmp/zhihu-state.json'})// 下次使用时恢复await browser.newContext({storageState:'/tmp/zhihu-state.json'})

八、总结

今天我们学会了:

  • ✅ browser工具是什么(操作浏览器的瑞士军刀)
  • ✅ 如何用navigate + snapshot + evaluate组合抓取数据
  • ✅ 编写微博热搜、B站热门等Skill
  • ✅ 多步骤自动化(登录、填表、提交)
  • ✅ 调试技巧(snapshot、screenshot、wait)

更多内容

如果你对AI开发、Agent实战感兴趣,欢迎关注公众号【码头码农】:

  • 每日AI热点解读
  • 实战项目复盘
  • 技术成长心得

Read more

AI之Tool:Google Stitch的简介、安装和使用方法、案例应用之详细攻略

AI之Tool:Google Stitch的简介、安装和使用方法、案例应用之详细攻略

AI之Tool:Google Stitch的简介、安装和使用方法、案例应用之详细攻略 目录 Google Stitch的简介 1、特点 Google Stitch的安装和使用方法 1、安装 2、使用方法 Google Stitch的案例应用 在电商和内容型页面上 在迭代层面,Stitch 很适合做“局部修正”案例 从草图到原型 Google Stitch的简介 2026年3月18日,Stitch 是 Google Labs 推出的实验性 AI 设计工具,官方把它描述为一个 AI-native software design canvas:你可以用自然语言、图片、文本甚至代码来生成高保真 UI,并在同一个画布里继续迭代、协作和完善设计。它的目标是把“想法”更快地变成“可预览的界面”

多模态 AI 应用:图文音视频一体化开发实战教程

多模态 AI 应用:图文音视频一体化开发实战教程

什么是多模态AI 多模态AI是指能够同时处理文本、图像、音频、视频等多种不同类型数据的人工智能系统,它打破了单模态AI的信息壁垒,能更贴近人类理解世界的方式。比如我们日常使用的AI聊天机器人识图功能、视频自动字幕生成工具,都是多模态AI的典型应用。 开发前的核心准备 模型选型建议 模型类型推荐模型适用场景开源轻量模型Qwen-VL-Chat、MiniGPT-4本地部署、快速验证云端API模型GPT-4V、Gemini Pro生产级应用、复杂任务处理专业领域模型CLIP、Whisper图像检索、音频转写等细分场景 环境依赖安装 我们将基于Python生态实现实战项目,需要安装以下核心库: # 基础依赖 pip install torch torchvision transformers pillow # 音频处理依赖 pip install librosa soundfile # 视频处理依赖 pip install opencv-python moviepy # API调用依赖(可选,用于调用云端多模态模型) pip install openai anthropic

2026年3月18日人工智能早间新闻

各位读者,早上好。今天是2026年3月18日,星期三。欢迎收看人工智能早间新闻。昨日,从英伟达GTC大会到国内产业一线,人工智能领域释放出密集信号——算力竞赛正从地面延伸至太空,智能体加速从概念走向实干,而AI与实体经济的深度融合正在催生“超级团队”与“一人公司”的新范式。 一、国内产业纵深:“人工智能+”催生“超级团队”,智能体从概念走向实干 今年的政府工作报告首次提出打造智能经济新形态,并提出“促进新一代智能终端和智能体加快推广”“支持人工智能开源社区建设”等具体路径。在3月6日举行的经济主题记者会上,国家发改委主任郑栅洁表示,将深化“人工智能+”行动,“十五五”末人工智能相关产业规模将增长到10万亿元以上。 1. AI正从根本上释放个体能力:科大讯飞董事长刘庆峰代表指出,AI正从根本上释放个体能力,带来生产力的跃升。科大讯飞内部已涌现出一批“超级团队”,团队仅凭1名产品经理加2名前端开发人员,就完成了专家评估需15人开发3个月的任务,日产10万行高质量代码。“AI能够让一个人完成过去一个团队才能做到的事。” 刘庆峰认为,未来3至5年,AI将在数字内容、科研创新等领域持续催

不止写代码!TRAE SOLO 独立端,全产研岗的 AI 助手来了

不止写代码!TRAE SOLO 独立端,全产研岗的 AI 助手来了

3 月 31 日,字节跳动旗下的 AI 编程产品 TRAE 带来了全新升级:TRAE SOLO 独立端正式上线,PC 端与 Web 端同步开启内测。 曾经,TRAE 给大家的印象,还是一个帮程序员高效写代码的 AI 工具。但这一次,它把能力边界彻底拓展了 —— 不止是编程,产品、运营、数据分析师…… 整个互联网产研上下游的岗位,都能用上这个 AI 工具来提效。 脱离 IDE 架构,轻量独立端来了 在此之前,SOLO 模式其实已经集成在 TRAE 的传统 IDE 形态中,主要服务于专业的研发场景。而这次推出的独立端,彻底打破了这个限制。 全新的 SOLO 独立端,分为