Obscura 无头浏览器
为智能体与网页抓取提供轻量、隐蔽且无需 Chromium 的浏览器自动化。
默认阻止回环、私网和链路本地地址,危险网络访问需要显式开启;CI 权限为只读、凭据不持久化,发布与 PR 检查隔离,依赖审计配置还从可信基准版本取得,因此最小权限和依赖安全证据充分。安全文档明确说明进程内执行不等同于系统隔离,并建议容器或虚拟机。扣分点是浏览、点击、表单提交、文件写入和代理流量没有逐操作确认机制,robots.txt 默认不遵守;数据流虽描述了请求、Cookie、代理、输出和跨会话边界,但未完整说明凭据生命周期、日志脱敏或数据保留。关闭页面可重置状态,但对已发出的请求、提交或写入缺少回滚方案。仓库、许可证、安全邮箱和项目渠道可辨认,但发布者身份未由给定材料验证。
README、Cargo 工作区、安全模型和 CI 构建矩阵在功能开关、panic 策略、SSRF 默认值以及支持环境方面大体一致,并提供超时、V8 watchdog、进程硬截止和 panic 降级机制。扣分是静态材料无法确认这些机制实际生效,部分性能和兼容性表述主要来自项目自身;依赖与构建要求记录较好,但 V8、BoringSSL、系统工具、外部发布包和本地 vendor 补丁增加可用性风险。文档覆盖超时、内存不足及部分配置修复方式,但没有完整、稳定的错误分类和面向所有 MCP/CDP 操作的诊断约定。
材料清楚覆盖 AI Agent、抓取、CLI、MCP、Puppeteer、Playwright、CDP、并行任务及多种输出场景,安装和构建变体也适配 Linux、macOS、Windows、Docker、AUR 与 NixOS。对长尾 CSS、部分 Web API、媒体、合成效果、字体差异、进程内隔离和大型响应缓存限制均有明确边界说明,足以获得高分。扣分集中在触发精度:工具参数和等待条件有定义,但快照引用的失效规则、导航前置条件、选择器歧义、重复提交防护以及工具级副作用约束没有充分说明。
README 的安装、快速开始、渲染、CDP、CLI、MCP、安全提示和集成结构清晰;命令、功能名和输出格式在各章节保持稳定,安装依赖与平台差异写得具体。完整 Apache-2.0 文本与 Cargo 元数据一致,已知限制也有专门说明。扣分是没有真正的 FAQ,示例虽多但故障排查不系统;有 Releases 链接、标签发布和“安全修复进入 main 后随下一版本发布”的路径,却未提供变更日志或版本兼容策略,Cargo 工作区版本仍为 0.1.0。维护渠道、安全响应时限和联系邮箱明确,但责任主体及发布者身份并未被给定证据验证。
输出可直接用于脚本和 Agent,包括 HTML、文本、链接、Markdown、原始二进制、NDJSON、JSON、截图、PDF、流式响应及 MCP 资源,且提供静默模式、文件输出和并行抓取,因此可用性证据充分。相对 Chromium 的独立 Rust/V8 引擎、低依赖部署和多协议兼容具有明确增量价值。扣分是内存、启动、加载速度和反检测等关键收益主要以营销表格呈现,基准实现位于未提供的外部仓库;静态材料无法核实实际正确性、性能、代理成本或维护成本,因此边际价值和成本收益不宜满分。
功能主张可部分追溯到 Cargo 特性、CI 构建矩阵、安全策略、命令参考和协议方法表,多份文件对依赖审计、构建组合、panic 行为及网络边界相互印证。扣分是核心实现源码、deny.toml、测试内容、发布工作流全貌和外部 benchmark 仓库未提供,性能、资源占用、兼容性和反检测数字无法在材料内闭环验证。文档能区分部分限制、计划事项与当前能力,但若干营销性断言和精确数字未同时给出方法、环境或不确定性。
- Obscura 在进程内执行任意网页的真实 JavaScript;处理敌对输入时应使用容器或虚拟机、受限网络和按用户隔离,不能把 V8 watchdog 当作安全沙箱。
- robots.txt 遵守默认关闭,隐身模式包含反指纹与追踪器阻断;部署者应明确审查目标网站条款、授权范围和自动化政策。
- MCP/CDP 工具能够导航、点击、填写和提交表单,但材料未显示逐操作确认或可逆事务机制;不要向高影响账户直接授予无人监督权限。
- 登录流程会维护 Cookie,但未给出完整的密钥存储、日志脱敏、Cookie 持久化和销毁政策;敏感会话应由外层系统隔离和清理。
- 性能、资源占用和反检测数字未能由所给文件独立验证;在采用前应针对实际站点、架构和安全边界自行评测。
这个 Agent 能做什么,适合哪些场景?
Obscura 是用 Rust 编写的开源无头浏览器引擎,面向网页抓取和智能体浏览器自动化。它直接嵌入 V8 执行页面 JavaScript,并通过 Chrome DevTools Protocol 提供可供 Puppeteer 和 Playwright 连接的服务。其独立渲染引擎能够生成 PNG 截图、实时页面录屏流和 PDF,而不必启动 Chromium。项目还提供单页 fetch、并行 scrape、CDP WebSocket 服务以及 stdio/HTTP 两种传输方式的 MCP 服务器。用户可以通过预编译二进制、Docker 镜像或 Rust 源码自行部署;官方发布包无需安装 Chrome、Node.js 或额外运行时依赖。
用户可用 obscura fetch <URL> 请求网页、运行页面脚本,并输出 HTML、正文、链接、Markdown、资源 URL 的 NDJSON 或原始响应体;还可等待加载条件、选择器或动态内容,并把结果写入文件。obscura scrape <URL...> 启动多个 worker 并发处理 URL,通过 JavaScript 表达式提取数据,输出 JSON 或文本。obscura serve --port 9222 暴露 CDP WebSocket 服务,使 puppeteer-core 的 puppeteer.connect 和 playwright-core 的 chromium.connectOverCDP 可以导航、查询 DOM、填写表单、维护 Cookie、拦截请求并生成截图或 PDF。渲染引擎处理 CSS 布局与绘制,支持视口及整页截图、CDP screencast 和栅格 PDF。启用 --stealth 后,它会随机化会话指纹、隐藏自动化特征并阻止列出的跟踪域名。obscura mcp 或 obscura mcp --http --port 8080 则向 MCP 客户端提供导航、快照、点击、填写、键盘输入、脚本求值、网络记录、控制台消息、截图和 PDF 等操作。
- 维护抓取管线的工程团队,可用
obscura scrape和多个 worker 并行处理一批页面,并将每页求值结果汇总为 JSON。 - 构建自主浏览任务的智能体开发者,可通过 MCP 工具完成导航、页面快照、点击、表单填写、键盘操作和 JavaScript 求值。
- 已有 Puppeteer 或 Playwright 自动化代码的团队,可让客户端通过 CDP 连接 Obscura,评估以较轻的自托管引擎替代 headless Chrome。
- 需要归档网页视觉结果的服务,可直接生成整页 PNG、CDP 页面录屏流或 PDF,而无需另行启动 Chromium。
- 处理容易触发反自动化或跟踪脚本的网站测试人员,可在构建了 stealth 功能的版本中启用指纹随机化和跟踪器阻止。
- 需要下载图片、JSON、JavaScript、CSS 或其他非 HTML 内容的采集程序,可使用
--dump original绕过 JavaScript/DOM 层并流式输出原始响应体。
这个 Agent 有哪些优点和局限?
- 不依赖 Chromium:项目直接嵌入 V8,并提供自己的 CSS 布局、绘制、截图、录屏和 PDF 渲染路径。
- 兼容多种调用边界:同一引擎同时提供 CLI、CDP、Puppeteer、Playwright,以及 stdio/HTTP MCP 接口。
- 部署选择完整:提供多个 Linux、macOS 和 Windows 发布包、约 57 MB 压缩的 distroless Docker 镜像,并支持源码构建。
- stealth 版本提供会话级 GPU、屏幕、Canvas、音频和电池指纹随机化,同时阻止 3,520 个跟踪域名。
- 支持原始二进制响应输出以及基于
Fetch.takeResponseBodyAsStream、IO.read和IO.close的分块下载路径。
- 独立渲染引擎仍在演进;长尾 CSS、部分 Web API、媒体播放、合成器效果和平台字体栅格化可能与 Chromium 不同。
- 虽然实现了供 Puppeteer 和 Playwright 使用的 CDP 功能集,但并未声称覆盖完整 CDP;迁移复杂 Chrome 自动化时需要验证所用 domain 和 method。
- 从源码首次构建约需五分钟,因为 V8 会从源码编译;stealth 构建还增加 BoringSSL、CMake、Clang 和 LLVM/libclang 工具链成本。
- 发布归档中的并行抓取依赖
obscura-worker与主二进制位于同一目录,打包或部署时必须保留这层约束。 - 页面脚本执行默认限制为 30 秒;较重的 React、Vue 或 Angular 单页应用可能需要调整
OBSCURA_SCRIPT_DEADLINE_MS和客户端导航超时。 - 超过默认 2 MiB 网络响应体缓存限制的内容不会被保留;计划流式读取大文件时必须提高
OBSCURA_NETWORK_BODY_BUFFER_BYTES。
如何安装或部署这个 Agent?
最直接的方式是下载对应平台的发布包。例如 Linux x86_64:
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-linux.tar.gz
tar xzf obscura-x86_64-linux.tar.gz
./obscura fetch https://example.com --eval "document.title"Linux ARM64、macOS Apple Silicon、macOS Intel 和 Windows 也有对应归档;Arch Linux 可运行 yay -S obscura-browser,NixOS 可运行 nix-env -iA nixpkgs.obscura。发布归档同时包含 obscura 与 obscura-worker,使用并行 scrape 时应将两者放在同一目录。也可通过 Docker 启动:docker run -d --name obscura -p 127.0.0.1:9222:9222 h4ckf0r0day/obscura。源码构建要求 Rust 1.75+;带渲染的命令为 cargo build --release -p obscura-cli --bins --features render,渲染加 stealth 使用 --features render,stealth。stealth 构建还需要 CMake、Clang 以及 libclang/LLVM 开发库。上述本地调用不要求凭据,但目标网站或代理可能有各自的认证要求。
如何使用这个 Agent?
单页验证可运行:obscura fetch https://example.com --dump text。需要截图时运行:obscura fetch https://example.com --screenshot page.png。并行抓取示例:obscura scrape url1 url2 url3 --concurrency 25 --eval "document.querySelector('h1').textContent" --format json。要接入 Puppeteer 或 Playwright,先执行 obscura serve --port 9222,然后分别使用 puppeteer.connect({ browserWSEndpoint: 'ws://127.0.0.1:9222/devtools/browser' }) 或 chromium.connectOverCDP({ endpointURL: 'ws://127.0.0.1:9222' })。Claude Desktop 可配置 MCP 子进程:{"mcpServers":{"obscura":{"command":"obscura","args":["mcp"]}}};其他支持 HTTP MCP 的客户端可连接运行 obscura mcp --http --port 8080 后的 http://127.0.0.1:8080/mcp。访问网页需要网络;截图、PDF、下载和输出文件需要写入文件系统。
这个 Agent 与同类方案有什么区别?
项目明确将 Obscura 定位为 headless Chrome 的替代方案。README 给出的对比值为:Obscura 约占 30 MB 内存、二进制约 70 MB、页面加载约 85 ms、启动近乎即时,并内置 anti-detect;对应的 headless Chrome 数值为 200+ MB、300+ MB、约 500 ms 和约 2 秒,且表中未列出内置 anti-detect。两者都可用于 Puppeteer 和 Playwright。采用前仍应在目标站点上验证兼容性,因为 Obscura 的独立渲染及 Web API 覆盖范围可能与 Chromium 不同。
常见问题
是否必须安装 Chrome 或 Node.js?
puppeteer-core 或 playwright-core 包。开源版本会因 Obscura Cloud 而删减功能吗?
它能完全复现 Chromium 的页面吗?
遇到复杂页面超时或 V8 内存不足怎么办?
--timeout 调整导航上限,用 OBSCURA_SCRIPT_DEADLINE_MS 增加页面脚本执行预算,并通过 --v8-flags "--max-old-space-size=4096" 提高 V8 堆上限。CDP 客户端的导航超时应与脚本预算配套调整。stealth 模式是否仍能截图和导出 PDF?
render,stealth 功能构建的版本包含完整渲染引擎,运行时开启 --stealth 不会移除截图、screencast、PDF、CDP 或 MCP 功能。