Web Scraping & Automation

Browser Fingerprinting and Proxies

How browser and device fingerprinting works, which signals give automation away, why fingerprints must match proxy location, TLS fingerprints, and tools to manage fingerprints alongside proxies.

By Team of Monkeys Editorial Updated 4 min read Affiliate disclosure

This guide contains affiliate links to Geonode. If you buy through them we may earn a commission, at no extra cost to you.

The IP is only one signal

A proxy changes your IP address. It doesn't change your browser, your device or your behaviour. Modern websites, and the bot protection services they use, collect dozens to hundreds of signals from your browser to build a fingerprint. If the fingerprint is suspicious, inconsistent with the IP, or shared across many supposedly separate users, a perfect residential proxy won't save you.

What goes into a browser fingerprint

CategoryExamples
Browser and OSUser agent, client hints, platform, version
DisplayScreen size, available size, colour depth, device pixel ratio
HardwareCPU cores (hardwareConcurrency), device memory, GPU vendor/renderer via WebGL
RenderingCanvas and WebGL rendering output, font rendering
FontsInstalled fonts list (via measurement)
LocaleLanguages, timezone, number and date formatting
MediaAudio context fingerprint, media devices
FeaturesSupported APIs, permissions, plugins
Automationnavigator.webdriver, headless quirks, CDP artefacts
NetworkWebRTC local/public IPs, connection type
BehaviourMouse movement, scrolling, typing cadence, timing

The network layer: TLS and HTTP/2 fingerprints

Before any JavaScript runs, servers can fingerprint how your client negotiates TLS (cipher suites, extensions, order) and HTTP/2 (settings, priorities). Hashes such as JA3 and JA4 summarise this. A Python or Go HTTP library has a very different TLS fingerprint from Chrome. If a request claims to be Chrome in its user agent but has a Python TLS fingerprint, that's a strong bot signal.

Real browsers (Puppeteer, Playwright, Selenium) have genuine browser TLS fingerprints. For HTTP clients, TLS-impersonating libraries such as curl_cffi can help. See Python requests proxies.

Consistency with the proxy

Bot protection checks whether the fingerprint makes sense for the IP:

  • Timezone should match the IP's region.
  • Language should plausibly fit the country.
  • Geolocation API responses (if permitted) should be near the IP.
  • WebRTC shouldn't reveal a different public IP. See WebRTC leaks.
  • DNS resolution shouldn't come from a different country. See DNS leaks.
  • Device type should fit the IP type (a mobile IP with a desktop fingerprint is a mild mismatch).

Consistency across sessions

If you rotate through 1,000 residential IPs but every request has the exact same unusual fingerprint, the site can group them as one actor. Conversely, if one account's fingerprint changes every login, that's suspicious too. The rule:

  • Scraping: vary fingerprints realistically across sessions; keep them stable within a session.
  • Accounts: keep each account's fingerprint and IP stable over time.

Proxy tip: If you need a pool to run this against, Geonode works with every tool in this guide: rotate per request for stateless pages, or hold a sticky session for logins and pagination. See Geonode for web scraping for working code.

Tools for managing fingerprints

  • Stealth plugins for Puppeteer/Playwright patch common automation leaks. See Puppeteer stealth and proxies.
  • Built-in emulation in Playwright and Puppeteer for locale, timezone, viewport, geolocation and user agent.
  • Antidetect browsers manage full, persistent fingerprint profiles per identity with a proxy per profile. See antidetect browser proxies.
  • TLS-impersonating HTTP clients for non-browser scraping.

Common mistakes

  • Spoofing a user agent that doesn't match other signals (claiming Safari on iOS with Chrome-on-Windows WebGL).
  • Randomising every fingerprint attribute independently, creating impossible combinations.
  • Ignoring timezone and language when using foreign proxies.
  • Forgetting WebRTC.

Consistency checklist for a proxied browser identity

SignalShould match
TimezoneProxy region
Accept-Language / navigator.languagesPlausible for the proxy country
Geolocation (if granted)Near the proxy
WebRTC public IPProxy IP (or none)
DNS resolverNot your home ISP
User agent and client hintsSame browser family and version
Platform, fonts, WebGLSame OS as the user agent claims
Screen sizeRealistic for the device type

Fingerprints for scraping vs accounts

  • Scraping: you want many plausible identities. Rotate realistic profiles between sessions; avoid one rare fingerprint across all traffic.
  • Accounts: you want one stable identity per account. Never change an account's fingerprint and IP at the same time without reason.

See antidetect browser proxies and proxy rotation strategies.

Testing your fingerprint the way sites see it

You can't fix what you haven't measured. Before blaming a proxy, look at your browser the way a detection script would, through the same proxy and session your automation uses:

  • Cover Your Tracks from the EFF shows how unique your browser looks and which attributes give it away.
  • BrowserLeaks has separate pages for WebRTC, canvas, WebGL, fonts, TLS and more, which helps pin down a specific leak.
  • AmIUnique compares your fingerprint with others it has collected.

A useful routine:

  1. Run the checks through the proxy in the exact browser setup you automate, headless or not.
  2. Note anything inconsistent with the proxy's location: timezone, language, WebRTC addresses.
  3. Run them again in a second session. Things that should change between identities (canvas noise, if you use it) should change; things that should stay constant per identity should stay constant.
  4. Save the results, and repeat after browser or library upgrades.

Treat these sites as diagnostics, not guarantees. Commercial bot protection uses its own, often stricter, signals. For leak fixes, see WebRTC leaks and proxies and DNS leaks and proxies; for tooling, antidetect browser proxies.

Key takeaways

  • Proxies change the IP; fingerprints (browser, hardware, locale, TLS) and behaviour can still identify or flag you.
  • TLS and HTTP/2 fingerprints are checked before any JavaScript runs; HTTP libraries differ from browsers.
  • Fingerprints must be consistent with the proxy's location and internally consistent with each other.
  • Vary realistic fingerprints across scraping sessions; keep them stable for accounts.
  • Use stealth tools, built-in emulation, antidetect browsers or TLS-impersonating clients as appropriate. See puppeteer stealth and proxies.

FAQ

Can websites identify me through a proxy?

Through fingerprinting and cookies, often yes, unless you manage those too.

Changing your browser's settings is generally lawful; what matters is how you use it. Follow site terms and applicable law.

Do I need an antidetect browser for scraping?

Usually not. They're mainly for managing multiple persistent identities.

Affiliate disclosure: Team of Monkeys is a Geonode affiliate. Links and banners marked as sponsored, and links to Geonode in the text, use our referral link, and we may earn a commission if you buy through them, at no extra cost to you. Our explanations and comparisons are written to be useful whichever provider you choose.

Editorial note: Proxy providers change their pools, features and prices often, so treat any figures here as typical ranges at the time of writing and confirm current terms with the provider before you buy.