<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Browser-Use on 大卷学长的博客</title><link>https://blog.liurb.org/tags/browser-use/</link><description>Recent content in Browser-Use on 大卷学长的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 10 Sep 2026 10:00:00 +0000</lastBuildDate><atom:link href="https://blog.liurb.org/tags/browser-use/index.xml" rel="self" type="application/rss+xml"/><item><title>Hermes Agent 浏览器自动化：本地 Chrome 走 CDP 连接实操</title><link>https://blog.liurb.org/posts/2026/09/10/hermes_agent_browser/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0000</pubDate><guid>https://blog.liurb.org/posts/2026/09/10/hermes_agent_browser/</guid><description>&lt;img src="https://blog.liurb.org/images/posts/2026/hermes_agent_browser_logo.png" alt="Featured image of post Hermes Agent 浏览器自动化：本地 Chrome 走 CDP 连接实操" />&lt;p>上一篇写了 Hermes Agent 桌面端 runtime 的配置记录（&lt;a class="link" href="https://blog.liurb.org/posts/2026/09/07/hermes_agent_setup/" >Hermes Agent 桌面端 Runtime 配置实战&lt;/a>），这篇接着聊它的&lt;strong>浏览器自动化&lt;/strong>。这篇以&amp;quot;浏览器怎么用&amp;quot;为主线，以后要是再配置别的浏览器后端、或者学到新的浏览器工具用法，我继续往这篇里补。&lt;/p>
&lt;p>浏览器自动化是 agent 比较核心的一块能力——网页导航、点按钮、填表单、抓动态内容都靠它。Hermes 这块后端选项很多，有云端的（Browserbase、Browser Use、Firecrawl），有本地的（Camofox、CDP 连自家 Chrome、本地 Chromium）。我这边主要踩的是&lt;strong>通过 CDP 连本地 Chrome&lt;/strong>这条线，中间有个坑挺典型，先记下来。&lt;/p>
&lt;h2 id="一后端选项总览">一、后端选项总览
&lt;/h2>&lt;p>官方文档把浏览器后端分成了几类，先摆个全局视图：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>后端&lt;/th>
&lt;th>模式&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Browserbase&lt;/strong>&lt;/td>
&lt;td>云&lt;/td>
&lt;td>托管云浏览器 + 反机器人，有住宅代理、验证码破解&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Browser Use&lt;/strong>&lt;/td>
&lt;td>云&lt;/td>
&lt;td>替代云浏览器服务商，走 REST API&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Firecrawl&lt;/strong>&lt;/td>
&lt;td>云&lt;/td>
&lt;td>带内置爬取能力的云浏览器&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Camofox&lt;/strong>&lt;/td>
&lt;td>本地&lt;/td>
&lt;td>基于 Firefox 的本地反检测指纹伪装&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>本地 Chrome（CDP）&lt;/strong>&lt;/td>
&lt;td>本地&lt;/td>
&lt;td>连你自己正在跑的 Chrome，&lt;code>/browser connect&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>agent-browser&lt;/strong>&lt;/td>
&lt;td>本地&lt;/td>
&lt;td>靠本地 Chromium 驱动&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>所有模式里，agent 都能做到网页导航、页面元素交互、表单填写、信息提取。页面以&lt;strong>可访问性树&lt;/strong>（基于文本的快照）表示，交互元素分配引用 ID（如 &lt;code>@e1&lt;/code>、&lt;code>@e2&lt;/code>），agent 靠这些 ID 去点击、输入——这也是它跟传统像素级 RPA 最大的区别。&lt;/p>
&lt;h2 id="二我这边的配置cdp-连本地-chrome">二、我这边的配置：CDP 连本地 Chrome
&lt;/h2>&lt;h3 id="21-正确配置方式">2.1 正确配置方式
&lt;/h3>&lt;p>在 &lt;code>~/.hermes/config.yaml&lt;/code>（Windows 上是 &lt;code>%LOCALAPPDATA%\hermes\config.yaml&lt;/code>）里加：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">browser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cdp_url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;http://localhost:9222&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">backend&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">off&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>关键点&lt;/strong>：&lt;code>cdp_url&lt;/code> 和 &lt;code>backend: off&lt;/code> 必须一起设，只设 &lt;code>cdp_url&lt;/code> 不设 &lt;code>backend&lt;/code> 就会踩坑。&lt;/p>
&lt;h3 id="22-为什么必须-backend-off">2.2 为什么必须 &lt;code>backend: off&lt;/code>
&lt;/h3>&lt;p>&lt;code>browser.backend&lt;/code> 的默认值是空字符串 &lt;code>&amp;quot;&amp;quot;&lt;/code>，含义是：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>空值 &lt;code>&amp;quot;&amp;quot;&lt;/code>&lt;/strong>：自动检测。如果系统上能找到 &lt;code>browser-use&lt;/code> CLI（通过 &lt;code>uvx&lt;/code> 或 PATH），会自动切到 &lt;code>browser_exec&lt;/code> 工具（Browser Use CLI 模式）；&lt;/li>
&lt;li>&lt;strong>&lt;code>&amp;quot;browser-use&amp;quot;&lt;/code>&lt;/strong>：强制用 &lt;code>browser_exec&lt;/code> + Browser Use CLI；&lt;/li>
&lt;li>&lt;strong>&lt;code>&amp;quot;off&amp;quot;&lt;/code>&lt;/strong>：强制用内置浏览器工具（&lt;code>browser_navigate&lt;/code>、&lt;code>browser_click&lt;/code>、&lt;code>browser_vision&lt;/code> 等）。&lt;/li>
&lt;/ul>
&lt;p>我只配了 &lt;code>browser.cdp_url&lt;/code>、没设 &lt;code>backend: off&lt;/code>，而系统上恰好有 &lt;code>uvx&lt;/code>，于是 Hermes 自动进了 Browser Use CLI 模式：通过 &lt;code>uvx browser-use&lt;/code> 拉独立的 Python 环境，在 workspace 里下载了一堆依赖（openai、pillow、reportlab、cryptography……），最后报了个 &lt;code>agent_helpers&lt;/code> 模块不存在的错。绕了一圈才明白——&lt;strong>&lt;code>browser.cdp_url&lt;/code> 本身是有效的 CDP 配置，但它预期的使用场景是配合内置浏览器工具，而不是 Browser Use CLI 模式&lt;/strong>。&lt;/p>
&lt;h3 id="23-工作原理">2.3 工作原理
&lt;/h3>&lt;p>设了 &lt;code>backend: off&lt;/code> 之后，内置浏览器工具会自动读 &lt;code>browser.cdp_url&lt;/code>：&lt;/p>
&lt;ol>
&lt;li>&lt;code>browser_navigate&lt;/code> 这类工具通过 &lt;code>_get_cdp_override()&lt;/code> 读取配置；&lt;/li>
&lt;li>把 HTTP CDP URL（&lt;code>http://localhost:9222&lt;/code>）解析成 WebSocket URL（通过 &lt;code>/json/version&lt;/code> 拿 &lt;code>webSocketDebuggerUrl&lt;/code>）；&lt;/li>
&lt;li>通过 WebSocket 连到已运行的 Chrome 实例；&lt;/li>
&lt;li>用 CDP Supervisor 做对话和帧检测。&lt;/li>
&lt;/ol>
&lt;p>整个过程不需要装 &lt;code>browser-use&lt;/code> CLI，也不用下载任何额外依赖包——&lt;strong>这就是 &lt;code>backend: off&lt;/code> + &lt;code>cdp_url&lt;/code> 的优势所在，轻量、直接、还看得见浏览器在干嘛&lt;/strong>。&lt;/p>
&lt;h2 id="三启动-chrome-与验证">三、启动 Chrome 与验证
&lt;/h2>&lt;h3 id="31-手动启动">3.1 手动启动
&lt;/h3>&lt;p>Chrome 得用调试模式启动：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Windows&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">start &lt;/span>&lt;span class="n">chrome&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-remote-debugging-port&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="mf">9222&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-auto-open-devtools-for-tabs&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>验证 CDP 端点是否可达：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Invoke-RestMethod&lt;/span> &lt;span class="n">-Uri&lt;/span> &lt;span class="s2">&amp;#34;http://localhost:9222/json/version&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 应返回包含 webSocketDebuggerUrl 的 JSON&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果 Chrome 没在调试模式跑，Hermes 的 &lt;code>/browser connect&lt;/code> 也会尝试自动启动它并带 &lt;code>--remote-debugging-port=9222&lt;/code>。Linux 和 macOS 上手动启动命令分别是 &lt;code>google-chrome --remote-debugging-port=9222&lt;/code> 和 Chrome.app 路径加同参数。&lt;/p>
&lt;h3 id="32-一键启动脚本批处理">3.2 一键启动脚本（批处理）
&lt;/h3>&lt;p>手动敲命令行有点麻烦，我另外写了个批处理脚本，双击就能自动定位 Chrome、起调试端口、等待就绪，还能自动打开验证页面。好处是它用独立的 profile 目录（&lt;code>%LOCALAPPDATA%\HermesChromeProfile&lt;/code>），跟日常浏览的 Chrome 会话分开，不会跟你自己在用的标签页打架。&lt;/p>
&lt;p>脚本我打包成了一个 zip 放在项目里，直接下载解压就能用：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>下载&lt;/strong>：&lt;a class="link" href="https://blog.liurb.org/files/2026/start_chrome_agent.zip" >start_chrome_agent.zip&lt;/a>&lt;/li>
&lt;li>&lt;strong>使用&lt;/strong>：解压后双击 &lt;code>start_chrome_agent.bat&lt;/code>，等它提示 &lt;code>[OK] Chrome CDP is ready&lt;/code>，再回 Hermes 里跑 &lt;code>/browser connect ws://localhost:9222&lt;/code> 连上即可。如果你已经通过 &lt;code>config.yml&lt;/code> 配置了 &lt;code>browser.cdp_url&lt;/code>，那么就不需要做连接了。&lt;/li>
&lt;/ul>
&lt;p>脚本逻辑其实就三步：先探测端口是不是已经在监听——在就直接报连接方式并打开 &lt;code>/json/version&lt;/code> 验证页退出；不在就创建 profile 目录，用独立 profile 启动 Chrome，然后轮询最多 10 秒等 CDP 就绪。几处容易踩的点：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>如果跑在 WSL2 / Docker 里&lt;/strong>，把脚本里的 &lt;code>EXTRA_ARGS=--remote-debugging-address=0.0.0.0&lt;/code> 那行取消注释，否则容器外部连不上调试端口；&lt;/li>
&lt;li>&lt;strong>端口已被占用但不通&lt;/strong>，大概率是别的 Chrome 实例占着同一个 profile 目录，关掉那个实例再跑；&lt;/li>
&lt;li>脚本用的是独立 profile，所以即使你平时 Chrome 开着，也能再起一个调试实例，互不影响。&lt;/li>
&lt;/ul>
&lt;p>连上之后，所有浏览器工具（&lt;code>browser_navigate&lt;/code>、&lt;code>browser_click&lt;/code> 等）操作的都是你实际在跑的 Chrome 实例，而不是起云会话——&lt;strong>想实时看 agent 操作、要用自己的 Cookie/登录态、或者想省掉云浏览器成本的时候，这条线很合适&lt;/strong>。&lt;/p>
&lt;h2 id="四模式手动切换">四、模式手动切换
&lt;/h2>&lt;p>不想写配置文件的话，CLI 也能临时切：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 切到内置工具模式（用 CDP）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hermes browser off
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 切到 Browser Use CLI 模式&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hermes browser use
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 设置 CDP URL 并连接&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hermes browser connect http://localhost:9222
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>/browser connect&lt;/code> 还支持连特定端点（&lt;code>ws://host:port&lt;/code>），以及 &lt;code>/browser status&lt;/code> 看当前连接、&lt;code>/browser disconnect&lt;/code> 断开回到 cloud/local 模式。当然，&lt;code>hermes tools&lt;/code> 菜单的 Browser Automation 部分也能图形化配置。&lt;/p>
&lt;h2 id="五常用浏览器工具">五、常用浏览器工具
&lt;/h2>&lt;p>连着 CDP 之后，内置工具集大概是这些，都是基于可访问性树引用的：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>工具&lt;/th>
&lt;th>作用&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>browser_navigate&lt;/code>&lt;/td>
&lt;td>导航到指定 URL，其他浏览器工具之前必须先调它&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_snapshot&lt;/code>&lt;/td>
&lt;td>拿当前页面的文本可访问性树快照，返回可交互元素及引用 ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_click&lt;/code>&lt;/td>
&lt;td>按引用 ID 点击元素&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_type&lt;/code>&lt;/td>
&lt;td>输入框输入文本，先清空再输入&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_scroll&lt;/code>&lt;/td>
&lt;td>上下滚动页面&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_press&lt;/code>&lt;/td>
&lt;td>按键（Enter、Tab、Escape 等），适合提交表单&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_back&lt;/code>&lt;/td>
&lt;td>返回历史上一页&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_get_images&lt;/code>&lt;/td>
&lt;td>列出页面上所有图片 URL 和 alt 文本&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_vision&lt;/code>&lt;/td>
&lt;td>截图 + AI 视觉分析，适合验证码、复杂布局&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>browser_console&lt;/code>&lt;/td>
&lt;td>读控制台输出和未捕获的 JS 异常&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>其中 &lt;code>browser_vision&lt;/code> 对验证码、图表这类&amp;quot;文本快照抓不住&amp;quot;的场景特别好用；截图存在 &lt;code>~/.hermes/cache/screenshots/&lt;/code>，24 小时后自动清理。&lt;code>browser_console&lt;/code> 则适合排查页面里静默的 JS 错误——可访问性树看不出来，控制台能暴露。&lt;/p>
&lt;p>填表单的典型流程：&lt;/p>
&lt;ol>
&lt;li>&lt;code>browser_navigate(&amp;quot;https://example.com/signup&amp;quot;)&lt;/code>&lt;/li>
&lt;li>&lt;code>browser_snapshot()&lt;/code> → 看到带 ref 的表单字段&lt;/li>
&lt;li>&lt;code>browser_type(ref=&amp;quot;@e3&amp;quot;, text=&amp;quot;john@example.com&amp;quot;)&lt;/code>&lt;/li>
&lt;li>&lt;code>browser_click(ref=&amp;quot;@e8&amp;quot;)&lt;/code> → 点&amp;quot;Create Account&amp;quot;&lt;/li>
&lt;li>&lt;code>browser_snapshot()&lt;/code> → 确认成功&lt;/li>
&lt;/ol>
&lt;h2 id="六几个值得留意的点">六、几个值得留意的点
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>简单信息检索优先用 &lt;code>web_search&lt;/code> / &lt;code>web_extract&lt;/code>&lt;/strong>，更快更省成本；只有要&lt;strong>跟页面交互&lt;/strong>（点按钮、填表单、动态内容）才用浏览器工具。&lt;/li>
&lt;li>&lt;strong>Browserbase 云模式有自动隐蔽能力&lt;/strong>：随机指纹、视口随机化、验证码自动求解是基础项；住宅 Agent、高级隐蔽（要 Scale 计划）、保持连接这些是付费项。免费计划下 Hermes 会自动降级，先禁 keepAlive 再禁 Agent。&lt;/li>
&lt;li>&lt;strong>会话录制&lt;/strong>：&lt;code>browser.record_sessions: true&lt;/code> 可把会话自动录成 WebM，存在 &lt;code>~/.hermes/browser_recordings/&lt;/code>，超过 72 小时自动清理。&lt;/li>
&lt;li>&lt;strong>限制要心里有数&lt;/strong>：交互基于可访问性树而非像素坐标；大页面快照在 8000 字符处会被截断或摘要；云会话会消耗积分；浏览器里&lt;strong>没法下载文件&lt;/strong>。想免费本地浏览，就走 &lt;code>/browser connect&lt;/code>。&lt;/li>
&lt;/ul>
&lt;h2 id="七坑点小结">七、坑点小结
&lt;/h2>&lt;p>这次最典型的坑就一个：&lt;strong>&lt;code>browser.cdp_url&lt;/code> 配上后没设 &lt;code>backend: off&lt;/code>，被自动切进了 Browser Use CLI 模式&lt;/strong>，拉了一堆依赖还报错。记牢 &lt;code>cdp_url&lt;/code> + &lt;code>backend: off&lt;/code> 这个组合，就能走轻量的内置工具 + CDP 路线。后面要是再研究其他浏览器后端（比如 Camofox、Firecrawl）或学到新工具用法，我继续补进这篇。&lt;/p>
&lt;h2 id="参考">参考
&lt;/h2>&lt;ul>
&lt;li>官方文档：&lt;a class="link" href="https://hermesagent.org.cn/docs/user-guide/features/browser" target="_blank" rel="noopener"
>浏览器自动化&lt;/a>&lt;/li>
&lt;li>上一篇：&lt;a class="link" href="https://blog.liurb.org/posts/2026/09/07/hermes_agent_setup/" >Hermes Agent 桌面端 Runtime 配置实战&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>