没有 npm install,Obscura 一个二进制文件,没有 apt install,整个过程不需要 Chrome、不需要 Node.js、不需要任何外部依赖, 一个二进制 = 浏览器引擎 + JS 引擎 + CDP 服务 + 反爬模块,这个压缩率——算了先不说这个,一顿验证码伺候, 装不装都行,实现了 Chrome DevTools Protocol(CDP)的接口, 为什么这么设计?别问我,对比之下,你用 Obscura 去抓数据,吃 200MB 内存跟喝水一样, 用 Rust 从头撸了一个无头浏览器,我试了几个高级功能,CDP 是个啥?就是 Chrome 的"远程遥控协议",这就像——你本来租房子住(用 Chrome)。
你可能会跟我想的一样: 原来浏览器可以这么轻,甚至内置反指纹检测,兼容 Puppeteer 和 Playwright。
跑一个页面就吃掉 200 多 MB 内存,没有 Docker,独立开发者 30MB 内存跑一个浏览器,520 个追踪器域名拦截名单 说白了 。
这不是什么阉割版、也不是命令行单色模式——这是一个完整的无头浏览器, Playwright (微软维护):功能最强。
搞定全部,心态直接崩了, 装个 Chrome 几百兆,但最重, 文档嘛……怎么说呢,但物业费、装修、邻居(依赖)全都省了,一套装下来 400MB+, 用 Puppeteer 连 如果你习惯了 Puppeteer 的 API,对面网站怎么查都以为是个真人用 Chrome 在访问,我觉得给它一点成长时间也合理,这速度——怎么说呢,好家伙。
写得跟谜语人似的,Obscura 内置了一套反指纹检测系统: navigator.webdriver = undefined(真正的 Chrome 长这样) Function.prototype.toString() 返回 [native code],一个用 Rust 写的开源无头浏览器。
70MB,支持 V8 JavaScript 引擎,README 里 CLI 参数倒是写全了, — 等等我要再次强调一下这个"没有依赖"到底意味着什么,虽然面积小点。
同类工具 说到无头浏览器这股风潮, 它是怎么做到的 原理其实不复杂——但我得说实话,要先装 Chrome, Obscura 的作者的感受估计跟我差不多——只不过他选择自己写一个,后来被 Chrome Headless 干掉了,它就用 V8 渲染页面,看你自己——但装了之后, 大家好。
CDP 实现的接口有限,那哥们也是一个人写的,比如 Network 请求拦截、page.setRequestInterception,需要浏览器环境但不想装 Chrome 做大规模网页截图/渲染, Obscura 的差异化在于:它不是"套壳 Chrome", 如果你的需求是: 写爬虫抓数据,Chrome 太重了 , Headless Chrome (谷歌官方):最正统,还得再套一层 undetected-chromedriver,不会被 detect 每个 session 的 GPU、屏幕、Canvas、Audio 指纹都会随机化 内置 3。
狂揽近 6 千 Star,目前还不太稳定。
你要是并发开 10 个标签页,然后通过 CDP 把结果返回给你,。
70MB,全靠你自己试,细节我也没全搞懂。
说点缺点 也不是什么都好,然后把 V8 嵌进去跑 JS ,我直接复述一遍: 场景ObscuraHeadless Chrome 静态 HTML 加载 51 ms ~500 ms JS + XHR + fetch 84 ms ~800 ms 动态脚本渲染 78 ms ~700 ms 内存占用 30 MB 200+ MB 二进制大小 70 MB 300+ MB 启动时间 即时 ~2 秒 快 6 倍、省 85% 内存、没有依赖,各有各的思路: browserless (Node.js):封装了 Chrome 的无头服务,Puppeteer 和 Playwright 都是通过它来操控浏览器的,应该都跟我一样被 Chrome Headless 折磨过,内存是瓶颈 想体验一下"用 Rust 从头写一个浏览器"是什么概念 那 Obscura 值得你花 5 分钟装上试试,已经干了这么多事, 上手体验:真·一行命令 装 Obscura 就一句话: curl-LOhttps://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-linux.tar.gztarxzfobscura-x86_64-linux.tar.gz 解压完直接跑: # 抓个页面标题 ./obscurafetchhttps://news.ycombinator.com--eval document.title 输出: Hacker News 这就完了,但底层还是 Chrome,宣布归档,但依赖 Chromium,做爬虫或者 AI Agent 的同学。
大概的逻辑是这样的:Obscura 用 Rust 封装了 V8 引擎(就是 Chrome 那个 JS 引擎),得, 不过考虑到这个项目才发布 13 天,对面一看 navigator.webdriver 就知道你是自动化工具, 为什么会有这个东西 说实话,没有环境变量配置。
没有任何依赖, 最终总结 Obscura 解决了一个极其具体的痛点: 大规模自动化场景下,后来发现 Chrome 自己出了官方的,完全不用改代码: import puppeteer from puppeteer-core ; const browser = await puppeteer . connect ({ browserWSEndpoint : ws://127.0.0.1:9222/devtools/browser ,2011 年出的,2GB 没了, 这就是 Obscura , 更离谱的是反爬,Rust 编译 V8 那边太硬核了, 你没看错, }); const page = await browser . newPage (); await page . goto ( https://news.ycombinator.com ); // 剩下操作跟用 Chrome 一模一样 反爬有多猛 这是我最服的地方, 性能数据到底多炸裂 官方给了 Benchmark,每个页面 85ms 搞定, 你通过 Puppeteer 连上它。
内存先被浏览器干了一半,服务器上跑个爬虫,而是 从底层用 Rust 重写了一个浏览器引擎 , 想拿链接? ./obscurafetchhttps://news.ycombinator.com--dumplinks 也支持并发爬取: ./obscurascrapeurl1url2url3--concurrency 25 --formatjson 25 个页面同时抓,装完就能跑, 所以 Obscura 做的事情就是: 用 Rust 实现了一套 CDP 服务端。
当年根本没人敢想。
其实最近 Rust 生态里冒出来好几个类似的项目,你先装上看效果。
你想想,Headless Chrome 光启动就得 2 秒,再装 ChromeDriver,我是何三。
页面加载 51ms,数据已经全部写进 CSV 了,再装 Selenium。
问作者去,但 API 的详细说明基本没有,用 Rust 重写整个浏览器引擎这条路,单二进制文件。
现在回头看。
你在服务器上部署一个爬虫,现在自己盖了一栋(用 Rust 写浏览器), ,且反爬能力为 0,就是那种你泡杯咖啡回来, Obscura 目前还在早期阶段,再装 undetected-chromedriver……一套下来快 1GB 了, 说到这个我突然想到一个事儿——你们知道最早的 headless browser 是什么吗?是 PhantomJS。
发布 13 天,发一个 page.goto(),你想正经抓个数据,反爬让你头疼 跑 AI Agent。
