乐于分享
好东西不私藏

给Agent一个浏览器插件,它就能自己上网了

给Agent一个浏览器插件,它就能自己上网了

先说说Agent和浏览器之间的「鸿沟」

你用过Agent吧?让它们写代码、跑脚本、分析文档,那都是小菜一碟。但一旦涉及到浏览器,问题就来了。

你想让Agent帮你爬个网页?它可能连登录都搞不定。

你想让它自动填个表单?它可能连那个按钮在哪都找不到。

你想让它截图验证结果?它可能连页面都没加载完就告诉你「任务完成」。

问题出在哪?

出在Agent没有「手」。

Agent有大脑,能思考,能推理,但它没有直接操作浏览器的能力。它需要通过API、需要写爬虫、需要处理各种反爬机制,还得自己维护登录态。

这就像给一个超级大脑装上一双塑料手,看着挺厉害,实际啥也干不了。


所以我想,干脆给Agent装个「真手」

浏览器插件是个好方案。

它天然运行在浏览器里,有完整的DOM访问权限,能操作任何元素,能读取任何内容,还能保持登录态。

但问题是,怎么让Agent和插件对话?

我折腾了几个方案,最后选了三层架构:

CLI是Agent直接调用的命令行工具,native-host是中间桥梁,Extension才是真正在浏览器里干活的那一个。

通信方式用的是Chrome Native Messaging,这是Chrome官方提供的插件和本地程序通信的协议,稳定、安全、性能也不错。


这个工具能做什么?

我把它设计成了一套完整的浏览器自动化工具集。

Tab管理:创建、关闭、激活标签页,就像你自己操作一样。

页面快照:这个功能我觉得特别好用。它会返回页面的可访问性树,给每个可交互元素分配一个ref标识符,比如r1、r2。Agent不用自己去猜CSS选择器,直接说「点r1」就行。

页面内容:能提取原始HTML,也能直接转成Markdown,把导航栏、广告这些乱七八糟的东西都去掉,只留正文。

页面截图:支持全页截图、元素截图,还能指定ref或selector来截取特定区域。

页面交互:点击、输入、选择下拉框、滚动、查询DOM、等待元素出现,应有尽有。

脚本执行:能在页面上下文中执行任意JavaScript,想干嘛都行。

导航:前进、后退、刷新、直接跳转到指定URL。

搜索:内置了百度和Bing搜索,不用自己打开浏览器搜,直接命令行就能搜。

Cookie操作:获取、设置、删除Cookie,登录态管理。

内容抓取:给个URL,它自动打开、提取Markdown、然后自己关闭标签页,一条龙服务。


说几个我觉得「卧槽」的场景

场景一:Agent自动调研竞品

Agent接到任务:「帮我调研一下最近AI行业有什么大新闻」。

它用browser-bridge搜索关键词,打开几个新闻页面,提取Markdown内容,总结报告。整个过程不需要人工干预,Agent自己就能把信息抓回来。

场景二:Agent自动填写表单

你想让Agent帮你注册个账号?给它URL和账号信息,它自己打开页面,找到输入框,填好信息,点提交。

场景三:Agent自动截图验证

Agent执行完一个网页操作后,想知道结果对不对?让它截图,对比一下就知道。

场景四:Agent自动维护登录态

很多网站需要登录才能看内容。browser-bridge能操作Cookie,Agent可以帮你维持登录状态,不用每次都重新登录。


怎么安装?

挺简单的。

class="language-bash">install/install.bat

运行这个脚本,它会自动编译、配置、注册。

然后按提示在Chrome里加载extension/dist目录作为unpack扩展就行。

如果你用的是Windows,直接跑bat文件。如果你用的是其他系统,手动编译也很容易,文档里有详细说明。


项目结构

browser-bridge/├── extension/          # Chrome插件,TypeScript├── native-host/        # 中间桥梁,Go├── cli/                # 命令行工具,Go├── install/            # 安装脚本└── docs/               # 文档

技术栈也很清晰:Extension用TypeScript,native-host和CLI都用Go。

通信协议用的是Chrome Native Messaging,4字节长度前缀加JSON,简单直接。


我觉得它最大的价值在哪

不是它能做什么,而是它让Agent能做什么

以前Agent遇到浏览器就废,现在Agent可以像人一样操作浏览器。

它能自己上网查资料,能自己填表单,能自己截图验证,能自己保持登录态。

Agent的边界,一下子就被拓宽了。


但也要坦诚说几个问题

第一,它还在早期。功能基本都有了,但还有很多细节需要打磨。比如某些复杂页面的交互可能还需要优化。

第二,它需要Go环境。编译需要Go 1.23+,构建Extension需要Node.js。如果你没有这些环境,安装会稍微麻烦点。

第三,它是开源的。这意味着你可以自由使用、修改、贡献,但也意味着没有官方支持,遇到问题得自己解决或者提issue。


最后

我写这个工具,不是因为我觉得它有多完美,而是因为我真的遇到了这个问题,而且我真的想解决它。

Agent时代已经来了,但Agent的能力边界还卡在很多地方。浏览器自动化就是其中一个。

我希望这个工具能帮到你,也希望你能用它做出一些有意思的东西。

项目地址:https://github.com/knowwhythat/browser-bridge

欢迎提issue,欢迎提PR,欢迎star。


以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~

谢谢你看我的文章,我们,下次再见。

/ 作者:玄策