Skip to content

Instantly share code, notes, and snippets.

@Overbryd
Created April 12, 2023 18:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Overbryd/d2eeb6a20c8473efae506242d4c9211a to your computer and use it in GitHub Desktop.
Save Overbryd/d2eeb6a20c8473efae506242d4c9211a to your computer and use it in GitHub Desktop.
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