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
JavaScript
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);
}