Сейчас перед мной на работе стоит задача сделать antifrod скрипт который будет детектить автоматизацию процессов через всевозможный chrome headless и подобные штуки.
Я использую fingerprint2.js + UAParser + пара своих штук чтобы точно добавить в массив получнный от фингерпринта еще пару значений.
В фингерпринт используется fuzzyhash, то есть при смене одного-двух параметров хэш должен незначительно отличаться, как пишут в статьях.
У меня же при всех прочих равных на одном компьютере chrome, safari, firefox и chrome headless показывают совершенно разные хэши. Нормально ли это или я делаю что-то не так?
Как правильно сделать, чтобы при смене браузера хэш менялся не так значительно?
Сейчас это происходит вот так
Fingerprint2.get({
fonts: {extendedJsFonts: true},
preprocessor: (key, value) => {
if (key == "userAgent") {
const parser = new UAParser(value);
return parser.getOS().name + ' ' + parser.getBrowser().name;
}
return value
},
}, components => {
this.infoArray = components;
//...добавляем свои значения в this.infoArray...
this.createHash(this.infoArray);
});
createHash(components) {
const values = components.map(pair => {return pair.value}).join('');
this.setProp('values', Fingerprint2.x64hash128(values, 31));
}