Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Generating Unique User IDs with Browser Fingerprinting

Tech May 9 3

Browser fingerprinting is a technique for tracking and identifying users by collecting and analyzing characteristics of their browser and device to produce a unique identifier. Unlike cookie-based trackign, it is more difficult for users to detect and block, as it does not rely on data stored client-side. Common attributes collected include:

  • User agent string
  • HTTP accept headers
  • Screen resolution and color depth
  • Installed fonts and plugins
  • Timezone
  • JavaScript and cookie settings
  • Browser language
  • Operating system and version
  • WebGL renderer details

Implementation Process

  1. Data Collection: Utilize JavaScript and web APIs to gather the browser and device properties listed.
  2. Fingerprint Creation: Combine the collected data and apply a hash function, such as SHA-256, to generate a unique string serving as the browser fingerprint.
export default {
    data() {
        return {
            deviceId: ''
        };
    },
    mounted() {
        this.deviceId = this.createFingerprint();
    },
    methods: {
        createFingerprint() {
            const navData = navigator.userAgent + navigator.language + navigator.platform;
            const displayData = `${screen.height}x${screen.width}x${screen.colorDepth}`;
            const zone = Intl.DateTimeFormat().resolvedOptions().timeZone;
            const raw = navData + displayData + zone;
            return this.computeHash(raw);
        },
        computeHash(input) {
            let result = 0;
            if (input.length === 0) return result.toString();
            for (let idx = 0; idx < input.length; idx++) {
                const code = input.charCodeAt(idx);
                result = ((result << 5) - result) + code;
                result = result & result;
            }
            return result.toString();
        }
    }
};
<template>
    <div>
        <p>Device Fingerprint: {{ deviceId }}</p>
    </div>
</template>

This approach yields a consistent identifier across sessions within the same browser, enabling user distinction without login mechanisms. However, it cannot recognize the same user across different browsers. The method may be suitable for scenarios where users are expected to operate within a single browser enviroment. Its effectiveness in WebView contexts requires further validation.

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

Comprehensive Guide to SSTI Explained with Payload Bypass Techniques

Introduction Server-Side Template Injection (SSTI) is a vulnerability in web applications where user input is improper handled within the template engine and executed on the server. This exploit can r...

SBUS Signal Analysis and Communication Implementation Using STM32 with Fus Remote Controller

Overview In a recent project, I utilized the SBUS protocol with the Fus remote controller to control a vehicle's basic operations, including movement, lights, and mode switching. This article is aimed...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.