Web Scraping
min read

Guide to Bypassing DataDome in 2025

Written by
Kameleo
Software Engineering Team
Updated on
June 18, 2025

If you’ve ever Google’d “how to bypass DataDome”, you’ve likely encountered numerous anti-bot guides - most even insisting DataDome’s protections are unbreakable. In this comprehensive guide, we first break down how DataDome detects web scrapers - from deep browser fingerprinting and real-time behavioral analysis to IP reputation scoring and TLS/header inspection. We then explain why basic scraping with headless browsers or static proxies often fails against this advanced anti-bot system, and show real DataDome block page examples to illustrate the challenges.

Next, we present a step-by-step bypass using Playwright paired with Kameleo’s Anti-Detect Browser - covering profile creation, proxy rotation (residential and mobile proxies), and obfuscation techniques - to defeat DataDome’s multi-layered detection. Crucially, because DataDome tracks human behavior signals like mouse movements, we integrate a ghost-cursor solution to emulate realistic cursor paths - without which Kameleo alone is insufficient. Finally, we walk through a Case Study: scraping the DataDome-protected Footlocker UK site, detailing each scraping step, the data extracted, and the developer considerations to think like a real user (screen resolution, browser type, and human-behavior emulation).

Prerequisites

Before you begin, ensure you have the following modern libraries and infrastructure in place:

  • Python 3.8+ with Playwright installed:
  • Kameleo Anti-Detect Browser to generate and rotate realistic browser fingerprints at the binary level.
  • High-quality Proxies - preferentially residential IP addresses or mobile proxies - to avoid DataDome’s IP reputation checks.
  • Ghost-Cursor Library:
    • Ghost Cursor is primarily built for Puppeteer. Although there’s a Python-Playwright port available, it isn’t widely adopted (we use this in our case study): https://pypi.org/project/python-ghost-cursor
    • For Python: python_ghost_cursor via pip install python_ghost_cursor pypi.org
    • For Node.js: ghost-cursor-playwright via npm install ghost-cursor-playwright npmjs.com
  • Optional: CAPTCHA-Solving Services or OCR tools to tackle any residual DataDome CAPTCHA challenges.

Understanding the Challenge: How Does DataDome Detect Web Scrapers?

Browser Fingerprinting

DataDome injects client-side JavaScript to perform deep browser fingerprinting - collecting canvas fingerprints, WebGL hashes, audio fingerprinting, device models, screen resolution, navigator.plugins, and CPU concurrency - then matches them against a database of real browser signals and checking consistency along all the parameters. If your headless browser or Automated Browser fails to emulate a real web browser environment, those missing plugins or unusual hexadecimal identifiers in WebGL will look suspicious.

Behavioral Analysis

Beyond static fingerprints, DataDome tracks behavioral signals - mouse jitters, scroll patterns, human browsing behavior, event tracking timestamps, and concurrent requests - to differentiate human users from bots. Uniform or instantaneous interactions trigger bot-like behavior alerts. It also checks that mouse movements are smooth and curved like a real user’s, not straight lines. For more on simulating human-like mouse motion in tests, see the Web Scraping Club’s guide.

IP Reputation & Rate-Limit Heuristics

DataDome maintains a global IP address reputation database, flagging known data-center ranges and static proxies. Excessive request rates from a single IP or rapid API requests raise suspicion, resulting in rate-limit enforcement or immediate blocking.

TLS & HTTP Header Inspection

On the server side, DataDome analyzes TLS fingerprints (JA3 hashes) and inspects request headers - including User-Agent strings, Accept-Language, and other header anomalies. Missing or uncommon headers betray fake browser headers, leading to blocks.

Why Basic Scraping Often Fails

When you use tools like Selenium Undetected Chromedriver or plain Playwright, several shortcomings remain:

  1. navigator.webdriver Flag: Remains true by default, instantly unveiling browser automation tools: In Selenium, navigator.webdriver stays true by default, flagging automation. While Undetected Chromedriver or Playwright can hide it, most real-world detectors use CDP-based checks.
  2. Missing Plugins & MIME Types: A real user typically has plugins like “Widevine Content Decryption Module”; a blank navigator.plugins list is a red flag (headless sessions often show an empty list).
  3. Deterministic Timing: Bots execute scripts far more consistently than humans, lacking natural network jitter and variable render delays.
  4. Headless Metadata: Even in headful mode, headless-origin flags in browser window properties and blink engine parameters can persist.
  5. Static Proxies: Free or static proxies are quickly identified by IP reputation heuristics, triggering blocks.

These limitations make simple scraping approaches insufficient against DataDome’s advanced defenses.

DataDome Block Page Examples

When DataDome blocks you, you’ll often see HTML like:

This interstitial indicates a DataDome CAPTCHA challenge, complete with the injected dd object and external solver scripts .

How to Bypass DataDome with Playwright, Kameleo & Ghost-Cursor

DataDome’s anti-bot system is extremely sophisticated - it doesn’t just rely on static browser fingerprinting, but also monitors human-behavior signals like mouse movements and scroll patterns and hover durations via real-time behavioral analysis. Kameleo, as an anti-detect browser, masks your IP address and online identity - an essential first step for any bypass - but on its own it lacks built-in human-behavior emulation (e.g., realistic cursor movement). In our internal tests, only when Kameleo is integrated with a “ghost-cursor” solution that simulates human mouse paths does it reliably evade DataDome - though no method is guaranteed if DataDome updates its defenses.

Kameleo’s long-term roadmap aims to embed such behavior emulation natively, and today the platform runs hundreds of daily tests against anti-bot-protected sites, adapting immediately to any changes. While we can’t promise a 100% pass rate, our Footlocker UK use case shows that you need both canvas-fingerprint spoofing from Kameleo and ghost-cursor–driven human-behavior emulation to stand a chance.

Step 1: Create a Kameleo Anti-Detect Profile

On the Kameleo dashboard, generate a browser profile with:

Step 2: Connect Playwright via CDP

This approach leverages advanced browser interactions in a real browser environment, hiding all automation traces .

Step 3: Integrate Ghost-Cursor for Human Behavior Emulation

While Kameleo masks IP and fingerprints, it does not simulate mouse movements or typing patterns. To satisfy DataDome’s behavioral analysis, integrate ghost-cursor.

1. Install the Ghost-Cursor:

2. Initialize & Use:

3. Wrap Interactions:

Replace page.click or page.mouse calls with cursor.move and cursor.click to emulate real user cursor paths.

Step 4: Rotate Premium Proxies & Back-Off

Pair each Kameleo profile* with a fresh residential or mobile proxy to maintain IP geolocation consistency. Implement exponential back-off and rotate proxies on failures to avoid triggering malicious request detection.

*In Kameleo, a browser profile is an isolated virtual browser instance that encapsulates a custom fingerprint (user-agent, IP, OS, screen resolution, timezone, canvas/WebGL settings) plus its own cookies and history to emulate a distinct digital identity each time you launch it.

Step 5: Handle Remaining CAPTCHAs

For persistent DataDome CAPTCHA challenges, integrate CAPTCHA-solving services (e.g., 2Captcha, Anti-Captcha) using optical character recognition or leverage OCR tools to automate challenge resolution.

Case Study: Scraping Footlocker UK

A step-by-step, developer-style walkthrough:

1. Initialize Kameleo Profile

Goal: Spin up a latest Chrome profile with GPU-driven canvas fingerprints and realistic navigator.plugins.

Data Region: United Kingdom (matching your IP address location).

Proxy: Assign a fresh residential IP proxy.

2. Launch Playwright Context

Why: Ensures your browser environment mimics a real user with common screen resolution and full rendering capabilities.

3. Navigate & Verify

Data Scraped: None yet; this is the DataDome challenge phase where we confirm we’re not blocked.

Check: Look for datadome in page.url or <script src="https://ct.captcha-delivery.com"> to detect DataDome CAPTCHA .

4. Scrape Main Navigation Categories

5. Data Extracted: Category names and links.

Scrapes category names and links (e.g., “Men’s Shoes”, “Women’s Clothing”).

How: Uses Playwright’s query_selector_all to mimic a real click path, replicating human browsing behavior.

6. Visit “Men’s Shoes” & Extract Products

7. Data Scraped: First five product titles and URLs.

Rationale: Simulates a user drilling down two levels, triggering real browser headers and behavioral signals

8. Intersperse Ghost-Cursor Moves

Rationale: Emulates human mouse movement and click behavior.

9. Handle Blocks & Retry

On detection, programmatically spawn a new Kameleo profile, assign another proxy, and retry with back-off.

Conclusion

Bypassing DataDome’s advanced anti-bot system requires a comprehensive, layered approach. While Kameleo Anti-Detect Browser excels at fingerprint and IP masking, it must be paired with human-behavior emulation (via ghost-cursor for realistic mouse movements) and premium proxy rotation to mimic legitimate users effectively.

Here are the key takeaways:

1. Mask your browser fingerprint

Start with Kameleo’s Anti-Detect Browser (or a comparable browser automation tool) to spoof canvas, WebGL, audio and device fingerprinting signals so you look like a real browser.

2. Emulate human behavior

Inject realistic human browsing behavior - vary scroll speed, use ghost-cursor mouse movements and stagger concurrent requests - to defeat headless-browser checks and behavioral analysis.

3. Rotate high-quality proxies

Send your requests through premium residential or mobile proxies (not data-center IPs) to keep a strong IP reputation score and avoid rate-limit heuristics.

4. Solve CAPTCHAs intelligently

When you still hit a DataDome CAPTCHA, fall back to OCR-driven CAPTCHA-solving services or dedicated Anti-Bot Solvers to clear any remaining blocks without manual intervention.

By combining robust browser fingerprint spoofing, real user behavior emulation, dynamic proxy management, adaptive machine-learning techniques and automated CAPTCHA resolution, you’ll have a comprehensive, end-to-end solution for consistently successful requests against DataDome’s advanced anti-bot system.

In addition to the techniques above, seamless web scraping often relies on rotating premium proxy services and residential proxies across diverse IP addresses and proxy IPs from leading Proxy Providers. Combining dynamic TLS & HTTP/2 fingerprinting, TLS fingerprinting, JavaScript fingerprinting, Browser fingerprinting, canvas fingerprinting, and server-side fingerprinting creates comprehensive device fingerprinting. Sophisticated behavioral analysis, behavioral detection, and tracking of behavioral patterns and behavioral signals enable advanced bot management and trust score evaluation. Indeed, these measures are complex and bypassing DataDome’s advanced anti-bot defenses is no easy feat - but with a diligent, multi-layered approach, it’s far from impossible.

If you're ready to take your scraping to the next level, check out these pages:

Unlock the real anti-detect power—browse our flexible plans here!

Craving more insider tips? Dive into our Web Scraping Resource Hub!

Share this post