AlexanderMarginal
@AlexanderMarginal
Frontend web developer

Как генерировать хэш в fingerprint2?

Сейчас перед мной на работе стоит задача сделать 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));
}
  • Вопрос задан
  • 1201 просмотр
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Вы вообще ни тем занимаетесь!
Чтобы предотвращать headless кравлеры, нужно использовать поведенческий фильтр и правила на серверной стороне.
FP2 нужен для идентификации тонкого клиента (браузера) при создании токена доступа/авторизации. Если токен украдут из куков, то на другом клиенте отпечаток будет уже иным и с этим токеном зайти не получится.

Поясню на "пальцах": переназначаю(/заменяю/удаляю) в headless ваши js-функции на свои (через внедрение локального скрипта сразу после загрузки страницы) и весь Ваш труд - напрасен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы