Browser fingerprinting demo

// Browser fingerprint collector
function generateFingerprint() {
    const canvas = document.createElement('canvas');
    const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
    
    return {
        userAgent: navigator.userAgent,
        screenResolution: `${window.screen.width}x${window.screen.height}`,
        timezone: new Date().getTimezoneOffset(),
        cookiesEnabled: navigator.cookieEnabled,
        hardwareConcurrency: navigator.hardwareConcurrency || 'unknown',
        webglVendor: gl ? gl.getParameter(gl.VENDOR) : 'none',
        webglRenderer: gl ? gl.getParameter(gl.RENDERER) : 'none',
        fonts: getFontList()
    };
}

function getFontList() {
    const fonts = [
        'Arial', 'Times New Roman', 'Courier New', 
        'Comic Sans MS', 'Verdana', 'Georgia'
    ];
    return fonts.filter(font => {
        const span = document.createElement('span');
        span.style.fontFamily = font;
        span.style.position = 'absolute';
        span.style.left = '-9999px';
        span.innerHTML = 'abcdefghijklmnopqrstuvwxyz';
        document.body.appendChild(span);
        const width = span.offsetWidth;
        document.body.removeChild(span);
        return width !== document.createElement('span').offsetWidth;
    });
}

Last update: 2025-05-12 12:38