编程 Obscura:30MB Rust无头浏览器,AI Agent与爬虫的隐形核武器

2026-05-18 06:40:33 +0800 CST views 11

Obscura:30MB Rust 无头浏览器,AI Agent 与爬虫的隐形核武器

标签: 开源项目 / Rust / 无头浏览器 / AI Agent / 反爬
原文: 微信公众号「如此才是」https://mp.weixin.qq.com/s/NUEohrYRxKTb2QJ6eHQ-yg
GitHub: https://github.com/h4ckf0r0day/obscura


核心亮点

用纯 Rust 打造的轻量级无头浏览器引擎,专为 AI Agent 自动化和网页抓取设计。单二进制、无 Chrome、无 Node.js、无任何外部依赖,能真实运行 V8 JavaScript、完整支持 CDP,直接作为 Puppeteer 和 Playwright 的无缝替代品。


性能碾压 Chrome

指标ObscuraChrome
内存占用30MB200MB+
二进制体积70MB300MB+
页面加载85ms~500ms
启动速度瞬时~2s
反检测内置 + 3520 tracker 阻断

三大核心能力

1. CLI 命令行工具

# 单页抓取(支持真实 JS 渲染、自定义 eval、等待条件)
obscura fetch <URL> --dump html --wait-until networkidle0 --stealth

# 多 URL 并行抓取
obscura scrape <URL1> <URL2> --concurrency 10 --format json --stealth

# 启动 CDP WebSocket 服务器
obscura serve --port 9222 --stealth --proxy socks5://127.0.0.1:1080

2. Stealth Mode(反检测模式)

--stealthcargo build --features stealth 开启:

  • 指纹随机化:每次会话随机化 GPU、Screen、Canvas、Audio、Battery 指纹
  • 真实 Chrome 模拟:navigator.userAgentData 使用 Chrome 145 高熵值;event.isTrusted=true;Function.prototype.toString() 返回 [native code];navigator.webdriver=undefined
  • Tracker Blocking:自动阻断 3520 个 analytics/ads/telemetry/fingerprinting 域名

3. CDP 全兼容

直接用 Puppeteer-core 或 playwright-core 连接 ws://127.0.0.1:9222

// Puppeteer 示例
import puppeteer from 'puppeteer-core';
const browser = await puppeteer.connect({
  browserWSEndpoint: 'ws://127.0.0.1:9222/devtools/browser'
});
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com');

已实现的 CDP Domain:Target、Page、Runtime、DOM、Network、Fetch、Storage、Input、LP(getMarkdown)


安装方法

预编译二进制(推荐)

# macOS Apple Silicon
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-macos.tar.gz
tar xzf obscura-aarch64-macos.tar.gz

# 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

从源码安装(含 Stealth)

git clone https://github.com/h4ckf0r0day/obscura.git
cd obscura
cargo build --release --features stealth
# 二进制在 target/release/obscura

要求:Rust 1.75+,首次构建约 5 分钟(V8 从源码编译,后续缓存)。


技术架构:6 个 Crate 极致模块化

Crate职责核心依赖
obscura-domHTML/CSS/DOM 解析html5ever + selectors + cssparser(Servo 风格)
obscura-js真实 V8 JS 执行deno_core 0.350(直接嵌入 V8,非模拟)
obscura-net网络层 + tracker 阻断reqwest + wreq(stealth)
obscura-browser核心胶水层(Page/Context/Lifecycle)协调 DOM + JS + Net
obscura-cdpChrome DevTools Protocoltokio-tungstenite WebSocket
obscura-cli命令行入口clap

关键实现原理

  1. 真实 JS 执行:deno_core 直接嵌入 V8,无需完整 Chromium 渲染引擎 → 极低内存
  2. Stealth 实现:编译时 feature 切换,运行时 per-session 随机化 + 属性覆写 + 域名黑名单
  3. 性能极致:无 Blink、无桌面特性、纯 Rust 零成本抽象 + Tokio 异步 + Servo 解析器
  4. CDP 兼容:完全复用 Chrome 协议语义,Puppeteer/Playwright 零修改接入

实用功能

功能参数
代理--proxy(HTTP/SOCKS5)
robots.txt--obey-robots
等待条件--wait-until(load/domcontentloaded/networkidle0)
多进程并行--workers N
表单/登录/302原生支持(真实浏览器行为)
Cookie 维持原生支持
DOM 转 MarkdownCDP LP domain getMarkdown
请求拦截Fetch domain continueRequest/fulfillRequest/failRequest

Obscura vs Headless Chrome

维度ObscuraHeadless Chrome
体积70MB300MB+
内存30MB200MB+
启动瞬时~2s
反检测内置 Stealth + Tracker Block无,指纹明显
JS 引擎真实 V8(deno_core)真实 V8
CDP 兼容主要 Domain 已实现完整
Puppeteer/Playwright零修改接入原生支持

适用场景

场景说明
AI Agent 自动化轻量级浏览器后端,低资源高并发
大规模爬虫并行抓取 + 反检测 + tracker 阻断
低资源环境30MB 内存即可运行
反爬对抗Stealth Mode + 指纹随机化

写在最后

Obscura 用 Rust + deno_core + Servo 解析器的组合,把无头浏览器做到了极致轻量。30MB 内存、85ms 加载、内置反检测——这对 AI Agent 和大规模爬虫来说,是目前最务实的选择。

不过需要注意:CDP 并非 100% 覆盖 Chrome 全部 Domain,复杂场景(如高级渲染、WebGL)可能仍有差距。但作为抓取和自动化引擎,Obscura 已经足够强大。


本文整理自微信公众号「如此才是」,原文链接:https://mp.weixin.qq.com/s/NUEohrYRxKTb2QJ6eHQ-yg
GitHub 项目地址:https://github.com/h4ckf0r0day/obscura

复制全文 生成海报 开源项目 Rust 无头浏览器 AI Agent 反爬

推荐文章

File 和 Blob 的区别
2024-11-18 23:11:46 +0800 CST
WebSQL数据库:HTML5的非标准伴侣
2024-11-18 22:44:20 +0800 CST
利用Python构建语音助手
2024-11-19 04:24:50 +0800 CST
2024年公司官方网站建设费用解析
2024-11-18 20:21:19 +0800 CST
服务器购买推荐
2024-11-18 23:48:02 +0800 CST
Vue3中的JSX有什么不同?
2024-11-18 16:18:49 +0800 CST
deepcopy一个Go语言的深拷贝工具库
2024-11-18 18:17:40 +0800 CST
nginx反向代理
2024-11-18 20:44:14 +0800 CST
用 Rust 构建一个 WebSocket 服务器
2024-11-19 10:08:22 +0800 CST
推荐几个前端常用的工具网站
2024-11-19 07:58:08 +0800 CST
Vue 中如何处理父子组件通信?
2024-11-17 04:35:13 +0800 CST
程序员茄子在线接单