Deep Dive: Obscura - Headless Browser สำหรับ AI Agent ที่เขียนด้วย Rust

เบากว่า Chrome 6 เท่า เร็วกว่า 8-10 เท่า Stealth Built-in

Obscura - Headless Browser สำหรับ AI Agent ที่เขียนด้วย Rust

Obscura Header
Obscura Header

Obscura คืออะไร?

Obscura เป็น headless browser engine โอเพ่นซอร์สที่เขียนด้วย Rust ออกแบบมาเฉพาะสำหรับ AI agent และ web scraping โดยเฉพาะ ตัวมันรัน JavaScript จริงผ่าน V8 (via Deno runtime), รองรับ Chrome DevTools Protocol (CDP) และที่สำคัญที่สุด - มันเป็น drop-in replacement สำหรับ headless Chrome กับ Puppeteer และ Playwright

เป้าหมายคือ: เบา ลอบ และเร็ว โดยไม่ต้องติดตั้ง Chrome เลย

เปรียบเทียบกับ Headless Chrome

Obscura

Headless Chrome

RAM ต่อ instance

30 MB

200+ MB

ขนาด binary

70 MB

300+ MB

Anti-detection

built-in

ต้องใช้ plugin เสริม

Page load (static)

51 ms

~500 ms

Page load (JS+XHR)

84 ms

~800 ms

Page load (dynamic)

78 ms

~700 ms

Puppeteer/Playwright

✅

✅

ต้องติดตั้ง Chrome?

ไม่

ใช่

ต่างกันแบบชัดเจน - ใช้ RAM น้อยกว่า 6-7 เท่า และเร็วกว่า 8-10 เท่า

สถาปัตยกรรม (Architecture)

Obscura แบ่งเป็น 6 crates ใน Cargo workspace:

  • obscura-cli - CLI entry point (binary obscura + obscura-worker)

  • obscura-browser - Core browser orchestration (page loading, navigation, rendering)

  • obscura-cdp - Chrome DevTools Protocol server (WebSocket, CDP messages)

  • obscura-dom - HTML/DOM parsing ใช้ html5ever + CSS selector matching จาก Servo

  • obscura-js - JavaScript runtime ผ่าน V8 ด้วย deno_core 0.350

  • obscura-net - HTTP networking layer + stealth features ใช้ reqwest/wreq

ส่วนที่น่าสนใจคือ obscura-dom ใช้ parser จาก Mozilla Servo project โดยตรง (html5ever, selectors crate) และ obscura-js ฝัง V8 ผ่าน Deno core - ไม่ใช่ headless browser แบบจำลอง แต่รัน JS จริงบน V8 engine

Stealth Mode - จุดเด่นที่สุด

สำหรับคนทำ scraping หรือ AI agent ที่ต้อง browse web โดยไม่โดนจับ นี่คือ killer feature:

Anti-fingerprinting

  • สุ่ม GPU, screen, canvas, audio, battery fingerprint ทุก session

  • สร้าง navigator.userAgentData ที่ดูจริง (Chrome 145, high-entropy values)

  • event.isTrusted = true สำหรับ dispatched events

  • ซ่อน internal properties (ผ่าน Object.keys(window) ไม่เห็น)

  • Native function masking (Function.prototype.toString() return [native code])

  • navigator.webdriver = undefined

Tracker Blocking

  • บล็อก tracking domains ถึง 3,520 โดเมน ครอบคลุม analytics, ads, telemetry, fingerprinting scripts

นั่นหมายความว่าไม่ต้องติดตั้ง puppeteer-extra-plugin-stealth แยก - มัน built-in มาให้เลย

CDP API ที่รองรับ

Obscura รองรับ CDP domains เหล่านี้:

  • Target - จัดการ browser targets/sessions

  • Page - navigation, screenshot, DOM events

  • Runtime - JS evaluation, console API

  • DOM - DOM tree inspection

  • Network - request/response monitoring

  • Fetch - network interception (enable, continueRequest, fulfillRequest, failRequest)

  • Storage - cookies, local storage

  • Input - mouse/keyboard simulation

  • LP (custom) - LP.getMarkdown - แปลง DOM เป็น Markdown โดยเฉพาะสำหรับ AI/LLM consumption

จุดพิเศษคือ LP.getMarkdown - เป็น custom CDP method ที่แปลงหน้าเว็บเป็น Markdown โดยเฉพาะ ออกแบบมาเพื่อให้ LLM อ่านง่าย

วิธีใช้

# ติดตั้ง (download binary จาก GitHub releases)
# หรือ build จาก source
cargo install obscura-cli

# ดึงหน้าเว็บคืนเป็น Markdown
obscura fetch https://example.com

# รัน CDP server (ใช้กับ Puppeteer/Playwright)
obscura serve --port 9222

# Scrape หลาย URL พร้อมกัน
obscura scrape urls.txt --concurrency 10 --stealth

# รัน JavaScript บนหน้าเว็บ
obscura fetch https://example.com --eval "document.title"

สำหรับ Puppeteer: เพียงเปลี่ยน executablePath ไปที่ binary obscura ก็ใช้ได้เลย ไม่ต้องแก้โค้ดอะไร

ใครควรใช้?

  • AI Agent developer - ที่ต้อง browse web, extract content, interact กับ pages แบบ programmatic โดยใช้ทรัพยากรน้อย

  • Web scraper - ที่ต้องการ JS-rendered content แบบ scale ใหญ่ โดยไม่ต้องการ overhead ของ Chrome

  • Security researcher - ที่ต้องการ stealthy, undetectable browsing

  • Automation engineer - ที่อยาก Puppeteer/Playwright-compatible replacement ที่เบากว่า

สรุป

Obscura คือ headless browser รุ่นใหม่ที่ออกแบบมาเพื่อยุค AI agent - เบากว่า Chrome 6-7 เท่า เร็วกว่า 8-10 เท่า มี stealth built-in และติดตั้งง่ายแค่ single binary โดยไม่ต้องพึ่ง Chrome หรือ Node.js

ด้วย Rust เป็นภาษาหลัก + V8 ผ่าน Deno สำหรับรัน JS + Servo parser สำหรับ DOM มันไม่ใช่แค่ wrapper รอบ Chrome แต่เป็น browser engine ของตัวเองที่เขียนใหม่ทั้งหมด

1.8k stars บน GitHub หลังจาก release แค่ 2 สัปดาห์ - น่าจับตามาก

Source: https://github.com/h4ckf0r0day/obscura