UNPKG

@ch1/browser-dna

Version:

Browser DNA is a tool for generating web browser fingerprints

58 lines 1.82 kB
const w = window; const localScreen = w['screen'] || {}; const localNavigator = w['navigator'] || {}; const localDocument = w['document'] || {}; if (!localDocument['documentElement']) { localDocument['documentElement'] = {}; } if (!localNavigator['plugins']) { localNavigator.plugins = []; } const plugins = Array.prototype.slice.call(localNavigator['plugins'], 0) || []; export function create() { return { browserDepth: localScreen['pixelDepth'] || 0, browserHeight: localScreen['height'] || 0, browserWidth: localScreen['width'] || 0, concurrency: localNavigator.hardwareConcurrency || 0, os: localNavigator['platform'] || localNavigator['oscpu'] || '', plugins: plugins .map((el) => el['name'] + '.' + el['description']) .join(','), tzOffset: new Date().getTimezoneOffset(), usesTouch: 'ontouchstart' in localDocument['documentElement'] ? true : false, usesCookies: testCookies() }; } function testCookies() { const name = 'ch1-test'; let result; localDocument['cookie'] = `${name}=5`; if (parseInt(getCookie(name), 10) === 5) { result = true; } else { result = false; } deleteCookie(name); return result; } function getCookie(name) { const cookies = localDocument['cookie'] || ''; const db = cookies.split(';').reduce((s, el) => { const halves = el.split('=').filter(Boolean); if (halves.length !== 2) { return s; } s[halves[0]] = halves[1]; return s; }, {}); return db[name]; } function deleteCookie(name) { if (getCookie(name)) { localDocument['cookie'] = name + '=null;expires=Thu, 01 Jan 1970 00:00:01 GMT'; } } //# sourceMappingURL=browser-dna.js.map