UNPKG

browser-canvas-fingerprinting

Version:

A simple canvas fingerprinting implementation in browser with specific information used to generate fingerprint

33 lines (30 loc) 1.19 kB
import sha256 from './sha256.js'; import data from './data.js'; import { drawDirectly, drawWithWorker } from './core.js'; import { exportCanvasData } from './exportcanvas.js'; import { extensionBlocked } from './antiextension.js'; // exports export { exportCanvasData }; export { default as getData } from './data.js'; export { isExtensionFuckingCanvas } from './detection.js'; export { sha256, asha256, bsha256 } from './sha256.js'; async function direct() { const canvas = await drawDirectly(); try { const cvs_data = (await exportCanvasData(canvas)); return cvs_data; } catch (e) { extensionBlocked.value = true; const cvs_data = canvas.toDataURL("image/png") + ';fake;user=' + (await data()).join(';'); extensionBlocked.value = false; return cvs_data; } } export default async function fingerprint(key = '', Optional_OutputOption = 0) { if (Optional_OutputOption === 2) return await drawDirectly(); if (Optional_OutputOption === 1) return await direct(); let ret = null; try { ret = await drawWithWorker(); } catch { ret = await sha256(await direct()); } return await sha256(ret + '@' + key); }