Most websites that want to block bots don't check for specific IPs or user agents — they check browser fingerprints. Understanding fingerprinting is essential for any serious automation work.
What Is Browser Fingerprinting?
A browser fingerprint is a unique identifier derived from dozens of browser and device properties: canvas rendering, WebGL output, audio context, installed fonts, screen resolution, timezone, language settings, and more. Combining these creates a fingerprint that identifies a specific browser installation with high confidence.
How Automation Gets Detected
- navigator.webdriver flag — set to true in all automated browsers by default
- Headless Chrome artifacts — missing plugins, different WebGL renderer
- Canvas fingerprint inconsistencies — headless Chrome renders canvas differently
- Missing human behavior signals — no mouse movement, perfect timing, no scroll events
- Impossible metrics — window.screen properties that don't match a real device
Anti-Detect Approaches
undetected-chromedriver (Selenium)
import undetected_chromedriver as uc
driver = uc.Chrome(headless=False)
driver.get('https://target-site.com')
Patches Chromedriver to remove webdriver signatures. Good for many sites.
playwright-stealth
from playwright.sync_api import sync_playwright
from playwright_stealth import stealth_sync
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
stealth_sync(page)
page.goto('https://target-site.com')
Dedicated Anti-Detect Browsers
Multilogin, Dolphin Anty, and Adspower provide full browser profiles with unique fingerprints per profile. Each profile looks like a distinct real user. Expensive but most effective.
Human Behavior Simulation
Even with perfect fingerprints, bots fail if they don't move like humans. Add:
- Random delays between actions (300–2000ms)
- Mouse movement before clicks
- Scroll events before interaction
- Random typing speed with occasional corrections
ZeroPhantom's automation tools use anti-detect browser techniques for maximum compatibility.