Claude · Automation

Obscura: scrape any website without getting blocked

The complete guide to install Obscura, the open source headless browser written in Rust, and scrape almost any website without getting blocked. Install, 3 commands, stealth mode, and how to plug it into Claude.

QQuentin Megevand
June 18, 2026 · 5 min read

Why Obscura

You launch a scraper, and after a few hundred pages you get kicked out. Captcha, blocked IP, empty page. The problem almost always comes from the browser you use to collect the data. Headless Chrome leaves traces everywhere, eats 200 MB of RAM per instance, and gets spotted in two seconds by Cloudflare or DataDome.

Obscura takes the problem the other way around. It is a browser with no interface, written in Rust, built for scraping and for AI agents. It renders pages like a real browser (it runs JavaScript through V8), but it weighs 30 MB, starts instantly, and knows how to stay invisible to anti-bot protections. Open source, Apache 2.0 license, free, and more than 15,000 stars on GitHub in a few weeks.

This guide shows you how to install it, your first 3 commands, how to get past anti-bot protections, and how to plug it straight into Claude.

Claude AI Lab

The Claude AI Lab is my Skool community where I share my Claude systems and the more advanced modules. Entry is free.

Join the Lab →
30 MB
in memory (vs 200 for Chrome)
~50 ms
to load a page
15,900
GitHub stars
$0
open source, Apache 2.0
What you need
1
A macOS, Linux, or Windows machine. Or just Docker if you would rather not install anything natively.
2
A terminal. Every command runs from the command line.
3
Two minutes. No Chrome to install, no Node.js, no dependencies.
1

Install Obscura

🔗 github.com/h4ckf0r0day/obscura

Three ways to install it. The fastest for testing is Docker. The cleanest for daily use is the binary.

The binary on 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

On Intel Mac, replace aarch64 with x86_64. On Linux, grab the x86_64-linux or aarch64-linux build.

Docker, if you do not want to install anything natively:

docker run -d --name obscura -p 127.0.0.1:9222:9222 h4ckf0r0day/obscura

Build from source, if you already have Rust:

git clone https://github.com/h4ckf0r0day/obscura.git
cd obscura
cargo build --release --features stealth
Detail that matters

Keep both obscura and obscura-worker files in the same folder. The second one handles parallel scraping, without it the workers will not launch.

2

Your first 3 commands

⌨️ obscura --help

Three commands cover 90% of the cases.

Fetch a page that is already rendered. JavaScript runs, and you get the final HTML, the text, the links, or markdown directly:

obscura fetch https://example.com --dump markdown

Scrape several URLs in parallel. You pass your list, set the concurrency, and get clean JSON:

obscura scrape url1 url2 url3 --concurrency 25 --format json

Run a server. Obscura exposes a CDP (Chrome DevTools Protocol) server, so you drive it from Puppeteer or Playwright as if it were Chrome:

obscura serve --port 9222
Good to know

The --dump flag accepts html, text, links, markdown, assets, or original. To feed an LLM, markdown gives you clean content directly, without the HTML noise.

3

Get past anti-bot protections

🥷 --stealth

This is where Obscura changes the game. You add a single flag:

obscura serve --port 9222 --stealth

Or on a single request:

obscura fetch https://example.com --dump text --stealth

Stealth mode randomizes your fingerprint on every session: GPU, resolution, canvas, audio, battery. It returns a real navigator.userAgentData (Chrome 145), hides navigator.webdriver, and blocks 3,520 tracking domains (analytics, ads, telemetry, fingerprinting). The result: the site treats you like a human and lets you through.

Scrape responsibly

Being able to get through does not mean you should grab everything. Respect each site's terms, do not overload their servers, and use --obey-robots when you want to follow robots.txt. You collect public data, not private accounts.

4

Plug it into Claude

🔌 obscura mcp

Obscura ships with an MCP server. In practice, you give Claude the ability to browse and scrape the web live, inside your conversations.

Start the server:

obscura mcp

Then add it to your Claude Desktop config:

{
  "mcpServers": {
    "obscura": {
      "command": "obscura",
      "args": ["mcp"]
    }
  }
}

Claude then gets about a dozen tools: browser_navigate, browser_snapshot, browser_click, browser_fill, browser_evaluate, browser_wait_for, and more. You ask it to read a page, fill a form, or extract a table, and it does it itself.

The real unlock

This is what turns Claude into an agent that can act on the real web, not just answer. You plug Obscura in once, and all your AI agents can scrape without getting blocked.

Before you start

Three habits to avoid wasting time.

🐳
Test with Docker first
You confirm Obscura does the job on your target site in one command, without installing anything. You move to the binary later, once you know it works.
🥷
Turn on stealth only when needed
On a site with no protection, normal mode is enough and runs faster. Keep --stealth for the sites that actually block you.
📄
Output markdown for your LLMs
If the data goes into Claude or another model, --dump markdown saves you from cleaning the HTML by hand.
In short

Obscura is a headless browser that fits in 30 MB, gets past anti-bot protections with a single flag, and plugs into Claude in three lines. Install it with Docker, test fetch on your site, add --stealth if you get blocked.

Want to go further?

And day-to-day, I post one reel a day on Instagram: @quentin_iamarketing