Идентификация браузера пользователя. Canvas и WebGL fingerprint как замена cookies.

Для идентификации пользователя (устройства на котором он работает) давно придуманы cookies. Механизм определения пользователя/браузера по cookies в последнее время стал ненадежным (режим инкогнито, можно сбросить и пр.).

Появились EverCookies или ZombieCookie, которые пытаются сохраниться в большом количестве мест и обычному пользователю уже непросто их вычистить, если, конечно, он не работает в режими инкогнито. В нем ничего на диск не сохраняется, поэтому EverCookies работать не будут.

Чтобы идентификация браузера пользователя работала и без cookies появились технологии построения цифровых отпечатков (fingerprint). Наиболее широко используемые Canvas fingerprint и WebGL fingerprint. Пожалуй, самая популярная библиотека для получения цифрового отпечатка — FingerprintJS2, написанная нашим соотечественником Валентином Васильевым:  https://github.com/Valve/fingerprintjs2. Обнвления сделаны несколько месяцев назад, так что разработка активна. Подробно о технологиях идентификации он рассказывает здесь.

Другая распространенная библиотека — ClientJS: https://clientjs.org/ В ней также используется Canvas Fingerprint, но, похоже, нет WebGL fingerpring. Либа не обновлялась 2 года, видимо автор забросил проект.

Отдельно скрипт для WebGL fingerprint есть здесьhttps://codepen.io/jon/pen/LLPKbz. Хэш полученный с помощью этой либы совпадает с результатами https://browserleaks.com/webgl.

Есть скрипт для расчета Canvas Fingerprint: https://github.com/kmowery/canvas-fingerprinting.

Самый серьезный сервис для расчета fingerpring — https://www.augur.io/ Он с некоторых пор перестал быть open-source и мне не удалось найти сырцы, когда он был opensource. Сейчас это «облачный» сервис на котором мне не удалось пройти регистрацию, чтобы получить демо доступ. Ну и, посокльку, сервис облачный — он не годится для проектов, где нужен максимально быстрый отклик.

Есть некоторый проект https://amiunique.org для проверки насколько браузер анонимный https://github.com/DIVERSIFY-project/amiunique. Там также используются куски кода для получения fingerprint, но, судя по всему, они взяты с FingerprintJS2.

Cерьезный сервис для тестирования анонимности — https://panopticlick.eff.org/. Собственно, исследование  Electronic Frontier Foundation и данный сервис и привели к тому, что появились технологии для расчета fingerprint, поскольку они доказали на практике, что браузер можно уникально идентифицировать в ~94% случаев. К сожалению, сырцы для расчета fingerprint они не открывают. Возможно, используются какие-то из указанных библиотек.

Уже упоминал проект https://browserleaks.com/ в котором используются различные способы идентификации браузера. Судя по всему там также используется код FingerPrintJS2.

Интересное описание по Device Fingerprint: http://www.darkwavetech.com/index.php/device-fingerprint-blog/?disp=posts.

Любопытная статья с общим обзором и ссылками на различные системы формирования отпечатка.

Browser Fingerprinting: What Is It and What Should You Do About It?

Spread the love
Запись опубликована в рубрике IT решения для бизнеса. Добавьте в закладки постоянную ссылку.