Web Scraping

Playwright Stealth: Bypassing Cloudflare & DataDome Anti-Bot Defenses (2026)

Learn headless Chrome fingerprint spoofing, TLS JA3/JA4 fingerprinting, WebGL/Canvas spoofing, and Cloudflare challenge evasion.

4 min

How Anti-Bot Shields Detect Automated Browsers

Modern shields like Cloudflare and DataDome inspect the `navigator.webdriver` flag, WebGL hardware vendor strings, installed fonts, TLS Client Hello signatures (JA3/JA4), and human mouse movement trajectories.

stealth_scraper.py
import asyncio
from playwright.async_api import async_playwright
from playwright_stealth import stealth_async

async def run():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        context = await browser.new_context(
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
            locale="en-US",
            viewport={"width": 1920, "height": 1080}
        )
        page = await context.new_page()
        await stealth_async(page)
        await page.goto("https://bot.sannysoft.com")
        print("Stealth evasion activated!")
        await browser.close()

asyncio.run(run())