程序员老鬼

camofox-browser:Agent 逛网页,终于有人从浏览器底层动手了

我点进 camofox-browser 仓库的时候,先停在一句话上。

“Stealth headless browser for AI agents”。

这类项目现在不少。大多数做法,是在 Playwright 或 Puppeteer 外面套一层补丁,把 navigator、WebGL、UA、时区这些东西尽量抹平。

问题也在这里。

补丁太多,本身就会变成一种新指纹。

camofox-browser 选的路更底层。它站在 Camoufox 上,后者是一个 Firefox fork,指纹伪装发生在 C++ 实现层,像硬件并发数、WebGL renderer、AudioContext、屏幕几何信息、WebRTC 这些,都是在 JavaScript 看到之前就处理掉。

这对做 AI Agent 的人很现实。

Image

Agent 不是简单抓个 HTML 就完事。它要打开网页、点按钮、滚动、搜索、登录、下载,有时还要在一个页面里来回试几次。

很多网页对 headless Chrome 很敏感。你刚让 Agent 进站,页面还没读完,Cloudflare、风控、验证码先来了。

camofox-browser 没有把自己包装成一个“万能浏览器”。它更像是把 Camoufox 封成了一套给 Agent 用的后端服务。

这里我更在意的是它返回的页面信息。

它不直接把整页 HTML 丢给模型,而是返回无障碍快照。仓库里说,这种 snapshot 比原始 HTML 小约 90%。对 Agent 来说,这不是小优化。网页一长,token 烧得很快,模型还容易被导航栏、脚本、样式、广告区带偏。

快照里还有稳定的元素引用。

不是让模型猜“点第三个按钮”,而是给元素一个类似 e1、e2、e3 的 ref。Agent 后续点击、输入、滚动,都可以围绕这些引用做动作。这个细节很工程。

还有一组搜索宏。

Google、YouTube、Amazon、Reddit 这些常见站点,它内置了十多个宏,比如 @google_search、@youtube_search、@amazon_search、@reddit_subreddit。这类东西看起来不炫,但真接到 Agent 工作流里,会少写不少胶水代码。

登录这块也做得比较直接。

它支持导入 Netscape 格式的 Cookie 文件,给后续会话复用。每个用户的 cookies 和 localStorage 可以独立保存,默认放在本地 profile 目录里。也支持代理和自动 locale、timezone 匹配。

这意味着它面向的不是一次性爬虫脚本。

Image

更像是一个长期跑着的 Agent 浏览器底座:这个用户今天登录过,明天继续访问;这个任务走某个代理;这个 session 出问题了,还能看 trace。

资源占用也压得比较狠。仓库里写的是懒启动浏览器,空闲时自动关闭,idle 内存大约 40MB,树莓派、5 美元 VPS、共享机器都能放进去跑。

我看到这里,差不多知道它为什么会被开发者转发。

不是因为它发明了浏览器自动化。

而是现在很多 AI 应用卡住的地方,根本不是模型会不会推理,而是它能不能稳定、便宜、像个正常用户一样完成网页交互。

当然,这类工具最好放在授权、合规的场景里用。比如内部系统自动化、个人助理、测试环境、自己账号下的工作流。

但如果你正在做一个需要深度交互网页的 AI Agent,camofox-browser 这种底层浏览器服务,确实值得翻一下。

GitHub地址:jo-inc/camofox-browser。