Everything a site can read about your location
Location leaks from many independent surfaces, and they are supposed to agree:
- Browser timezone -
Intl.DateTimeFormat().resolvedOptions().timeZonereturns a named zone like"Europe/Berlin";new Date().getTimezoneOffset()returns the numeric offset. Both come from the OS. - Language -
navigator.language,navigator.languages, and theAccept-Languageheader. - IP geolocation - the server maps the connecting IP to a country/region/city via a GeoIP database (MaxMind and similar).
- Geolocation API - if granted, exact GPS coordinates.
- Locale-derived signals - currency, number/date formatting, and even the set of bundled fonts can hint at region.
On a real device these line up because they all trace back to where the person installed and configured their OS. A scraper assembles them from different places - a US server timezone, a default en-US locale, and a proxy IP in Brazil - and the seams show.
Why rotating proxies make it worse
The mismatch is most damaging with rotating proxies. The browser process keeps one timezone for its whole lifetime, but the exit IP may hop from Germany to Japan to Brazil across requests. Within a single session the timezone is now wrong for two of the three countries. Worse, an IP that changes country mid-session while the timezone stays fixed is itself a behaviour no real user exhibits - the inconsistency is not just static but temporal.
Anti-bot vendors specifically watch for: timezone offset that does not match IP country, Accept-Language that does not match IP country, and an IP whose country changes while client-side geo signals stay constant. Any one of these is a soft signal; two together is usually a block.
Keeping geo coherent
The fix is to derive every location signal from the exit IP, per session, rather than leaving OS defaults. That means: set the browser timezone to the IP's zone, set navigator.languages and Accept-Language to a locale plausible for that country, and if geolocation is granted, return coordinates inside the IP's region. Pin the proxy to one country for the lifetime of a session so the timezone never contradicts a later request.
Serious anti-detect browsers and managed scraping APIs automate this: they look up the proxy exit IP, then configure timezone, locale, language, and geolocation to match before the first navigation. This is exactly why frameworks warn against using a separate proxy-auth path that the fingerprint layer is unaware of - if the browser does not know the exit IP, it cannot align the timezone to it. Geo coherence is a clustering problem, not a single setting: see fingerprint clustering.
