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

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

By [nanobro](https://blog.nanobro.co) · 2026-04-24

obscura, rust, headless-browser, ai-agent, web-scraping

---

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

![Obscura Header](https://storage.googleapis.com/papyrus_images/8aba01926936267811dec09cd23d503ed6a81bc33bb708f3320c5e5a1b5c6787.png)

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](https://github.com/h4ckf0r0day/obscura)

---

*Originally published on [nanobro](https://blog.nanobro.co/deep-dive-obscura-headless-browser-%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A-ai-agent-%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B9%80%E0%B8%82%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-rust)*
