1 2var getFP = (() => { 3 4 function v2() { 5 Fingerprint2.getV18({ excludes: { userAgent: true, language: true, fonts: true, enumerateDevices: true, screenResolution: true, availableScreenResolution: true, doNotTrack: true, adBlock: true, plugins: true, fontsFlash: true, webdriver: true, colorDepth: true, deviceMemory: true, pixelRatio: true, hardwareConcurrency: true, timezoneOffset: true, timezone: true, openDatabase: true, cpuClass: true, webglVendorAndRenderer: true, hasLiedLanguages: true, hasLiedResolution: true, hasLiedOs: true, touchSupport: true, audio: true, localStorage: true, indexedDb: true, platform: true, hasLiedBrowser: true, sessionStorage: true } }, function (result, components) { 6 fin(result); 7 }); 8 } 9 function v3() { 10 FingerprintJS.load().then(fp => fp.get()).then(result => { 11 const c = { canvas: result.components.canvas }; 12 const visitorId = FingerprintJS.hashComponents(c) 13 fin(visitorId); 14 }); 15 } 16 17 function fin(result) { 18 console.log(new Date().getTime()); 19 fingerprint = result; 20 if (typeof cb == 'function') cb(result); 21 } 22 23 let cb; 24 return { 25 load: (callback) => { 26 cb = callback; 27 if (typeof FingerprintJS != 'undefined' && typeof FingerprintJS.load == 'function') { 28 v3(); 29 } else if (typeof Fingerprint2 != 'undefined' && typeof Fingerprint2.getV18 == 'function') { 30 v2(); 31 } 32 } 33 } 34})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.