Obscura 是一款由 h4ckf0r0day 团队于 2026 年 4 月开源的无头浏览器引擎,主要用于在不启动 Chromium 的前提下渲染网页并驱动自动化任务,支持 Chrome DevTools Protocol 与 Puppeteer、Playwright 直接接入,适用于智能体网页操作、批量数据抓取与页面截图归档等场景。
| 基础信息 | 内容 |
|---|---|
| 产品定位 | 面向智能体的无头浏览器 |
| 开发方 | h4ckf0r0day 团队 |
| 发布时间 | 2026 年 4 月 13 日 |
| 最新版本 | v0.2.5,2026 年 10 月 |
| 开源协议 | Apache-2.0 |
| 开发语言 | Rust,需 1.75 以上 |
| 脚本引擎 | V8,支持 JavaScript 执行 |
| 调试协议 | Chrome DevTools Protocol |
| 运行时内存 | 约 30MB |
| 安装包体积 | 约 70MiB |
| 单页加载 | 约 85ms |
| 分发方式 | 二进制、Docker、源码编译 |

Obscura 的核心能力
它把自己定位成浏览器引擎而不是浏览器应用:对外只暴露抓取、渲染与 CDP 三类接口,把标签页、界面这些面向人的部分全部去掉。服务的对象就是 AI 智能体 的网页操作需求。
自带渲染引擎,不调 Chromium 也能出图出 PDF
发布包内置独立渲染实现,覆盖块级与行内布局、flex、grid、表格、浮动、定位、溢出、变换、文字、图片、SVG、canvas、背景、边框与动画路径,可输出视口截图、整页截图与栅格 PDF,CDP 截图接口也支持连续画面推送。官方说明这套实现仍在演进,长尾 CSS 与部分 Web API 的表现可能与 Chromium 有差异。
四个发行变体,按是否需要渲染与反检测裁剪
压缩包按后缀区分能力:无后缀为渲染版,-stealth 追加反检测与追踪器拦截,-no-render 只做抓取不做渲染,-no-render-stealth 两者都不要。选无渲染版本可以进一步压体积,代价是拿不到截图与执行后 DOM。
命令行直接完成抓取、求值与并发任务
子命令 fetch 支持 --eval 执行表达式、--dump 输出 links、html、text、assets 或原始响应体,--screenshot 落图,--wait-until networkidle0 等动态加载,--proxy 走代理。批量任务用 scrape,可指定并发数与 JSON 输出。
兼容现有 CDP 生态,脚本不必重写
obscura serve --port 9222 启动 CDP 服务后,Puppeteer 用 connect 连 ws://127.0.0.1:9222/devtools/browser、Playwright 用 connectOverCDP 连 ws://127.0.0.1:9222,原有代码即可复用。与 Kimi 浏览器扩展 那类接管已登录浏览器的方式不同,它提供的是干净的独立会话,登录态要自己带。
默认拦截内网地址,本地调试需显式放行
引擎默认阻止对私有网段与内部地址的请求,属于 SSRF 防护设计。要把 Playwright 脚本指向本地开发服务器时,需加 --allow-private-network 或设置 OBSCURA_ALLOW_PRIVATE_NETWORK=1。放行规则含 DNS 解析阶段的检查,官方文档列出完整的允许与拒绝条件。
Obscura 与同类无头浏览器的对比
下表把 Obscura 与两款代表实现并列:同为自研引擎的 Lightpanda,以及浏览器领域的事实标准 Chrome。
| 对比维度 | Obscura | Lightpanda | Chrome |
|---|---|---|---|
| 定位 | 面向智能体的无头浏览器 | 为 AI 与自动化从头构建的无头浏览器 | 通用浏览器,无头需单独启动 |
| 实现路径 | 自研 Rust 引擎加 V8 | Zig 自研,非 Chromium 分支 | Chromium 完整内核 |
| 内存占用 | 单实例约 30MB | 100 页峰值 123MB | 100 页 2GB |
| 执行速度 | 单页约 85ms | 100 页 5 秒 | 100 页 46 秒 |
| 授权协议 | Apache-2.0 | AGPL-3.0 | 闭源专有 |
| CDP 接入 | 支持 | 支持,可接 Puppeteer 与 Playwright | 原生支持 |
差别集中在实现路径、内存占用与执行速度三处。Lightpanda 与 Chrome 两列取自其官方同一组基准(933 个真实页面),Obscura 一列取其官方仓库的单实例口径,统计方式不同,不能直接换算成倍数。前两者都不走 Chromium,一个用 Rust 加 V8、一个用 Zig 从零写;协议上 AGPL-3.0 对网络服务分发有约束,闭源项目要评估;三款都支持 CDP,现有 Puppeteer 脚本可直接复用。
如果需求偏向在已有浏览器里做网页操作,而不是自建渲染引擎,可以参考 QBotClaw(腾讯推出的浏览器自动化执行与智能体工具,走的是接管浏览器的路子)。
Obscura 的应用场景与适用人群
免 Chromium 带来的是体积与并发的账,落到具体环节上常见场景包括:
- 智能体网页操作:给每个任务开一个干净会话,跑完即销毁,避免 Cookie 与登录态串到下一条任务。
- 批量页面归档:按 URL 列表并发截图或导出 PDF,单机开几十个会话不必担心内存被打满。
- 结构化抓取:在
--eval里直接取字段,配合--concurrency批量跑,输出 JSON 直接入库。 - 前端回归检查:把本地或测试环境的页面交给引擎渲染,比对截图与 DOM 差异,不必拉完整浏览器。
适用人群:做智能体工具链的工程团队、需要长期跑大批量抓取的团队,以及在资源受限机器上部署自动化任务的技术人员。
Obscura 的使用方法
官方给出 3 条路径:单机下载二进制最直接,容器化适合批量部署,接现有脚本则改一行连接地址。
下载二进制:解压后直接用命令行
- 到 Releases 页取对应平台的包:从 Obscura 官方仓库 的 Releases 进,Linux 选
x86_64-linux或aarch64-linux,macOS 按芯片选,Windows 取 zip。 - 解压后确认
obscura与obscura-worker在同一目录,后者是scrape并发执行所需。 - 先跑一条最简单的验证:
obscura fetch https://example.com --eval "document.title",能返回标题即环境正常。 - 需要截图时追加
-s page.png,需要结构化字段时把表达式换成对应的 DOM 查询。
Docker 部署:一条命令起 CDP 服务
- 生成一个 CDP 访问令牌,用
openssl rand -hex 32写入环境变量OBSCURA_CDP_TOKEN。 - 执行
docker run -d --name obscura -p 127.0.0.1:9222:9222并带上令牌,镜像基于 distroless,以 uid 65532 运行。 - 挂载
--storage-dir时确认目录对该 uid 可写,否则会话创建会失败。
接入现有脚本:Playwright 与 Puppeteer 只改连接地址
- 先用
obscura serve --port 9222起服务,需要反检测时加--stealth。 - 在 Playwright 里用
connectOverCDP连ws://127.0.0.1:9222,在 Puppeteer 里用puppeteer.connect连ws://127.0.0.1:9222/devtools/browser。 - 原有导航、点击、截图、导 PDF 代码保持不变;遇到不支持的 CSS 或 Web API,回到文档比对渲染差异。
从源码编译需要 Rust 1.75 以上,首次构建约 5 分钟,因为 V8 要从源码编译;带 stealth 的构建还要额外装 CMake、Clang 与 libclang。Linux 发行包以 Ubuntu 22.04 为目标环境,需要 glibc 2.35 以上。
Obscura 的项目地址
- 项目官网:https://obscura.sh/
- GitHub 主仓库:https://github.com/h4ckf0r0day/obscura
Obscura 的价格方案
开源引擎按 Apache-2.0 分发,本地部署不产生许可费用,官方明确写了不设功能门槛——反检测、渲染、并发这些能力在开源版里都完整保留,托管版不会独占功能。
需要托管的团队可以看 Obscura Cloud:官方称其提供托管基础设施与住宅代理,目前以预约方式接入,尚未公布公开价目。自建的成本主要是机器数量:按官方口径,内存约为 Chrome 的十分之一,同样硬件能装的会话更多。
Obscura 的常见问题
Obscura 需要装 Chrome 吗
不需要。发布包内置独立的渲染实现,也不依赖 Node.js,解压后直接运行二进制即可抓取与截图。
现有的 Playwright 脚本能直接用吗
能。启动 CDP 服务后把连接地址指向本机 9222 端口即可复用原有代码;官方也给出了 MCP 服务端的接入方式。
为什么抓本地地址会失败
引擎默认拦截私有网段请求以防 SSRF,本地调试要显式加 --allow-private-network 或对应的环境变量。
渲染效果和 Chrome 完全一致吗
不完全一致。官方说明长尾 CSS、部分 Web API、媒体播放与平台字体渲染可能与 Chromium 有差异,对像素级一致性要求高的场景需要先验证。
浙公网安备33010202004812号