Created
April 12, 2023 18:25
-
-
Save Overbryd/d2eeb6a20c8473efae506242d4c9211a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var botty = (function() { | |
'use strict'; | |
var d = { | |
// Record client timestamp | |
ct: new Date().getTime(), | |
ctD: 0, | |
// Record obvious red flags | |
rf: ( | |
window.callPhantom === undefined | |
&& window._phantom === undefined | |
&& window.phantom === undefined | |
&& window.__nightmare === undefined | |
&& (navigator.webdriver === undefined || navigator.webdriver === false) | |
&& document.__selenium_unwrapped === undefined | |
&& document.__webdriver_evaluate === undefined | |
&& document.__driver_evaluate === undefined | |
), | |
// Mouse movement data points | |
mmX: 0, | |
mmY: 0, | |
mmD: 0, | |
// Mouse click data point | |
mcC: 0, | |
// Scroll data points | |
sY: 0, | |
sD: 0, | |
// Keypress data points | |
kpC: 0, | |
kpT: new Date().getTime(), | |
kpTl: [], | |
kpTA: 0, | |
}; | |
// Record mouse movement travelled | |
window.addEventListener('mousemove', (event) => { | |
d.mmD = Math.abs(d.mmX - event.clientX) + Math.abs(d.mmY - event.clientY); | |
d.mmX = event.clientX; | |
d.mmY = event.clientY; | |
}); | |
// Record mouse clicks | |
window.addEventListener('click', (event) => { | |
d.mcC += 1; | |
}); | |
// Record scroll position travelled | |
window.addEventListener('scroll', (event) => { | |
d.sD = Math.abs(d.sY - window.scrollY); | |
d.sY = window.scrollY; | |
}); | |
// Record key press count and average time (ms) between key presses (last 100) | |
window.addEventListener('keydown', (event) => { | |
d.kpC += 1; | |
var kpT = new Date().getTime(); | |
d.kpTl.push(kpT - d.kpT); | |
d.kpT = kpT; | |
if (d.kpTl.length > 100) { | |
d.kpTl.shift(); | |
} | |
var sum = 0; | |
for (var i = 0; i<d.kpTl.length; i++) { | |
sum += d.kpTl[i]; | |
} | |
d.kpTA = sum / d.kpT.length; | |
}); | |
return function() { | |
d.ctD = new Date().getTime() - d.ct; | |
return btoa(JSON.stringify(d)); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment