待翻译:Obscura: Headless browser engine. For web scraping and AI agent automation
AI 服务暂时不可用,以下为来源摘要,待恢复后补全翻译:Notifications You must be signed in to change notification settings Fork 1.5k Star 20.6k BranchesTags Open more actions menu Folders and files NameName Last commit message Last commit date Latest commit History 814 Comm…
AI 服务暂时不可用,以下为来源正文,待恢复后补全翻译。
Notifications You must be signed in to change notification settings Fork 1.5k Star 20.6k BranchesTags Open more actions menu Folders and files NameName Last commit message Last commit date Latest commit History 814 Commits 814 Commits .cargo .cargo .github .github assets assets crates crates docs docs render-repros render-repros skills/obscura skills/obscura vendor vendor .gitattributes .gitattributes .gitbook.yaml .gitbook.yaml .gitignore .gitignore AGENTS.md AGENTS.md CONTRIBUTING.md CONTRIBUTING.md Cargo.lock Cargo.lock Cargo.toml Cargo.toml Dockerfile Dockerfile LICENSE LICENSE README.md README.md SECURITY.md SECURITY.md build.log build.log Repository files navigation The open-source headless browser for AI agents and web scraping. Lightweight, stealthy, and built in Rust. Native rendering is here. No Chromium required. 🎉 Capture screenshots, screencast live pages, and export PDFs directly with Obscura. Obscura is a headless browser engine written in Rust, built for web scraping and AI agent automation. It runs real JavaScript via V8, supports the Chrome DevTools Protocol, and acts as a drop-in replacement for headless Chrome with Puppeteer and Playwright. Why Obscura over headless Chrome? Designed for automation at scale, not desktop browsing. Metric Obscura Headless Chrome Memory 30 MB 200+ MB Binary size 70 MB 300+ MB Anti-detect Built-in None Page load 85 ms ~500 ms Startup Instant ~2s Puppeteer Yes Yes Playwright Yes Yes 🎉 10,000 stars and what's next We are working on Obscura Cloud the hosted version, with managed infrastructure, residential proxies, and dedicated support. For people who want the engine without operating it themselves. The open-source engine stays Apache-2.0, fully featured. No feature gating, ever. Get on the waitlist → 📅 Book a demo → Sponsors Obscura is supported by sponsors who help keep development independent. Want to sponsor? Email [email protected]. 🚀 Obscura × SX.org Using Obscura for AI agents, browser automation, or web scraping? Power your workflow with stable proxies from SX.org. 🌍 12M+ IPs across 235 countries 🏠 7M+ residential IPs 📱 4M+ mobile IPs 🏢 1M+ corporate proxies 🔁 Rotating & sticky sessions 📍 Flexible geo setup 🌐 HTTP, HTTPS & SOCKS5 support ⚡ Up to 99.97% connection success 🛟 24/7 support 🎁 Use code Obscura3gb to get a free 3GB trial. Stable proxies. Fewer blocks. Most reliable Obscura automation. NodeMaven — the most reliable proxy provider with the highest quality IPs on the market. Built for automation, web scraping, SEO research, and social media management. 99.9% uptime Sticky sessions up to 7 days IP filtering on every proxy No KYC required Cashback on traffic — earn up to 10% back 🎁 Use code OBSCURA35 for 35% off Mobile & Residential, or OBSCURA40 for 40% off ISP (Static) proxies. 🚀 Obscura × ProxyEmpire Using Obscura for AI agents, browser automation, or web scraping? Power it with reliable residential and mobile proxies from ProxyEmpire. 🌍 30M+ residential IPs in 170+ countries 📱 4G/5G mobile proxies 🔄 Rotating & sticky sessions 🎯 City, region & ISP targeting 🔐 HTTP, HTTPS & SOCKS5 support 🎁 Use code OBSCURA35 for a 35% recurring discount. Better proxies. Fewer blocks. More scalable automation. 9Proxy provides residential proxies from just $0.018/IP or $0.68/GB. 20M+ IPs across 90+ countries. Sticky or rotating sessions, managed from desktop or mobile app. 🚀 Obscura × Thordata Need more stable proxies for automation, public web scraping, SEO, or ad verification? Power your workflow with Thordata. 🌍 Residential Proxies: 100M+ real residential IPs in 190+ countries ♾️ Unlimited Proxies: for heavy traffic and high concurrency ✨ Recently upgraded residential IP pool ✨ Unlimited Concurrent Sessions 🔁 Rotating & Sticky Sessions 📍 Flexible GEO targeting ⚡ Stable HTTP(S) connections 🎁 Use code obscura for 10% off. Get started with a 3-day free trial and test Thordata with your own workflow. Install Download Grab the latest binary from Releases: # Linux x86_64 curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-linux.tar.gz tar xzf obscura-x86_64-linux.tar.gz ./obscura fetch https://example.com --eval "document.title" # Linux ARM64 (aarch64) curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-linux.tar.gz tar xzf obscura-aarch64-linux.tar.gz # Arch Linux (AUR) yay -S obscura-browser # NixOS nix-env -iA nixpkgs.obscura # macOS Apple Silicon curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-macos.tar.gz tar xzf obscura-aarch64-macos.tar.gz # macOS Intel curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-macos.tar.gz tar xzf obscura-x86_64-macos.tar.gz # Windows Download the .zip from the releases page and extract it manually. No Chrome, no Node.js, no dependencies. Release archives include both obscura and obscura-worker; keep them in the same directory for the parallel scrape command. Archive suffix Rendering Stealth transport none Yes No -stealth Yes Yes -no-render No No -no-render-stealth No Yes Linux release builds target Ubuntu 22.04 so the downloaded binary remains usable on common LTS servers with glibc 2.35+. Docker docker run -d --name obscura -p 127.0.0.1:9222:9222 h4ckf0r0day/obscura Image on Docker Hub. Multi-stage build on distroless/cc, no shell, no package manager, ~57 MB compressed. Build from source git clone https://github.com/h4ckf0r0day/obscura.git cd obscura # Rendering cargo build --release -p obscura-cli --bins --features render # Rendering and stealth cargo build --release -p obscura-cli --bins --features render,stealth # No rendering cargo build --release -p obscura-cli --bins --no-default-features # No rendering, with stealth cargo build --release -p obscura-cli --bins --no-default-features --features stealth Requires Rust 1.75+ (rustup.rs). First build takes ~5 min (V8 compiles from source, cached after). The stealth build also compiles BoringSSL and generates bindings, so it needs CMake, Clang, and the libclang/LLVM development libraries. On Ubuntu/Debian: sudo apt-get install build-essential cmake clang libclang-dev llvm-dev The rendering build uses rustls. The rendering-and-stealth build uses wreq/BoringSSL and therefore needs the additional build tools above. Quick Start Fetch a page # Get the page title obscura fetch https://example.com --eval "document.title" # Extract all links obscura fetch https://example.com --dump links # Render JavaScript and dump HTML obscura fetch https://news.ycombinator.com --dump html # Write dump or eval output to a file obscura fetch https://example.com --dump text --output page.txt # Stream the raw response body verbatim (binary-safe; bypasses the JS/DOM layer). # Use this for images, JSON, JS, CSS, or any non-HTML resource. obscura fetch https://picsum.photos/200/300 --dump original > photo.jpg # List every sub-resource URL the page would fetch (NDJSON; one record per asset) obscura fetch https://example.com --dump assets # Fetch through an HTTP or SOCKS proxy obscura --proxy socks5://127.0.0.1:1080 fetch https://example.com --dump text # Wait for dynamic content obscura fetch https://example.com --wait-until networkidle0 # Bound navigation time for slow or broken pages obscura fetch https://example.com --timeout 10 # Capture the settled page as PNG obscura fetch https://example.com --screenshot page.png # The screenshot flag also has a short form obscura fetch https://example.com -s page.png Rendering Official release archives and the Docker image include the rendering engine. It provides CSS layout and paint, viewport and full-page screenshots, scroll-aware fixed and sticky geometry, activity-driven CDP screencasting, and raster PDF export without starting Chromium. await page.setViewport({ width: 1440, height: 1000 }); await page.goto('https://example.com', { waitUntil: 'load' }); await page.screenshot({ path: 'page.png', fullPage: true }); await page.pdf({ path: 'page.pdf', format: 'A4', printBackground: true }); The current implementation covers block, inline, flex, grid, table, float, positioning, overflow, transform, text, image, SVG, canvas, background, border, and animation paths. It remains an evolving independent engine: long-tail CSS, some Web APIs, media playback, compositor effects, and platform font rasterization may differ from Chromium. The existing Puppeteer, Playwright, and MCP guides cover their capture APIs and limits. Start the CDP server obscura serve --port 9222 # With stealth mode (anti-detection + tracker blocking) obscura serve --port 9222 --stealth Scrape in parallel obscura scrape url1 url2 url3 ... \ --concurrency 25 \ --eval "document.querySelector('h1').textContent" \ --format json # Suppress scrape progress on stderr for script-friendly output obscura scrape https://example.com --quiet --format json # Scrape workers inherit the global proxy obscura --proxy http://127.0.0.1:8080 scrape https://example.com https://news.ycombinator.com Puppeteer / Playwright Puppeteer npm install puppeteer-core 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); await browser.disconnect(); Playwright npm install playwright-core import { chromium } from 'playwright-core'; const browser = await chromium.connectOverCDP({ endpointURL: 'ws://127.0.0.1:9222', }); const page = await browser.newContext().then(ctx => ctx.newPage()); await page.goto('https://en.wikipedia.org/wiki/Web_scraping'); console.log(await page.title()); await browser.close(); Form submission & login await page.goto('https://quotes.toscrape.com/login'); await page.evaluate(() => { document.querySelector('#username').value = 'admin'; document.querySelector('#password').value = 'admin'; document.querySelector('form').submit(); }); // Obscura handles the POST, follows the 302 redirect, maintains cookies Benchmarks Page load: Page Obscura Chrome Static HTML 51 ms ~500 ms JS + XHR + fetch 84 ms ~800 ms Dynamic scripts 78 ms ~700 ms The full benchmark suite (WPT conformance, obstacle course, real-world corpus, and vs-Chrome speed) lives in a separate repo: https://github.com/h4ckf0r0day/obscura-benchmark Stealth Mode Build with --features render,stealth, then enable stealth at runtime with the global --stealth flag. The stealth build includes the complete rendering engine; enabling stealth does not remove screenshot, screencast, PDF, CDP, or MCP functionality. Anti-fingerprinting Per-session fingerprint randomization (GPU, screen, canvas, audio, battery) Realistic navigator.userAgentData (Chrome 145, high-entropy values) event.isTrusted = true for dispatched events Hidden internal properties (Object.keys(window) safe) Native function masking (Function.prototype.toString() → [native code]) navigator.webdriver = undefined (matches real Chrome) Tracker Blocking 3,520 domains blocked Blocks analytics, ads, telemetry, and fingerprinting scripts Prevents trackers from loading entirely Enabled automatically with --stealth CDP API Obscura implements the Chrome DevTools Protocol for Puppeteer/Playwright compatibility. Domain Methods Target createTarget, closeTarget, attachToTarget, createBrowserContext, disposeBrowserContext Page navigate, getFrameTree, lifecycleEvents, captureScreenshot, start/stopScreencast, prin [truncated for AI cost control]