Guide9 min read

Browser Fingerprinting in Web Scraping

Short answer

Sites catch Selenium, Puppeteer and Playwright scrapers by reading dozens of browser signals (the navigator.webdriver flag, the user agent and client hints, screen and window sizes, fonts, canvas and WebGL output, time zone, language and the TLS handshake) and comparing them with what real browsers report. An automated browser leaks traces in several of them, and a mismatch between two signals, such as a Windows user agent with Linux fonts, is often enough to flag it. The fingerprint is separate from the IP: ProxyField residential proxies give the browser real home IPs in 195+ countries from $1.95/GB, and you can start with the Easy Trial: 1 GB for $2.95.

residential IPs
412M+
from, traffic never expires
$1.95/GB
Easy Trial
1 GB for $2.95
On this page 9 sections
  1. Which browser fingerprint signals do websites check?
  2. How do websites detect Selenium?
  3. Can websites detect Puppeteer and Playwright?
  4. Why stealth plugins stop working
  5. How headless browsers and TLS fingerprints get caught together
  6. Clean proxy, leaking fingerprint
  7. A fingerprint stack for scraping in 2026
  8. When fingerprinting means "stop"
  9. Browser Fingerprinting in Web Scraping FAQ

Which browser fingerprint signals do websites check?

A fingerprint script runs in the page, reads what the browser exposes, and sends a summary to the site's anti-bot service, which scores it together with the IP and the request headers. The definition and the privacy side are in what is a browser fingerprint; for scraping, these are the signals that give automation away:

SignalWhat an automated browser often showsWhat a real browser shows
navigator.webdrivertrue: the W3C WebDriver standard sets it when the browser is under automation (MDN)false
User agent and Sec-CH-UAHeadlessChrome in headless mode, or a version that doesn't match the real browserA current Chrome/<version> with matching client hints
Window and screenA default or fixed viewport, a window as large as the screen, no taskbar spaceCommon laptop and desktop sizes, a window smaller than the screen
WebGL rendererA software renderer (SwiftShader, llvmpipe) on a server with no GPUA real GPU name
FontsThe few fonts of a Linux serverThe fonts of the OS the user agent claims
Time zone and languageUTC and en-US everywhereThe time zone and language of the user's location
Automation tracesVariables and side effects of ChromeDriver or the DevTools ProtocolNone
TLS and HTTP/2Normal in a real browser; a library's handshake in HTTP clientsThe browser's own handshake
BehaviorInstant clicks, no mouse movement, the same timing every timeIrregular human timing

No single signal decides. Most systems combine them into a score, and the strongest evidence is a contradiction: a signal that cannot be true together with another one.

How do websites detect Selenium?

Selenium drives the browser through ChromeDriver or geckodriver over the WebDriver protocol, and that leaves four kinds of evidence:

  1. The WebDriver flag

    Under WebDriver, navigator.webdriver returns true. It is the first thing many scripts read.

  2. Driver artifacts

    Older ChromeDriver builds left variables in the page (the cdc_ names), which detection scripts searched for; patched drivers such as undetected-chromedriver were built to remove them.

  3. Launch defaults

    Automation flags, an empty profile with no history, extensions or saved cookies, and a fixed window size.

  4. Mismatches with the network

    A server in one country with a residential IP in another, a time zone that doesn't match the IP, or a datacenter IP behind a "home user" browser.

The "Selenium browser fingerprint" a site sees is the sum of these. Selenium's own job is testing, not hiding, so it doesn't try to remove them. How to run Selenium with a proxy is in Selenium with proxies, and scraping with it in Selenium web scraping.

Can websites detect Puppeteer and Playwright?

Yes, for the same reasons, plus one of their own. Puppeteer and Playwright control the browser through the Chrome DevTools Protocol (Playwright also through its own protocol for Firefox and WebKit), and detection scripts can notice side effects of that connection in the page. They also inherit the headless tells: the HeadlessChrome user agent, software WebGL and default viewports. Patched builds such as Patchright, a Playwright fork, and CDP-free drivers such as nodriver exist because the stock libraries are visible to these checks (both repositories were updated in October 2026, checked on GitHub).

Playwright's Firefox is a patched build, not the Firefox users run, which some checks can tell apart. Firefox-based scraping browsers such as Camoufox change fingerprint values at the engine level instead of through injected JavaScript. Setup guides: Puppeteer with proxies, Playwright with proxies.

Easy Trial: 1 GB for $2.95.
Try for the price of 1 GB, no subscription, traffic never expires.

Why stealth plugins stop working

Stealth plugins patch the known tells with JavaScript injected before the page loads: they set navigator.webdriver to false, fill in plugins and languages, and fix the user agent. Two things wear them down:

  • Detection moves, plugins don't always. The best-known one, puppeteer-extra-plugin-stealth, lives in a repository with no push since July 2024 (berstend/puppeteer-extra on GitHub), while Chrome ships a new major version about every two weeks.
  • A patch can be a tell. A property overridden in JavaScript can behave differently from the native one, for example in how it looks when converted to a string or where it sits on the prototype. Scripts test for that.

So a stealth setup that passed last year can fail today without any change on your side. Test it again after every browser or library update.

How headless browsers and TLS fingerprints get caught together

A headless browser built on real Chrome sends Chrome's real TLS handshake, so its TLS fingerprint is fine; it is caught in the page, by the signals above. An HTTP library is the opposite: no page signals, but its handshake shows which library made it, whatever User-Agent it claims. Sites that check both catch each kind on its weak side. The TLS part is explained in TLS and TCP fingerprinting, and how headless mode works in what is a headless browser.

Clean proxy, leaking fingerprint

A clean residential IP helps with the IP's reputation and network type, nothing else. The browser behind it still shows its own fingerprint, and the two have to agree:

  • Time zone, language and locale should match the proxy's country (and city, if you target one). Playwright's locale and timezone_id set both in one place.
  • WebRTC can reveal the machine's real IP to the page if the browser isn't configured to send WebRTC through the proxy; test for leaks with the proxy on.
  • One fingerprint per IP session. Keep a sticky IP for a browser profile; a profile that changes IP on every page, or an IP that serves ten different fingerprints, is unusual.

ProxyField gives you sticky sessions from 30 s to 36 h, or a new IP per request, with country, region and city targeting, so the IP can match the profile's locale. ProxyField's success rate is 99.6%, according to our service data; on sites that score fingerprints, the browser side decides as much as the IP.

A fingerprint stack for scraping in 2026

What tends to work, from the network up:

  1. IP: residential or mobile IPs in the country you claim, sticky per browser session (residential proxies).
  2. Browser: a real, current Chrome or Firefox build, headful where you can, or Chrome's new headless mode; avoid outdated bundled builds.
  3. Driver: a library or patch that removes the automation traces, kept up to date with the browser.
  4. Profile: a persistent profile with cookies and history per identity, not a blank one per page.
  5. Consistency: user agent, client hints, screen size, fonts, time zone and language that all describe the same device.
  6. Behavior: realistic pacing, scrolling and waits; no request bursts.
  7. Test: run the stack against a fingerprint test page, such as CreepJS, before you point it at a target.

Changing fingerprint values on purpose is a technique of its own, with its own limits: see fingerprint spoofing.

When fingerprinting means "stop"

Some fingerprinting isn't about scrapers at all. Login pages and payment checkouts run fraud checks on device and browser signals to stop account takeover and card fraud. Automating those flows is not public data collection; ProxyField's acceptable use policy restricts financial services and doesn't allow access to data behind logins you are not entitled to. Before you scrape, check what the site allows: is web scraping legal.

Give the browser an IP that matches it. ProxyField residential proxies: 412M+ residential IPs, sticky sessions up to 36 h, country, region and city targeting, from $1.95/GB with no subscription. Start with the Easy Trial (1 GB); traffic never expires, and all purchases are final.

Browser Fingerprinting in Web Scraping FAQ

How do websites detect Selenium?

ProxyField's residential IPs, from $1.95/GB, cover only the network side; websites detect Selenium from 4 kinds of evidence: the navigator.webdriver flag, which is true under WebDriver, leftover driver variables, launch defaults such as an empty profile and a fixed window, and mismatches between the browser and the network. The strongest signal is a contradiction, such as a Windows user agent with Linux fonts or a time zone that doesn't match the IP.

Can websites detect Selenium and Playwright?

Yes. Both leave automation traces in the page, and in headless mode both show headless tells such as the HeadlessChrome user agent and software WebGL. Patched drivers remove some traces, but sites that combine many signals can still score them.

Can Playwright be detected?

Yes. Stock Playwright exposes automation through navigator.webdriver, side effects of the DevTools Protocol and headless defaults, and its Firefox and WebKit are patched builds that differ from the browsers users run. Patched forks reduce the traces but don't remove the need for a consistent profile and IP.

Can websites detect Puppeteer?

Yes. Stock Puppeteer is visible through navigator.webdriver, the HeadlessChrome user agent, default viewports and traces of the DevTools Protocol connection. Stealth plugins patch some of these, but they can fall behind new detection checks.

Which browser fingerprint signals do websites check?

The common ones are navigator.webdriver, the user agent and client hints, screen and window size, fonts, canvas and WebGL output, time zone and language, plugins, the TLS handshake, and behavior such as mouse movement and timing. Anti-bot systems combine them into a score rather than trusting any single one.

How do sites detect headless browsers and TLS fingerprints?

A headless Chrome sends Chrome's real TLS handshake, so it's caught in the page by headless tells; an HTTP library has no page but a handshake that shows which library made it. Sites that check both catch each client on its weak side.

Why did Puppeteer Stealth stop working?

Because detection kept changing while the plugin didn't: its repository has had no push since July 2024, and Chrome ships a new major version about every two weeks. Its JavaScript patches can also be detected themselves, since an overridden property doesn't behave exactly like the native one.

Why are Selenium and Playwright detected by Cloudflare even with stealth?

Stealth patches only the page-level tells it knows; Cloudflare also scores the IP, the TLS handshake, request rate and behavior, and it updates its checks. A datacenter IP, a burst of requests or a contradiction the plugin doesn't cover is enough to trigger a challenge.

My proxy is clean, so why does my browser fingerprint still get me blocked?

A clean IP helps only on the IP side; the browser still shows its own fingerprint. Match the time zone and language to the proxy's country, stop WebRTC from leaking your real IP, and keep one sticky IP per browser profile.

Which anti-bot techniques should I use with Selenium?

Remove the automation traces with a maintained patched driver, run a real current browser with a persistent profile, keep the user agent, screen, time zone and language consistent, pace requests like a person, and use residential IPs in the country you claim. Test the setup on a fingerprint test page after each update.

Show 2 more questionsShow fewer questions

What fingerprint stack should I use for scraping in 2026?

Residential or mobile IPs with sticky sessions, a real current browser (headful or Chrome's new headless mode), a driver that removes automation traces, a persistent profile per identity, and one consistent set of user agent, screen, fonts, time zone and language. Re-test after every browser or library update.

How does browser fingerprinting affect web scraping?

It lets a site block a scraper even when the IP and headers look fine, because the browser itself reveals automation or contradicts the identity it claims. It also links requests from many IPs to one client, so rotating IPs without changing anything else may not help.

Easy Trial: 1 GB for $2.95.

Try for the price of 1 GB, no subscription, traffic never expires.