Fingerprint is a set of data that a website or service collects about a visitor’s browser and device to distinguish one user from another without the use of cookies. It consists of many parameters, with some of it coming with the HTTP request, some available through JavaScript, and some derived from interaction with graphics and sound.
Here are the types of data most often included in Fingerprint.
This includes HTTP headers and network attributes that the server receives by default: User Agent, Accept, Accept-Language, Accept-Encoding, presence and content of Сookies, and IP address. These fields provide basic information about the browser and system.
When an HTTPS connection is established, the client sends a ClientHello with a set of supported ciphers, extensions, and other options. Methods like JA3 turn these fields into a hash and use it as the client’s network fingerprint. TLS fingerprints are especially useful at the network level, they are visible before HTTP is sent and work independently of Cookies.
JavaScript provides many indirect signals: navigator.userAgent, navigator.platform, navigator.languages, screen.width/height, screen.colorDepth, timezone offset, presence of cookies, WebGL support, hardware number of cores (hardwareConcurrency), device memory size (deviceMemory), and more. Commercial fingerprinting libraries query these properties first.
HTML5 Canvas and WebGL provide a way to render graphics and see what pixels the renderer returns. Differences in rendering arise due to OS, drivers, GPU, font versions, and even small differences in hardware implementation. This is what makes Canvas/WebGL a powerful addition to the standard options.
The Web Audio API allows you to generate signals and measure their processing by the browser’s audio stack. Small variations in audio rendering depend on the audio subsystem and can be used as an additional indication. Audio vectors are not always as varied as graphic vectors, but they complement other parameters well.
A list of installed system fonts and available plug-ins helps to distinguish between machines. Fonts are particularly informative: their number and set are highly dependent on the OS and installed applications. MIME types, registered file types, and more are also detected.
Sensors and hardware features
The presence of a touch screen, number of touch points, screen orientation, battery level (if API available), data about connected devices, all add attributes to the fingerprint. Some of these parameters are dynamic, but in combination provide additional information.
Through WebRTC, ICE queries can get local IP addresses of the device in some configurations. They also collect rendering timings and JavaScript execution timings – performance profiles help distinguish between different hardware combinations.
How these parameters are combined and why
An individual parameter is rarely unique. A fingerprint is a vector: many weak features combine to produce high uniqueness. Commercial and research solutions use machine learning and heuristics to combine hundreds of fields into a single identifier. For security, fingerprints are being used for anti-fraud, risk management, and marketing.
To minimize the possibility of your Fingerprint being created, use the 0DETECT anti-detect browser.