Web Scraping

Camoufox: the anti-detect browser for undetected scraping

A Firefox build that hides the fact it's being automated, spoofs your fingerprint at the source, and drops straight into your Playwright code. Here's how it works, how to install it, and when you honestly don't need it.

Disclosure: some links in this guide are affiliate links. If you sign up through them, we may earn a commission at no extra cost to you. We only point to tools we'd reach for ourselves. Hire a Clawd is our own service.

Most scrapers die the same way. You write a clean Playwright script, it works great for a day, then the target starts serving CAPTCHAs, blank pages, and 403s. Nine times out of ten the problem isn't your code. It's that headless Chrome leaks a dozen signals that quietly announce "a bot is driving this," and modern anti-bot vendors read every one of them.

Camoufox is one of the better answers to that problem. It's an open-source browser built for a single job: automate the web without getting flagged.

What Camoufox actually is

Camoufox (people constantly misspell it "camofox") is a custom build of Firefox that hides the fact it's being automated. It's maintained by a developer who goes by daijro, shipped under the Mozilla Public License 2.0, and it costs nothing.

Here's the part that matters. Most stealth tools patch a running browser from the outside. They inject JavaScript that overwrites navigator.webdriver, fakes a handful of properties, and hopes nobody looks too closely. Camoufox goes the other way. The spoofing is compiled into the browser itself, down at the C++ level, so the values a site reads back look native because they basically are. There's no evasion script sitting in the page for a detector to trip over.

It talks to your code through a modified version of Firefox's Juggler protocol, kept isolated from the page, so the automation channel stays invisible to JavaScript running on the site. In plain terms: the website can't see the strings that usually give a bot away.

Camoufox vs Selenium, undetected-chromedriver, and playwright-stealth

You can absolutely scrape with plain Selenium or Playwright. For a site with no bot protection, that's the right call, and reaching for anything fancier is a waste of time. The trouble starts on protected targets.

Tools like undetected-chromedriver and playwright-stealth help, but they share a structural weakness. Because they patch things from JavaScript, a determined detector can catch them. Overwrite a native function and its toString() stops reading [native code]. Redefine a property and the descriptor looks wrong. Anti-bot services like Cloudflare, DataDome, and friends test exactly those tells. And headless Chromium is the single most-scrutinized setup on the web: it exposes Chrome DevTools Protocol artifacts, renders canvas a little too consistently, and generally draws more heat than anything else.

Firefox gets less attention by default, and Camoufox strips the automation tells at the source instead of painting over them. That's the whole pitch.

ToolEngineHow it hidesBest for
Selenium / Playwright (vanilla)Chrome or FirefoxIt doesn'tTesting, easy targets
undetected-chromedriverChromeJS patches + tuned launch flagsLight Cloudflare
playwright-stealthChromium / FirefoxJS evasion patchesLight detection
CamoufoxFirefoxBinary-level spoofing, no injected JSHeavier anti-bot
Paid anti-detect browserChromium / FirefoxManaged profiles + GUIMulti-account, manual work

Install it

Two commands. The Python package, then the patched browser binary:

pip install -U camoufox[geoip]
python3 -m camoufox fetch

The [geoip] extra pulls in a location dataset (roughly 50 MB) that maps an IP to a timezone, locale, and coordinates. Skip it and you'll get an InvalidDatabaseError the first time you use geoip=True, so just install it now. The fetch step downloads the actual Camoufox build, a debloated Firefox around 200 MB with telemetry stripped and uBlock Origin bundled in. On Windows, drop the python3 -m and run camoufox fetch directly.

A minimal working Python example

If you've written Playwright before, this will look boringly familiar, and that's the point. Camoufox is a drop-in. Same page objects, same methods.

from camoufox.sync_api import Camoufox

with Camoufox(headless=True) as browser:
    page = browser.new_page()
    page.goto("https://www.browserscan.net/")
    page.screenshot(path="fingerprint.png")
    print(page.title())

That opens the stealth browser, loads a fingerprint-checking site, and saves a screenshot so you can see what your bot looks like from the outside. Prefer async? Swap in from camoufox.async_api import AsyncCamoufox and await the calls. Every Playwright action you know, clicking, typing, scrolling, waiting for selectors, works unchanged.

Fingerprints, OS spoofing, and humanized cursors

A few constructor options do most of the heavy lifting:

from camoufox.sync_api import Camoufox

with Camoufox(
    os=("windows", "macos"),   # pick the fingerprint OS at random
    humanize=True,             # curved, human-like cursor paths
    block_images=True,         # skip images to load faster
) as browser:
    page = browser.new_page()
    page.goto("https://example.com")

os controls which operating system your fingerprint claims to be, and you can hand it a list to rotate. humanize replaces robotic straight-line mouse jumps with curved paths that look like a hand moved them; pass a number like humanize=1.5 to cap how long a movement can take.

Anything you don't set gets filled in for you. Camoufox leans on BrowserForge to generate the rest of the fingerprint from real-world device distributions, so your fake screen size, WebGL vendor, and fonts land inside the range of actual traffic instead of sticking out as a weird outlier. That's a big deal. A "perfect" fingerprint that nobody in the real world has is its own red flag.

Pairing it with residential proxies

Read this part twice, because it's the mistake everyone makes first. Camoufox spoofs the browser, not your IP address. Run it straight off your server and the target still sees your datacenter IP, which is often enough to get blocked before your beautiful fingerprint even matters.

So you route it through a proxy, and for anything serious that means residential proxies, real IPs assigned to home internet connections. Camoufox takes a proxy the same way Playwright does, and geoip=True is the setting that makes the two line up:

from camoufox.sync_api import Camoufox

with Camoufox(
    geoip=True,
    proxy={
        "server": "http://gate.example-proxy.com:8080",
        "username": "user",
        "password": "pass",
    },
) as browser:
    page = browser.new_page()
    page.goto("https://www.browserscan.net/")

With geoip=True, Camoufox looks up the proxy's exit IP and sets the browser's timezone, locale, language, and geolocation to match it. Why bother? Because sites cross-check your IP's location against your browser's timezone and language. A residential IP in Frankfurt paired with a browser set to America/New_York is a dead giveaway, and the block comes with no warning. Matching them removes one of the easiest catches in the book.

Recommended tool

You'll need residential proxies

Camoufox handles the fingerprint. The IP is on you. A rotating residential pool with clean, non-flagged IPs is the other half of not getting blocked, and it's where most scraping jobs quietly succeed or fail.

See our proxy pick →

Affiliate link, at no extra cost to you.

Don't want to babysit scrapers, proxies, and CAPTCHAs?

Fingerprints drift, proxies rotate, sites change their defenses, and something breaks at 2am. Hire a Clawd is a personal AI agent that runs browser automation for you, around the clock, and messages you when it's done. You describe the job. It handles the plumbing.

See plans from $49/mo →

Common pitfalls

A few things that bite people, roughly in the order they'll bite you:

Skip the setup

The Anti-Detect Scraping Starter Kit

A ready-to-run Camoufox + residential proxy Python template, a step-by-step setup guide, and a pre-flight checklist so your first real scrape doesn't get you insta-banned. Everything on this page, wired up and working, so you're scraping in ten minutes instead of an afternoon.

$19 one-time

Get the kit →

Even with the browser sorted and proxies in place, some targets will still throw a CAPTCHA at you, especially on login or checkout flows. Camoufox often slides past invisible challenges because it's a genuine browser, but the visible ones are a different problem, and hand-solving them doesn't scale.

Recommended tool

For the CAPTCHAs you can't dodge

When a site throws a visible reCAPTCHA or hCaptcha in the way, a solving service returns a token your script can submit, so an automated run isn't dead in the water at the first challenge. Pay-per-solve, low volume, no account babysitting.

See our CAPTCHA pick →

Affiliate link, at no extra cost to you.

When it's overkill

Camoufox is the right tool less often than the hype suggests. Don't reach for it when:

That last case is where paid anti-detect browsers earn their keep: managing many accounts by hand, each with its own persistent profile, through a point-and-click interface. That's a different job from headless scraping at scale, and it's worth knowing which one you're actually doing.

Recommended tool

Running many accounts by hand?

If your work is managing separate profiles through a GUI rather than scripting headless runs, a managed anti-detect browser gives you isolated, persistent fingerprints per profile without writing any code. Different tool, different job.

See our anti-detect browser pick →

Affiliate link, at no extra cost to you.

FAQ

Is Camoufox free?

Yes. It's open source under the Mozilla Public License 2.0. No license fee, no seat count.

Is web scraping with Camoufox legal?

Scraping publicly available data is broadly legal in a lot of places, but it isn't a blank check. A site's terms of service, its robots rules, rate limits, and privacy law all still apply, and they vary by where you and the site sit. This isn't legal advice. If a project is high-stakes, talk to a lawyer before you point a scraper at someone's servers.

Camoufox vs playwright-stealth: which should I use?

For light detection, playwright-stealth is quick and fine. For targets with real anti-bot vendors in front of them, Camoufox's binary-level spoofing holds up better than JavaScript patches that a detector can inspect. Start simple, and move to Camoufox when you're actually getting blocked.

Do I still need proxies if I use Camoufox?

For anything protected, yes. Camoufox hides that you're automating a browser. It does nothing about your IP. Residential proxies handle that half.

Does it work headless on a server?

It does. Run python3 -m camoufox fetch on the box, make sure Firefox's system libraries are present, and use headless=True or headless="virtual" on Linux.

Or just hand the whole thing to an agent

If reading this far made you tired, that's fair. Setting up a stealth browser, wiring in proxies, dodging CAPTCHAs, and keeping it all alive is real work. Hire a Clawd runs the automation for you, 24/7, and pings you on Telegram or Signal when the data's ready. No scripts to maintain.

Get your own agent →