A script on the page reads dozens of small facts about your browser: user agent, platform, screen size, installed fonts, languages, timezone, number of CPU cores, how it draws a hidden canvas or WebGL scene, and how it processes audio. No single value is unique, but the combination often is, and it survives clearing cookies or opening a private window.

Why it matters with proxies

A proxy changes the IP address a site sees. It does not touch the fingerprint, because the fingerprint is collected by JavaScript running in your browser. Two problems follow:

  • Linking. Rotate the IP but keep the same fingerprint, and a site can still tell the visits come from one browser.
  • Mismatch. A fingerprint that says America/New_York and en-US arriving from a German IP is inconsistent, and risk engines score inconsistency.

In automation, set the browser's locale and timezone to match the proxy's location. In Playwright that is part of the context:

context = browser.new_context(
    locale="de-DE",
    timezone_id="Europe/Berlin",
    proxy={"server": "http://HOST:PORT", "username": "USERNAME", "password": "PASSWORD"},
)

Antidetect browsers do the same per profile for manual work.

How to see yours

Open a fingerprint test page such as the EFF's Cover Your Tracks through the setup you plan to use, and compare the reported timezone and language with the proxy's location. Headless browsers also leak automation flags such as navigator.webdriver, which is one reason a stealthy fingerprint takes more than a user agent string. The network-level cousin of this, the TLS fingerprint, is read before any JavaScript runs.