Scrapeless Wiki

What Is Geolocation Fingerprinting? – Definition and How It Works

Informational P3 what is geolocation fingerprinting

Learn how the Geolocation API is cross-checked against IP location and timezone, and why permission state matters most.

Geolocation fingerprinting uses the browser's Geolocation API β€” and, more often, the state of its permission β€” as a signal, cross-checked against the location implied by the request's IP address.

1. Permission State Comes First

Most sites never obtain coordinates, because most users never grant the permission. What they can read without any prompt is the permission's state:

const s = await navigator.permissions.query({name: 'geolocation'});
s.state    // "granted" | "denied" | "prompt"

prompt is by far the most common state for a real user on a first visit. A session reporting granted without any interaction is unusual, and a fleet uniformly reporting granted is a clear pattern.

2. Coordinates Are Cross-Checked

Where coordinates are available, the check is straightforward and decisive: do they agree with the IP address's geolocation?

Situation Interpretation
Coordinates match IP region Consistent
Coordinates far from IP region VPN, proxy, or spoofing
Coordinates exact to many decimals, unchanging Configured, not measured
Coordinates precisely a city centre A default, not a device

The last two are the automation tells. Real GPS or WiFi-derived positions carry noise and an accuracy value; a hardcoded latitude and longitude sitting exactly on a city's canonical coordinates does not.

3. Accuracy Is Part of the Signal

The coords.accuracy field reports the estimated radius in metres. Real values vary by source: GPS gives tens of metres, WiFi triangulation hundreds, IP-based fallback thousands.

A position with an implausibly small accuracy, or a constant accuracy across every session, is inconsistent with how real positioning behaves.

4. The Proxy Coherence Problem

This is where it matters most for collection. A browser configured with fixed coordinates while proxies rotate across countries produces the same contradiction that timezone mismatches produce β€” a static location against a moving apparent one.

If geolocation is granted at all, it must move with the exit:

context = browser.new_context(
    proxy={"server": proxy_url},
    timezone_id="America/Sao_Paulo",
    locale="pt-BR",
    geolocation={"latitude": -23.5505, "longitude": -46.6333, "accuracy": 120},
    permissions=["geolocation"],
)

The stronger option, though, is usually to not grant it. An ungranted permission reveals only prompt β€” the most common real state β€” while a granted one creates a fact that must be kept consistent with everything else.

5. Location Affects the Data Too

Independently of detection, location changes what many sites return: prices, currency, availability, delivery estimates, store listings, and legal notices.

That makes location a data-quality parameter, not just a stealth one. An unpinned location means results reflect whatever the environment implied, which is a silent inconsistency in a dataset. Pin it, and record it with the data.

6. Where Sites Get Location Without the API

Worth knowing that the API is often irrelevant, because sites infer location from:

  • The egress IP address, which needs no permission.
  • Accept-Language and locale.
  • A stored preference cookie from an earlier choice.
  • An explicit store or region selector.

So a site can localise perfectly without ever prompting. Where a site decides by IP, no browser configuration changes the answer β€” only the exit location does.

7. Practical Guidance

  1. Do not grant geolocation unless the task requires coordinates.
  2. If granted, bundle it with proxy exit, timezone, and locale as one coherent unit.
  3. Include a plausible accuracy, and vary it rather than using a constant.
  4. Avoid exact city-centre coordinates; offset them slightly.
  5. Record the effective location alongside collected data, since it changes prices and availability.
  6. Check whether the site uses IP rather than the API before assuming the permission matters.

8. Summary

Geolocation fingerprinting relies mostly on permission state β€” where prompt is the normal real-world value β€” and, when coordinates exist, on whether they agree with the IP address's region.

Static exact coordinates with constant accuracy against rotating proxy exits is the contradiction to avoid, so either bundle location with exit, timezone, and locale coherently, or simply do not grant the permission β€” and remember location changes prices and availability, making it a data-quality setting as much as a detection one.