当前位置: 首页 > news >正文

Obscura:15k Star 的 Rust 无头浏览器,内存只有 Chrome 的 1/7

Obscura:15k Star 的 Rust 无头浏览器,内存只有 Chrome 的 1/7

先收藏,回头一定用得上。

最近在 GitHub Trending 上看到一个项目,两眼放光——一个用 Rust 从零写的无头浏览器,内存占用只有 Chrome 的 1/7,页面加载速度快 6-10 倍,还内置了反指纹检测和 AI Agent 的 MCP 协议支持。两个月 15k Star,增长速度堪比当年的 ripgrep。

这个项目叫 Obscura

本文提纲

  1. Obscura 是什么
  2. 为什么值得关注——性能对比
  3. 架构设计:8 个 Crate 的模块化布局
  4. 隐身模式:反指纹检测的硬核实现
  5. AI Agent 集成:内置 MCP Server
  6. 快速上手
  7. 适用场景和局限

Obscura 是什么

一句话:用 Rust 写的、面向 AI Agent 和 Web Scraping 的开源无头浏览器

GitHub 地址:h4ckf0r0day/obscura

核心卖点:

  • V8 引擎:不是模拟,不是阉割,是真正的 V8 JavaScript 执行环境
  • CDP 协议:完整实现 Chrome DevTools Protocol,直接兼容 Puppeteer 和 Playwright
  • 零依赖:不需要装 Chrome,不需要装 Node.js,一个二进制文件搞定
  • Apache 2.0 开源

关键数据:

指标 数值
Star 15.5k
Fork 1,000
贡献者 31+
最新版本 v0.1.8
协议 Apache-2.0
语言 Rust (99.7%)

为什么值得关注——性能对比

这才是最炸裂的部分。Obscura 官方提供了和 Headless Chrome 的基准测试对比:

指标 Obscura Headless Chrome
内存占用 30 MB 200+ MB
二进制体积 70 MB 300+ MB
静态页面加载 51 ms ~500 ms
JS + XHR 页面 84 ms ~800 ms
动态渲染页面 78 ms ~700 ms
启动时间 即时 ~2s

快了不是一点半点。特别是内存,30MB 对比 200MB+,如果你跑 100 个并发爬虫实例,差距就是 3GB vs 20GB。

这个性能差距的来源很直接:Obscura 用 Rust 写浏览器内核,没有 Chromium 那套庞大的渲染管线和多进程架构。它专注于执行 JavaScript 和提取数据,不需要把像素画到屏幕上。

架构设计:8 个 Crate 的模块化布局

Obscura 的 Rust Workspace 拆成了 8 个独立的 crate,每个负责一块核心能力:

MERMAID_BLOCK_0

这种设计意味着每个模块可以独立测试和替换。比如你不需要 MCP 功能,就只引入核心的 browser 和 cdp crate。

CLI 提供了四个主要命令:

  • obscura serve — 启动 CDP WebSocket 服务器,让 Puppeteer/Playwright 连接
  • obscura fetch <URL> — 抓取并渲染单个页面
  • obscura scrape <URLs...> — 并行抓取多个 URL(支持并发 worker 配置)
  • obscura mcp — 启动 MCP Server,给 AI Agent 用

隐身模式:反指纹检测的硬核实现

做爬虫的人都知道,被反爬检测到有多头疼。Obscura 直接把反检测做进了浏览器内核,不需要你额外装插件或写 workaround。

编译时加一个 feature flag 就行:

cargo build --features stealth

隐身模式的能力清单:

  • 屏蔽 3,520 个追踪域名:内置黑名单,从网络层直接拦截
  • navigator.webdriver = undefined:最基础也最关键的一步
  • Canvas 指纹伪造:每次会话随机化 canvas 输出
  • Audio 指纹伪造:随机化 AudioContext 指纹
  • Battery API 伪造:模拟正常的电池状态
  • 原生函数遮蔽:隐藏 native code 字符串特征
  • 每个会话独立指纹:不同 tab 之间指纹互不关联

这些不是外挂式的修改,而是直接在浏览器引擎层面实现的。相比用 puppeteer-extra-plugin-stealth 这种 JS 层面的 patch,可靠性高了一个档次。

AI Agent 集成:内置 MCP Server

这是 Obscura 区别于所有其他无头浏览器的地方。

obscura mcp 命令启动一个 MCP (Model Context Protocol) Server,支持 stdio 和 HTTP 两种传输方式。Claude Desktop、Cursor 等 AI 工具可以直接连接。

提供的 MCP 工具:

工具名 功能
browser_navigate 导航到 URL
browser_snapshot 获取页面快照
browser_click 点击元素
browser_fill 填充表单
browser_type 输入文字
browser_press_key 按键
browser_select_option 选择下拉选项
browser_evaluate 执行 JavaScript
browser_wait_for 等待条件满足
browser_network_requests 获取网络请求
browser_console_messages 获取控制台消息
browser_close 关闭浏览器

看出来了吗?这套工具和 Hermes Agent 的 browser 工具集几乎一一对应。这意味着你现有的 AI Agent 工作流几乎不用改代码,把底层换成 Obscura 就行。

Docker 一行搞定:

docker run -p 9222:9222 ghcr.io/h4ckf0r0day/obscura:latest serve

镜像只有 57MB,多架构支持(amd64 + arm64),基于 distroless,安全且轻量。

快速上手

安装(Arch Linux):

yay -S obscura-bin

或者直接下载二进制:

# Linux x86_64
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-linux-amd64
chmod +x obscura-linux-amd64
sudo mv obscura-linux-amd64 /usr/local/bin/obscura

抓取一个页面:

obscura fetch https://example.com --format markdown

输出格式支持:HTML、纯文本、链接列表、Markdown、资源列表(NDJSON)、原始二进制。

并行爬取:

obscura scrape https://example.com https://example.org --workers 10 --format markdown

配合 Puppeteer 使用:

# 启动 CDP 服务
obscura serve --port 9222
// Puppeteer 代码,改一行连接地址就行
const browser = await puppeteer.connect({
  browserURL: 'http://localhost:9222'
});

适用场景和局限

Obscura 特别适合:

  • 大规模 Web Scraping,需要控制内存和并发成本
  • AI Agent 的浏览器自动化,特别是需要 MCP 协议的场景
  • 需要绕过反爬检测的数据采集任务
  • CI/CD 环境中的轻量级浏览器测试(不需要装 Chrome)
  • 嵌入式场景,在资源受限的机器上跑浏览器

但需要注意:

  • 版本号还在 v0.1.x,API 不稳定,生产环境慎用
  • 没有完整的 GUI 渲染能力——它不是用来"看"网页的,是用来"跑"网页的
  • 和完整的 Chromium 相比,某些复杂的 CSS 布局和 WebGL 可能不支持
  • 社区还比较年轻,遇到问题可能需要自己看源码

Obscura Cloud(托管版本)在开发中,提供住宅代理池和托管基础设施,目前可以排队等邀请。

项目地址:github.com/h4ckf0r0day/obscura

试过了?评论区说说你的体验。还没试?收藏起来周末折腾。


作者: itech001
来源: 公众号:AI人工智能时代
网站: https://www.theaiera.cn/
每日分享最前沿的AI新闻资讯和技术研究。

本文首发于 AI人工智能时代,转载请注明出处。

http://www.jsqmd.com/news/997703/

相关文章:

  • CARLA 地图与导航深度解析:从 OpenDRIVE 到 Waypoint 的自动驾驶仿真实践
  • AI 音乐视频正在改变音乐行业:从创作到传播的全新革命 | AI Music Video API
  • 碧蓝航线自动化助手:如何用AzurLaneAutoScript实现24小时无人值守游戏管理
  • 计算机Java毕设实战-基于 SpringBoot 的智慧养老中心运营管理系统设计基于SpringBoot的养老中心管理系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 口腔修复方式的技术对比与长期效果分析:种植体vs活动义齿
  • 蓝牙智能门锁:从电子锁到全屋智能入口的技术演进
  • 如何用Python代码彻底解放剪映重复工作:3步实现自动化视频剪辑
  • 从热阻计算到散热器选型:PowerPC 604处理器热管理实战解析
  • 别再只懂‘发布/订阅’了:深入理解MQTT协议中的会话、遗嘱和三种QoS级别
  • 国产明渠流量计十大品牌排名 - 仪表人小余
  • 告别工厂写号:深入解读Android 13 RKP如何重塑设备密钥管理流程
  • VC6开发的文本空格与空行清理工具,含源码、工程及可执行文件
  • 主成分分析PCA原理与实战:从数学本质到业务解读
  • 2026年最新安康市口碑首选;黄金回收铂金回收白银回收彩金回收实力权威靠谱门店TOP5推荐及咨询方式 - 前途无量YY
  • 面向业务落地的情绪识别七步工作法
  • 2026年最新安庆市口碑首选;黄金回收铂金回收白银回收彩金回收实力权威靠谱门店TOP5推荐及咨询方式 - 前途无量YY
  • 基于深度学习YOLOv12的安全帽防护服识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • Android毕业设计-基于鸿蒙系统的校园学生考勤管理系统设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 智能音箱配套连接器 线束常见问题权威解答
  • IINA:3个简单步骤让Mac视频播放体验升级到专业级
  • 深入拆解非对称Doherty功放设计:从连续J/F-1模式理论到ADS谐波阻抗控制实战
  • 北欧旅游哪家旅行社靠谱不踩坑?游玩体验感好的北欧路线旅行社推荐 - 品牌2026
  • 别再只调包了!手把手拆解SVM图像分类:从颜色特征工程到模型评估的完整思考
  • 企业AI落地难?用MuleSoft+LangChain构建合规可运维的AI编排中枢
  • 英雄联盟智能助手League Akari完全指南:从安装到高级使用的终极教程
  • 2026年最新安顺市口碑首选;黄金回收铂金回收白银回收彩金回收实力权威靠谱门店TOP5推荐及咨询方式 - 前途无量YY
  • 国产壁挂式超声波流量计十大品牌排名 - 仪表人小余
  • Forge Skill ——锻造任何领域的思维工具
  • 如何高效使用BepInEx游戏插件框架:专业开发者的实用指南
  • 196.手机核心分区作用大全|boot/system/vendor/vbmeta/modem分区修复教程