Проблема. Отпечаток canvas.

Отпечатки canvas работают создавая html5 canvas элемент и когда пользователь посещает веб-сайт, его браузер получает указание 'нарисовать' скрытую строку текста или другую графику в этом элементе.

Затем полученное изображение преобразуется в массив данных, которые могут иметь небольшие различия в разных браузерах и на разных платформах. Это различие делает данные изображения довольно уникальными и, таким образом, может использоваться для отслеживания пользователей.

Пример:

Попиксельное сравнение canvas на Chrome и Firefox (используйте мышь):

Difference :

( 0, 0, 0, 0 ) -> ( 0, 0, 0, 0 )

Самый простой пример использования этой техники - получать уникальный идентификатор пользователя как хэш из данных canvas:

UserId = sha256(CanvasData)

Хеш останется неизменным даже после того, как пользователь сменит IP адрес или профиль браузера. Таким образом, сайт может, например, заблокировать несколько попыток регистрации с одного железа или заблокировать любые другие повторяющиеся действия.

Однако уникальный идентификатор пользователя полученный таким образом не является достаточно надежным, ведь если добавить случайный шум в данные canvas, то можно создать бесконечное число вирутуальных пользователей:

UserId1 = sha256(AddRandomNoise(CanvasData))
UserId2 = sha256(AddRandomNoise(CanvasData))
UserId3 = sha256(AddRandomNoise(CanvasData))
...

Изменяя значения всего лишь нескольких пикселей, можно создать новый идентификатор.

Подход с добавлением шума может ввести в заблуждение только простые системы, более продвинутые методы получения отпечатка canvas защищены от случайного изменения данных. Идентификация пользователя может включать в себя анализ данных canvas и обнаружение, были ли они созданы искусственно или получены из реального устройства:

IsRealUser = AnalyzeData(CanvasData) // true
IsRealUser = AnalyzeData(AddRandomNoise(CanvasData)) // false

Оценка аутентичности данных может быть произведена на основе:

  1. Хранения большого количества данных canvas в базе.
  2. Анализа каждого экземпляра, проверки, совпадает ли он с другими.

Если данные canvas, полученные от браузера, абсолютно уникальны (не соответствуют ни одному другому образцу базы), их можно считать поддельными.

Некоторые реализации этих техник есть в общем доступе:

https://browserleaks.com/canvas

https://amiunique.org/fp

Другим усовершенствованием подхода с анализом данных будет проверка значений пикселей, которые должны оставаться постоянными, независимо от аппаратного обеспечения или браузера, на котором они отображаются. В случае, если изображение «зашумлено», значения этих пикселей также могут измениться, а значит результат проверки такого браузера будет отрицательным.

Решение. PerfectCanvas.

Мы предлагаем подход, который может обойти даже самые сложные антибот системы. Идея заключается в следующем:

  • Отрисовать canvas на удаленной машине.
  • Отправить данные canvas на ваш компьютер.
  • Заменить данные внутри вашего браузера.

Данный подход имеет свои ограничения, но его преимущества огромны. Данные canvas будут абсолютно идентичны тем, которые получены из реального устройства. Это включает в себя не только значения пикселей, но также настройки формата изображения, уровень сжатия, параметры экспорта изображения и т. д. При задании данных таким образом, смена отпечатка canvas не может быть обнаружена даже при использовании самых сложных алгоритмов анализа данных.

Данные canvas для отпечатка получаются заранее, поэтому между запросом на визуализацию данных и ответом от браузера нет задержки. Это делает невозможным обнаружение поддельных данных путем анализа задержки ответа.

Описанная технология называется PerfectCanvas и может использоваться как с BrowserAutomationStudio, так и с FingerprintManager. Давайте рассмотрим ее более подробно.


PerfectCanvas добавляет идеально точную замену canvas к стандартной смене отпечатка. Отпечаток canvas очень важен, но это не единственный фактор. Если вы не знакомы со сменой отпечатка браузера, обратите внимание на сервис описанный на этой странице.

Для работы PerfectCanvas требуется подготовка. Необходимо получить «запрос PerfectCanvas» для сайта, с которым вы работаете. Фактически, «запрос PerfectCanvas» является единственной дополнительной вещью, которая требуется, и если запрос получен, вы можете продолжать работу точно так же, как со стандартной сменой отпечатка.

Важно понимать, что «запрос PerfectCanvas» требуется только один раз для каждого сайта, а не для каждого запроса. Таким образом, получив его один раз, вы можете повторно использовать его, чтобы получать неограниченное количество отпечатков.

Чтобы получить «запрос PerfectCanvas», вам необходимо зайти на сайт, с которым вы работаете, через специальный браузер. Этот браузер называется CanvasInspector, он бесплатный, простой в установке и использовании. Его основная задача - получение запроса. Ссылка для скачивания и примеры использования доступны ниже.

«Запрос PerfectCanvas» - это просто строка, которую можно скопировать/вставить, сохранить в текстовый файл и т. д. Она содержит все данные, необходимые для отрисовки canvas на удаленной машине.

Имея «запрос PerfectCanvas», вы можете получать отпечаток с заменой canvas точно так же, как и стандартный отпечаток - отправить запрос на сервер и получить ответ. Разница лишь в том, что нужно заполнять одноименное поле.

Схема работы следующая:

Как получить запрос PerfectCanvas

Чтобы получить «запрос PerfectCanvas», необходимо:

  1. Скачать, установить и запустить CanvasInspector (смотрите ссылки ниже).
  2. Открыть сайт с которым будете работать в CanvasInspector.
  3. Выполнить любые действия, которые необходимо будет совершать позже с заменой canvas. Например, если вы планируете выполнить авторизацию на определенном сайте, необходимо авторизоваться через CanvasInspector.
  4. Нажать кнопку «Сохранить запрос» в правом нижнем углу экрана. «Запрос PerfectCanvas» будет сохранен в буфер обмена.

CanvasInspector можно скачать по следующим ссылкам:


Версия 3.0.0 (рекомендуется).

Работает с версией BAS 24.8.* и выше.

Установщик, Архив


Версия 2.0.0.

Работает с версией BAS 24.7.* и ниже.

Установщик, Архив


Версия 1.0.0.

Устаревшая версия для BAS 23.*.* и ниже.

Архив


CanvasInspector полностью бесплатное и простое в установке приложение.

Кроме того, софт будет отображать любые попытки сайта получить отпечаток canvas. Вы сможете видеть список, каждая запись которого будет содержать изображение, код и другие полезные данные об получении отпечатка.

Некоторые сайты получают отпечаток прямо на основной странице, но более распространенная практика - делать это только тогда, когда пользователь пытается получить доступ к чувствительным страницам сайта, например, к личному кабинету. Поэтому очень важно не просто открыть сайт, но и выполнить все необходимые действия в браузере CanvasInspector.

Данное видео демонстрирует как получить «запрос PerfectCanvas» для Gmail:

Как получить запрос PerfectCanvas

Как использовать PerfectCanvas в BAS?

BAS расшифровывается как BrowserAutomationStudio. Это приложение идеально подходит для автоматизации любых действий в браузере Google Chrome. С софтом можно ознакомиться посетив эту страницу.

Для BAS уже существует модуль FingerprintSwitcher, который умеет эффективно изменять отпечаток браузера. По умолчанию FingerprintSwitcher будет изменять данные canvas, добавляя шум к получаемому изображению. Очень важно понимать, что если вы хотите применить PerfectCanvas, есть только одна вещь, которую вам нужно добавить к стандартной смене отпечатка через FingerprintSwitcher, а именно заполнение поля «Запрос PerfectCanvas». Остальные действия, которые необходимо выполнить, остаются абсолютно такими же.

Давайте рассмотрим процесс изменения отпечатка canvas шаг за шагом:

  1. Получить «запрос PerfectCanvas». Этот шаг описан в разделе выше.
  2. Использовать действие «Получить отпечаток», обязательно нужно заполнить параметр «Запрос PerfectCanvas».
  3. Использовать действие «Применить отпечаток» для полученных на предыдущем шаге данных.

Чтобы использовать PerfectCanvas, вам нужно иметь ключ FingerprintSwitcher.

После выполнения всех шагов, данные canvas, находящиеся в «запросе PerfectCanvas», будут заменены значениями с реальной машины.

Один и тот же «запрос PerfectCanvas» можно использовать несколько раз для получения новых отпечатков.

Данное видео показывает, как изменить отпечаток canvas с помощью BAS:

Как изменить отпечаток canvas в BAS

Как использовать PerfectCanvas в FM?

FM расшифровывается как FingerprintManager. Это приложение позволяет работать с отпечатками и профилями браузера в ручном режиме. С софтом можно ознакомиться посетив эту ссылку.

Изменение отпечатка браузера уже глубоко интегрировано в FingerprintManager. Чтобы добавить поддержку PerfectCanvas, вам необходимо заполнить поле «Запрос PerfectCanvas» при получении отпечатка. Это единственное изменение, необходимое для расширенной смены данных canvas, остальная часть рабочего процесса остается без изменений.

Чтобы начать использовать PerfectCanvas для существующих профилей, вам необходимо повторно получить новый отпечаток.

Использование старой версии замены canvas с добавлением шума работает до сих пор. Если вы хотите использовать старую версию, оставьте поле «Запрос PerfectCanvas» пустым.

Давайте рассмотрим процесс изменения данных canvas шаг за шагом:

  1. Получить «запрос PerfectCanvas». Этот шаг описан в разделе выше.
  2. Создать новый профиль или изменить отпечаток на уже существующий.
  3. Заполнить параметр «запрос PerfectCanvas».
  4. Нажать на кнопку «Применить», чтобы получить новый отпечаток.

После выполнения всех шагов, данные canvas, находящиеся в «запросе PerfectCanvas», будут заменены значениями с реальной машины.

Один и тот же «запрос PerfectCanvas» можно использовать несколько раз для получения новых отпечатков.

Данное видео показывает, как изменить отпечаток canvas с помощью FM:

Как изменить отпечаток canvas в FM

Ограничения

Альтернативное решение. Скорость получения отпечатков с данными canvas можно значительно повысить используя новый сервис - CustomServers.

Существуют некоторые ограничения по сравнению со стандартной сменой отпечатков из-за того, как реализован сервис. Эти ограничения в основном вытекают из того факта, что «запрос PerfectCanvas» заранее не известен, поэтому база данных отпечатков с canvas не может быть накоплена заранее. В отличие от стандартных отпечатков, мы должны точно знать, какое изображение canvas необходимо визуализировать, поэтому машины, на которых собираются отпечатки, всегда должны быть в сети. Этот факт сильно ограничивает скорость получения отпечатков.

Другое ограничение заключается в том, что одна машина не может быть источником отпечатков с одинаковыми «запросами PerfectCanvas». Это сделано, потому что повторное использование одного и того же отпечатка canvas потенциально может привести к его блокировке целевым сайтом. Другими словами, отпечаток canvas, который мы предоставляем, уникален для вас и не может быть повторно использован другим человеком.

Список ограничений вместе с советами о том, как уменьшить их влияние:


Однопоточность.

С помощью одного ключа FingerprintSwitcher можно одновременно получать только один отпечаток. Эта особенность не будет нарушать работоспособность вашего многопоточного приложение BAS, потому что другие потоки будут ждать своей очереди. Применив PerfectCanvas, вы получите скрипт, который работает медленнее, но он останется полностью функциональным.

Как уменьшить влияние?

Единственный способ заставить получение отпечатков работать быстрее - это купить несколько ключей.


Задержка между получением отпечатков для "ограниченных" ключей.

Если ключ куплен на 1 месяц, он считается «ограниченным». У «ограниченных» ключей присутствует задержка между каждым действием получения отпечатка, даже если они используются в однопоточном режиме. Сообщение, которое сервис вернет: «Key is not allowed to use right now, try again later». Это сообщение не нужно обрабатывать каким-либо особым образом, и BAS, и FM будут производить повторные запросы автоматически.

Как уменьшить влияние?

Вы можете купить ключ на 3 месяца или продлить свой ключ на один месяц за счет другого ключа.


Очередь запросов.

Если количество запросов слишком велико, а количество машин, из которых получаются отпечатки, слишком мало, очередь запросов может возрасти. Сообщение, которое будет возвращать сервис: «Waiting. Number in queue #номер». Это сообщение не нужно обрабатывать каким-либо особым образом, и BAS, и FM будут производить повторные запросы автоматически.


Запросы для популярных сервисов могут обрабатываться медленнее.

Мы не разрешаем повторно использовать отпечатки для одних и тех же запросов canvas. Это может привести к медленному продвижению в очереди в случае, если множество других пользователей ожидают получить отпечаток с тем же изображением. Эта ситуация может проявляться в виде сообщения от сервера «Waiting. Number in queue #номер» с относительно низким номером. Номер очереди также может уменьшаться очень медленно.


Редкие комбинации тегов могут загружаться медленнее.

Примером популярной комбинации тегов будет «Microsoft Windows,Chrome», примером редкой - «Firefox,Mobile». В случае, если требуется редкая комбинация, может быть очень ограниченное количество устройств, соответствующих запросу, или их может не быть вообще.

Как уменьшить влияние?

Рекомендуется использовать * в качестве параметра «Теги», тогда запрос будет соответствовать любому устройству.


WebGL еще не реализован.

Замена данных, генерируемых с помощью WebGL, еще не реализована, работает только замена данных полученных с помощью canvas.


Сервис все еще находится в бета-версии.

В данный момент сервис все еще находится на стадии бета-версии, могут возникнуть ошибки или непредвиденное поведение.

Вопросы-Ответы


Могу ли я использовать PerfectCanvas в обычном браузере?

Нет. Смена отпечатка в обычном браузере означает, что замена будет производиться с помощью JavaScript, такой подход легко обнаружить. Вместо этого мы изменяем исходный код браузера. Используйте BAS, если вы хотите автоматизировать работу, и FM, если хотите управлять в ручной режим. Оба приложения поддерживают PerfectCanvas.


Есть ли бесплатная или пробная версия?

Нет.


Как я могу купить ключ?

Вам нужно купить ключ FingerprintSwitcher, используя эту ссылку. Этот ключ дает доступ ко всем функциям PerfectCanvas. Обратите внимание, что ключи сроком на 1 месяц имеют 5-минутную задержку между каждым успешным запросом для получения отпечатка.


Нужен ли BASPremium, чтобы использовать PerfectCanvas?

Не обязательно, бесплатная версия также поддерживается.


Есть ли версия для Mac или Linux?

Нет, поддерживается только Windows.


Что произойдет, если я зайду на сайт, который не содержится в "запросе PerfectCanvas"?

Если «запрос PerfectCanvas», был подготовлен для «сайта A», и вы посещаете «сайт Б», то данные canvas для «сайта Б» будут заменены с помощью добавления шума. Если вы хотите, чтобы данные canvas заменялись для обоих сайтов, необходимо подготовить запрос как для «сайта A», так и для «сайта Б».


Как убедиться, что данные canvas были заменены?

Для этого проверьте лог в файле BrowserAutomationStudio/apps/ТЕКУЩАЯ_ВЕРСИЯ_BAS/s/ID_ПРОЦЕССА.txt. В FingerprintManager можно посмотреть лог нажав на ссылку «Показать лог замены canvas».


Что делать, если "запрос PerfectCanvas" изменился?

Если «запрос PerfectCanvas» изменен, это означает, что сайт изменил код для отрисовки изображения. В этом случае необходимо обновить «запрос PerfectCanvas» сгенерировав его заново.


Может ли «запрос PerfectCanvas» меняться постоянно?

Если «запрос PerfectCanvas» меняется при каждом посещении сайта, это означает, что сайт не сможет создать базу данных для анализа аутентичности. Таким образом, методы определения уникальности данных canvas не могут быть использованы. В этом случае добавление шума в изображение будет достаточно. Также есть вероятность, что canvas на таком сайте не используется для получения отпечатка.


Как автоматически получить "запрос PerfectCanvas"?

Для этого используйте дополнительный модуль


Могу ли я использовать PerfectCanvas внутри скомпилированного скрипта?

Да, для этого вы должны получить «запрос PerfectCanvas» и поместить его в своем скрипте. Допускается вариант, когда вы сохраните данные прямо при вызове действия «Получить отпечаток». Если «запрос PerfectCanvas» изменится, скрипт необходимо будет обновить.