@ch1/browser-dna
Version:
Browser DNA is a tool for generating web browser fingerprints
58 lines • 1.82 kB
JavaScript
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