- Obscura là headless browser mã nguồn mở viết từ đầu bằng Rust, chạy V8 thật, tương thích CDP, nhẹ hơn Chrome 6–7 lần và có stealth mode built-in.
- Drop-in replacement cho Puppeteer / Playwright.
TL;DR
Obscura là một headless browser engine mã nguồn mở viết 100% bằng Rust, chạy JavaScript thật bằng V8 và implement Chrome DevTools Protocol đầy đủ. Kết quả: dùng 30 MB RAM thay vì 200+ MB, binary 70 MB thay vì 300+ MB, page load 85 ms thay vì ~500 ms, startup gần như instant. Kèm theo đó là stealth mode built-in — fingerprint randomization theo session, chặn 3.520 tracker domain, navigator.webdriver được mask y như Chrome thật. Tác giả h4ckf0r0day phát hành v0.1.0 ngày 13/04/2026 dưới giấy phép Apache-2.0, và repo đã cán mốc ~1.800 star chỉ sau hơn một tuần.

Có gì mới
Phần lớn "headless browser cho AI" trên thị trường thực ra vẫn là Chromium được wrap lại — Puppeteer, Playwright, Browserless, Steel. Nghĩa là bạn vẫn phải tải về hơn 300 MB binary Chromium, vẫn chịu toàn bộ multi-process overhead, và stealth vẫn phải bolt-on qua plugin bên thứ ba như puppeteer-extra-plugin-stealth.
Obscura đi một đường hoàn toàn khác: viết lại engine từ đầu bằng Rust, nhúng V8 để chạy JS thật, và dùng chính CDP (Chrome DevTools Protocol) làm giao tiếp. Từ phía client nhìn vào, nó là Chrome. Puppeteer hay Playwright chỉ cần đổi endpoint ws://127.0.0.1:9222/devtools/browser là chạy — zero code change.
Single binary, không cần Node, không cần Chromium, không cần dependency gì. Tải về là chạy.
Vì sao chuyện này quan trọng
Thời điểm Obscura xuất hiện không ngẫu nhiên. 2026 là năm của AI agent ở quy mô thật — research agent, browsing agent, autonomous scraper — và giới hạn lớn nhất của chúng không phải model, mà là chi phí vận hành browser. Chạy 100 headless Chrome song song tiêu 20+ GB RAM. Lambda và Cloudflare Workers cold-start chậm vì phải kéo 300 MB Chromium. Và bot detection ngày càng khắc nghiệt với Cloudflare, DataDome, PerimeterX.
Một engine 30 MB RAM, startup instant, stealth built-in đặt lại cả ba ràng buộc đó. Bạn có thể chạy 30 con Obscura trong dung lượng RAM của 1 con Chrome, cold-start trong serverless không còn là vấn đề, và không phải duy trì chuỗi plugin stealth nữa.
Thông số kỹ thuật
| Metric | Obscura | Headless Chrome |
|---|---|---|
| Memory | 30 MB | 200+ MB |
| Binary size | 70 MB | 300+ MB |
| Page load | 85 ms | ~500 ms |
| Startup | Instant | ~2 s |
| Anti-detect | Built-in | None |
Ngoài các con số trên, Obscura ship:
- Hỗ trợ CDP đầy đủ: Target, Page, Runtime, DOM, Network, Fetch, Storage, Input, cộng thêm một domain tuỳ biến
LPconvert DOM sang Markdown — rõ ràng thiết kế sẵn cho LLM. - Binary single file cho Linux x86_64, macOS (Intel + Apple Silicon), Windows. Không có installer, không dependency.
- CLI 3 subcommand chính:
fetch(một URL),serve(CDP WebSocket),scrape(song song, concurrency tuỳ chọn, default 10, demo chạy 25 trên máy thường). - Mã nguồn 100% Rust, build từ source cần Rust 1.75+ và mất ~5 phút cho lần đầu vì V8 compile kèm.
Stealth mode "brutal" thế nào
- Per-session fingerprint randomization: GPU, screen, canvas, audio, battery — mỗi session một bộ khác nhau.
- 3.520 tracker domain bị chặn mặc định (analytics, ads, telemetry, fingerprinting).
navigator.webdriver = undefinedy như Chrome thật (không phảifalse).navigator.userAgentDatagiả Chrome 145 với đầy đủ high-entropy values.- Native function masking: detector không phát hiện được wrapper vì các function trông như native code C++.
Bật stealth chỉ bằng flag --stealth khi chạy serve, hoặc build với --features stealth.
Drop-in replacement cho Puppeteer & Playwright
Đây là phần ngọt nhất. Code Puppeteer cũ của bạn, chỉ cần đổi endpoint:
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');
const stories = await page.evaluate(() =>
Array.from(document.querySelectorAll('.titleline > a'))
.map(a => ({ title: a.textContent, url: a.href }))
);
console.log(stories);Playwright thì dùng chromium.connectOverCDP('ws://127.0.0.1:9222'). Cũng zero code change phần business logic.
Use case thực tế
- AI agent browsing ở quy mô: research agent, browse-and-summarize agent. RAM 30 MB cho phép chạy hàng chục agent song song mà không cần fleet GPU box.
- Scraping stealth-heavy: site có Cloudflare / DataDome / PerimeterX, nơi
puppeteer-extra-plugin-stealthđã bắt đầu bị nhận diện. - Serverless scraping: AWS Lambda, Cloudflare Workers subprocess, GitHub Actions — nơi 300 MB Chromium là deal-breaker.
- Price monitoring, SEO audit, lead enrichment: bất cứ pipeline nào đang dùng Puppeteer/Playwright đều migrate được mà không đụng code logic.
Hạn chế & giá
Giá: miễn phí hoàn toàn, Apache-2.0. Không có bản cloud, không có tier trả phí.
Hạn chế:
- v0.1.0 là bản đầu tiên — đã có 13 open issue ngay trong tuần đầu. Còn rough ở nhiều góc.
- Không phải mọi domain CDP đều implement. Các feature Puppeteer nâng cao như tracing, coverage có thể chưa chạy.
- Không định vị là browser "general-purpose" — WebRTC, extension, complex multimedia không phải ưu tiên.
- Windows binary có nhưng chưa battle-test bằng Linux/macOS theo wording README.
Điều sắp tới
Roadmap chưa công khai hoàn toàn, nhưng tín hiệu từ repo rất rõ: flag --obey-robots cho thấy họ tính tới politeness; domain LP (DOM→Markdown) cho thấy output LLM-native là first-class citizen; và các CLI subcommand được thiết kế sẵn cho pipeline concurrency cao. Những thứ đáng chờ: proxy rotation built-in, session pool, mobile Chrome UA profile, và mở rộng CDP coverage tới đủ 100% để Playwright test suite chạy xanh.
Nếu bạn đang chạy agent hoặc scraping nghiêm túc ở quy mô, đây là repo đáng theo dõi sát — và thử ngay với một endpoint cũ để xem số liệu RAM / latency trên workload của chính bạn.


