程序员老鬼

Obscura:无头浏览器这块,Chrome 终于有点重了

我看到 Obscura 的时候,第一眼盯的不是 Rust,也不是 AI agent。

是那个 30MB。

跑过爬虫的人都知道,无头 Chrome 一旦开多了,机器风扇先开始表达意见。一个实例两三百兆并不稀奇,几十个页面并发起来,真正烦人的不是代码怎么写,而是资源怎么撑住。

Obscura 盯的就是这件事。

它是一个用 Rust 写的无头浏览器引擎,定位给网页抓取和 AI Agent 自动化用。仓库 README 里写得很直:跑 V8,支持 Chrome DevTools Protocol,可以接 Puppeteer 和 Playwright,当成 headless Chrome 的替代品用。

Image

我更在意的是,它没有把自己包装成“浏览器”。

它更像一块被拆出来的执行层。

比如你只是想抓一个页面标题,抽一批链接,等 JS 跑完再拿 HTML,Chrome 那一整套桌面浏览器遗产就显得有点笨。Obscura 的命令行直接给了 fetch、scrape 这类入口,多 URL 并发抓取也可以直接输出 JSON。

这个差别在小脚本里不明显。

但一旦放到 AI agent 里,就变了。

Agent 不是只打开一个页面。它会跳转、等待、读 DOM、执行脚本、重试,甚至一边开多个页面一边判断下一步。以前大家默认把 Chrome 拉起来,算是最稳妥的办法。稳是稳,代价也硬吃。

Obscura 给出的对比很激进:单实例内存 30MB,二进制 70MB,页面加载 85ms,启动接近瞬时;同表里 headless Chrome 是 200MB+ 内存、300MB+ 体积和约 2 秒启动。

Image

当然,README 里的 benchmark 先当项目方口径看。

我不会因为一个表格就说它能无脑替换 Chrome。浏览器自动化最烦的地方,往往不是跑 demo,而是遇到复杂站点、奇怪登录态、风控、代理、Cookie、请求拦截这些边角料。

Obscura 已经补了一些。

它支持表单提交、登录后跳转、Cookie 保持;CDP API 里也列了 Network、Fetch、Storage、Input 等常用域。隐身模式这块,它会做每会话指纹随机化,并屏蔽 3520 个追踪域名。

这类功能适合减摩擦,但别把它理解成万能通行证。

该遵守 robots.txt、站点条款和访问频率的地方,还是要守。Obscura 甚至在 CLI 参数里放了 --obey-robots,只是默认没有打开。

我觉得它现在最适合的场景,不是替掉所有 Puppeteer 项目。

而是那些原本只需要“加载页面、执行一点 JS、拿结构化结果”的任务:批量抓公开页面、做数据清洗前的预渲染、给 agent 配一个更轻的浏览器后端。

仓库现在还很早,GitHub 显示最新 release 是 2026 年 4 月 25 日的 v0.1.1,代码量和提交数都不算厚。

但这个方向挺对胃口。

过去我们为了自动化,默认搬一整台 Chrome 出来。Obscura 做的事,是把“能跑网页”这件事压回一个更小的工具里。

GitHub 地址:h4ckf0r0day/obscura。