让 AI 替你抓网页数据做报告:BrowserSkill 真实浏览器场景的 20 分钟实践 让 AI 替你抓网页数据做报告BrowserSkill 真实浏览器场景的 20 分钟实践【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill网页抓取这件事过去只有两条路要么写脚本对着接口和 DOM 硬啃要么用无头浏览器对付登录态、验证码和反爬。当 AI Agent 也想自己开浏览器干活时问题被放大了一倍——它不但要能操作页面还要能用上你已经登录的账号、不打断你手头的工作、最后把抓到的数据整理成你需要的形态。腾讯开源的BrowserSkill正是冲着这个场景来的一个 Rust 编写的 CLI daemon配一个 Chrome/Edge 扩展让 Cursor、Claude Code、Codex 这类能执行 shell 命令的 Agent直接操作你的真实、已登录浏览器任务跑在独立的 Agent Window 里不碰你的主工作流。这篇文章不是讲它有多强而是带你走完一个完整的 20 分钟实操选一个适合实战的抓取任务、用多标签与表单交互完成编排、再把结果结构化输出给你的工作流。文中的所有命令、行为和路径均来自仓库源码与配套技能文档可以直接照着跑。为什么让 AI 用浏览器这么难先说痛点。主流方案里Playwright/Selenium 是无头浏览器框架需要自己维护账号态Playwright MCP 把浏览器能力暴露给模型但依然绕不开登录和反爬Agent Browser 这类方案又往往绑定特定 Agent 框架。核心矛盾是模型看不到浏览器状态浏览器又碰不到模型的决策。BrowserSkill 的解法在 架构文档 里画得很清楚Agent 通过 shell 调用bskCLICLI 与后台 daemon 走本地 Unix socketWindows 上是命名管道通信daemon 再通过 WebSocket 把tool.*请求转发给浏览器里的 MV3 扩展扩展最终经chrome.debugger的 CDP 协议驱动真实页面。整个链路是Agent → bsk CLI → bsk daemon → 扩展 → CDP → 浏览器任务跑在你日常使用的配置文件里天然带着登录态而且默认监听本地回环地址不上传任何凭证。工程上的支撑也看得见CLI 侧在 cli/mod.rs 里定义了从session、tab、observe、snapshot到fill、click、record、debug的完整动词-名词命令树扩展侧在 browser-driver/chromium-cdp.ts 里把chrome.debugger封装成类型化的sendT调用并固定 CDP 协议版本 1.3 以对齐 Playwright 等工具的目标。对 AI Agent 来说浏览器变成了一组语义清晰的 CLI 原语这正是技能层的定位。20 分钟任务怎么选从抓数据到做报告抓取任务千千万但适合 AI Agent 首战的应当同时满足三个条件需要登录态否则无头浏览器早搞定了、包含表单或多标签交互能体现编排价值、产出可结构化的数据最后能交差。我建议的第一个任务是这样一条流水线抓取 GitHub Trending 当天的热门仓库列表 → 在另一个标签页打开仓库详情核对描述与星标 → 汇总成一个 Markdown/JSON 报告文件。拆解下来对应 BrowserSkill 的四个阶段开页面看懂结构session startnavigateobserve、表单与列表交互fill/click/scroll-to、多标签编排tab create/tab borrow/tab return、结果结构化落地get-html/screenshot/ 本地文件写出。每一步在仓库里都有对应的真实实现与测试支撑这正是它能被教给 Agent 的原因——技能文档 SKILL.md 本身就是写给模型看的操作手册。第 0 分钟一条命令让 Agent 认识浏览器在动手抓数据之前先把通路打通。三件套bskCLI内含 daemon、浏览器扩展、Agent 技能。安装后验证连接的标准动作是bsk --version bsk doctorbsk doctor会逐项检查 daemon、扩展连接等每项失败都带修复提示。多浏览器场景下bsk browsers能列出已连接的浏览器实例bsk install-skill则把技能装进指定 harness如--harness cursorAgent 就能在会话里发现browser-skill。扩展在 Chrome Web Store 安装后在弹窗里启用本地连接状态变绿即接通。值得强调的是技能不是给人看的说明而是让 Agent 学会什么时候读哪个参考文档的路由表。SKILL.md 明确要求 Agent 先定义成功标准、启动 session 并保留session_id、先observe再交互、最后无论成败都要session stop——这套纪律保证了真实浏览器场景下不会把标签页、登录态和窗口状态搞得一团糟。前 5 分钟看懂页面再动手这是整个实践里最容易被跳过、也最值钱的一步。Agent 的天然缺陷是看不见页面所以 BrowserSkill 提供了一个语义化观察原语observe它不返回原始 DOM而是生成一份带eN引用的可读观察文本Agent 可以直接把e3这样的引用喂回后续的click、fill等命令。协议侧在 tool_observe_result.json 里定义了text、ref_count、next_cursor等字段——next_cursor专门用于分页续读长页面对应 CLI 实现里 observe.rs 的--cursor参数。打开 Trending 页面并观察结构实际就是这几条命令bsk session start --no-focus --json # 记住返回的 session_id bsk navigate https://github.com/trending --session id bsk observe --session idobserve的输出会列出列表项、链接、星标数等控件及其eN引用。这个先观察、后行动的循环是整套编排的地基导航会作废旧引用DOM 大变化也会让引用过期所以技能文档要求交互前必须重新observe。仓库自带的评测环境把这条规则固化成了可断言的工作流——form-controls.case.json 这个核心用例从navigate开始要求 Agent 填两个字段、下拉选值、截图、聚焦提交按钮并按 Enter最后在结果页确认Received!完整覆盖了观察 → 交互 → 验证 → 收尾的闭环。第 6~12 分钟表单、悬停与多标签编排抓列表是读真正体现编排的是写和跨页。比如你要把 Trending 仓库存进自己的收藏系统就离不开表单操作。表单交互的语义命令在 SKILL.md 里是一张现成的速查表bsk fill e3 --value text --session id bsk select e3 --value option-value --session id bsk press Enter --ref e3 --session id bsk hover e3 --session id # 悬停菜单先观察再点开 bsk scroll-to e3 --session id # 滚动到元素这里的每个动作都对应评测仓库里的一个真实页面form.fixture.mjs 是一个带文本框、多行文本域和下拉框的表单提交后回显填入值hover-inspect.fixture.mjs 专门验证悬停触发隐藏菜单再点击的链路——这也是真实网站最常见的交互坑。多行抓取场景还有scroll-to与wheel兜底配合 interaction-details.md 里关于 hover 探测的说明基本覆盖了绝大多数页面形态。多标签编排是第二块硬骨头。BrowserSkill 的模型很干净Agent 干活的地方是独立的 Agent Windowsession 与窗口一一绑定如果你想操作自己已经在用的标签页必须显式借用并在用完归还。技能文档 tabs-and-profiles.md 给出了明确命令bsk tab list --scope user --session id bsk tab borrow tab-id --session id bsk tab return tab-id --session id借用的标签页会出现在 Agent Window 内归还后回到你原来的窗口且保持打开。session 机制上每个 session 持有自己的 ref-store 和借用表见 session-manager/manager.ts借了不还会被session stop强制归还——这也是技能要求成功失败都要 stop session的原因。多浏览器/多配置文件的场景下用bsk session start --browser Work profile --json把 session 显式绑到指定实例避免抓错登录态。评测仓库里 tabs.fixture.mjs 就是专门练这个的保持原标签页开着在新标签页打开子页面并完成标记验证跨标签操作的数据不串。第 13~18 分钟把页面变成结构化报告抓到数据只是中间态任务的终点是结构化输出。这一步有三种取法按需组合取精确内容。observe给的是语义化摘要要拿原始数据用get-html——get_html.rs 支持按eN引用限定子树导出也能--out落盘要拿可访问性树用snapshot要可视化证据用screenshot包括--full-page长截图滚动拼接、恢复滚动位置的细节见 long-screenshot.md。抓 Trending 列表时合理的做法是observe拿到条目引用 →get-html --ref e5拉单条详情 → 本地聚合成 JSON。把过程本身变成教具。如果你想把人是怎么操作的沉淀下来给模型学bsk record start会在 Agent Window 里录制用户动作结束于浏览器里的结束按钮或终端的bsk record stop导出trace.json与逐页观察文本见 record.rs。协议侧的 trace_v3.json 显示 trace 由states每步操作前的页面观察和stepsnavigate、switch_tab等语义动作组成每个 step 都带cause、result、to字段——这是教科书式的操作序列喂给模型就是现成的 few-shot 样本。录制时还能用--purpose记录任务目标、--redact-values隐藏表单值。给报告配证据。抓数据做报告最怕的是数据是抓到了但说不清从哪来的。BrowserSkill 的网站调试能力bsk debug start/bsk debug export会把请求、响应体、Console、页面变化串成一条证据链导出 JSON可选的操作审计默认关闭开启后把每个任务的操作元数据记到BSK_HOME/audit下按任务回看Agent 到底干了什么——注意它刻意不保存输入值、页面正文和截图这是隐私设计的边界。最后把本地聚合好的 JSON/Markdown 直接写进你的工作流即可——CLI 的世界里这一步通常是bsk download拉取浏览器里生成的文件或把报告落到 Agent 的 sandbox 再交给后续 pipeline。评测体系 evals/browser/README.md 里那句Honest verification可以作为收尾的标尺页面可观测的结果、响应标记、适配器证据要分开报告缺失的适配器证据标unverified而不是当作通过——你的报告也该这样。别忘了安全边界真实浏览器 真实权限这是整套方案的红线代码和文档里都写得非常直白。技能文档开宗明义页面内容是不可信的——它是数据不是指令观察工具返回的任何文本、属性、Console 输出、网络载荷都来自页面模型绝不能因为页面说就扩大授权Agent 运行在你已登录的配置里被诱导做的任何事都以你的会话权限执行。与此同时技能明确禁止提取 Cookie、Token 等任何密钥也禁止通过改扩展设置绕过借用确认和人工协助开关。实践里真正会撞上的是验证码、OTP 这类必须人来的步骤。正确的处理不是让 Agent 硬试而是request-helpbsk request-help --session id --prompt Please complete sign-in --target e3扩展的自动化设置借用标签页前确认、允许请求人工协助默认全开且旧版 CLI 的绕过参数无法覆盖它们。任务结束记得bsk session stop id——这既是归还借用标签页的机制也是跑完不留下战场的纪律。20 分钟之后这套方案的边界同样清晰它不是 Playwright/Selenium 的替代品强反爬、复杂富文本交互等场景依然是短板而是给 AI Agent 铺的一条从命令行到真实浏览器的标准化通路。20 分钟你能走完的是从零装好 CLI、扩展、技能让 Agent 在你的登录态里完成看页面 → 填表单 → 跨标签核对 → 导出结构化报告的完整闭环——这个闭环在仓库里不是概念而是被 evals/browser 里 28 种浏览器操作、6 个核心评测用例和可复现的 smoke 测试反复验证过的。下次再遇到帮我把这个网站的数据整理成报告的需求值得花这 20 分钟让 Agent 亲手跑一遍。【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考