obscura
The headless browser for AI agents and web scraping
10K+
Obscura
Official Docker image for Obscura Lightweight headless browser built for AI agents and web scraping.
Obscura runs real JavaScript via V8, supports the Chrome DevTools Protocol, and acts as a drop-in replacement for headless Chrome with Puppeteer and Playwright. Compatible with:
connect_over_cdp)chromiumoxide / headless_chrome (Rust CDP clients)Why Obscura:
navigator.webdriver maskeddistroless/cc (no shell, no package manager)docker run -d --name obscura -p 127.0.0.1:9222:9222 h4ckf0r0day/obscura
Then connect with Playwright / Puppeteer at ws://127.0.0.1:9222/devtools/browser.
services:
obscura:
image: h4ckf0r0day/obscura:latest
restart: unless-stopped
ports:
- '127.0.0.1:9222:9222'
docker run --rm h4ckf0r0day/obscura fetch --dump html https://example.com
Other dump formats: text, markdown, links.
docker run --rm h4ckf0r0day/obscura scrape \
https://example.com https://news.ycombinator.com \
--eval "document.title" --concurrency 10
Stdio mode (default) — for Claude Code, Cursor, and other MCP clients:
docker run --rm -i h4ckf0r0day/obscura mcp
HTTP mode:
docker run -d --name obscura-mcp -p 127.0.0.1:3000:3000 \
h4ckf0r0day/obscura mcp --http --host 0.0.0.0 --port 3000
Exposes 12 browser tools: browser_navigate, browser_snapshot, browser_click, browser_fill, browser_type, browser_evaluate, browser_wait_for, and more.
docker run --rm h4ckf0r0day/obscura --version
latest — most recent stable release0.1.3, 0.1.2, ... — pinned versionsCMD binds to 0.0.0.0 inside the container so the port is reachable via docker run -p mapping. The native binary still defaults to 127.0.0.1 (loopback only).--features stealth if you need it.Content type
Image
Digest
sha256:16c2131ac…
Size
52.9 MB
Last updated
6 days ago
docker pull h4ckf0r0day/obscura