AEZAKMI API + интеграция с SELENIUM

AEZAKMI_ RU
4 min readMay 6, 2020

--

API для партнеров и пользователей

Для интеграции в ПО и автоматизации работы с браузерными отпечатками AEZAKMI, в нашем сервисе предусмотрены вызовы API возвращающие ответы в формате JSON

Все API вызовы настроены на прием POST запроса с данными в JSON формате.

Для проверки вашей лицензии — в заголовке “authorization” каждого POST запроса на API Aezakmi требуется указывать ваш аутентификационный ключ

//Headers
authorization: "ApiKey"
Пример: authorization: eyJsb2dpbgiI6Im04bmc4dbCIsInBhc3N3b3JkIjoiOC96UTJEd3RSaf2VpOHJaOHdEOWZRdQXY2W45mxwR09TLzJ5TGN3dEx1a0FvVT0ifQ==

API Key можно получить, открыв выпадающее окно по кнопке расширения.

Необходимо нажать право клавишей на рабочую область расширения и выбрать “Просмотреть код”

После чего - в появившемся окне - необходимо перейти на вкладку “Console”, и ввести там:

localStorage.getItem("token")

Полученное значение и есть Api Key

Методы API

Создание профиля отпечатка.

POST https://account.aezakmi.run:2087/api/create_fast_profile

authorization: APIKEY

Content-Type: application/json

POST DATA (JSON)

Обязательные параметры

  • profileName: Желаемое имя профиля. (string)
  • login: Ваш логин в Aezakmi. (string)
  • timestamp: текущее время создания профиля в милисекундах c 1 января 1970 года. Стандартное обозначение времени во всех языках програмирования и операционных системах. (int)

В Linux можно получить с помощью команды date ‘+%s’. В JavaScript — new Date(). Можете всегда обратиться в наш саппорт — мы подскажем как получить это значение.

  • canvasNoise: Позволяет указать нужно ли зашумлять работу canvas рендеринга для получения уникального значения в отпечатке. Допустимые значения: true — зашумлять. false — не зашумлять. (boolean)
  • webglNoise: Позволяет указать нужно ли зашумлять работу webgl рендеринга для получения уникального значения в отпечатке. Допустимые значения: true — зашумлять. false — не зашумлять (boolean)
  • audioNoise: Позволяет указать нужно ли зашумлять работу аудиобуфера для получения уникального значения в отпечатке. Допустимые значения: true — зашумлять. false — не зашумлять (boolean)
  • doNotTrack: Позволяет указывать значение опции DoNotTrack на посещаемых сайтах. false — выключена. true — включена. (boolean)
  • ObserverWebRTC: Позволяет указать нужно ли отслеживать изменение выходного ip для автоматической смены WebRTC ip для предотвращения несоответсвия данных. false — выключен. true — включен (boolean)
  • enable911: Позволяет указать данные локального прокси от провайдера 911. false — выключен. true — включен (boolean)

Не обязательные параметры

Выбор отпечатка

  • browser: Позволяет указать желаемый браузер в отпечатке. Chrome или Firefox. Полный список доступных браузеров вы всегда можете посмотреть в личном кабинете при создании профиля. (string)
  • os: Позволяет указать желаемую операционную систему в отпечатке. Windows, Mac OS или Firefox. Полный список доступных операционных систем вы всегда можете посмотреть в личном кабинете при создании профиля. (string)
  • videocard: Позволяет выбрать желаемую модель видеокарты. (string)
  • width: желаемая ширина разрешения экрана. (int)
  • height: желаемая высота расширения экрана. (int)

Важно - значения высоты и ширины экрана не должны превышать ваше реальное разрешение экрана. Так же очень важно выбирать распространенные разрешения, например “width”: 1920 и “height”: 1080 — для FullHD мониторов. Реальные комбинации разрешений экранов вы можете посмотреть в личном кабинете при создании профиля.

Для того что бы точно подобрать отпечаток по всем фильтрам с учетом видеокарты — вы можете посмотреть все доступные комбинации отпечатков в этом JSON файле https://gist.github.com/chelovekula/a7350226e8c1f03ef3454575fbed85a9

Прокси

Эти значения нужно заполнять только если хотите использовать прокси в отпечатке. В ином случае их можно оставить пустыми.

  • proxyProtocol: Протокол вашего прокси http \ https \ socks4 \ socks5 (string)
  • proxyIp: ip адрес или домен вашего прокси. (string)
  • proxyPort: порт вашего прокси. (int)

Не на всех прокси есть логин и пароль. В таком случае эти значения можно оставить пустыми.

  • proxyLogin: логин вашего прокси. (string)
  • proxyPassword: пароль вашего прокси. (string)
  • cookies: Позволяет загрузить в ваш профиль куки в json формате. Можно оставить пустой строкой. (object in array[0])

Пример:

{

“audioNoise”: true,

“browser”: “Chrome”,

“canvasNoise”: true,

“cookies”: [{“value”:”5%3AbPQ63RuVH2URRw%3A2%3A1578178208%3A-1%3A-1",”domain”:”.facebook.com”,”hostOnly”:false,”sameSite”:”no_restriction”,”storeId”:”0",”session”:true,”expirationDate”:1639341544,”secure”:true,”httpOnly”:true,”path”:”/”,”name”:”xs”},{“value”:”y”,”domain”:”.facebook.com”,”hostOnly”:false,”sameSite”:”no_restriction”,”storeId”:”0",”session”:true,”expirationDate”:1639341544,”secure”:true,”httpOnly”:true,”path”:”/”,”name”:”pl”}],

“doNotTrack”: false,

“enable911”: false,

“height”: 900,

“login”: “Alex”,

“os”: “Windows”,

“profileName”: “newAPI”,

“proxyIp”: “8.8.8.8”,

“proxyLogin”: “chel123”,

“proxyPassword”: “0f2op”,

“proxyPort”: 107,

“proxyProtocol”: “http”,

“timestamp”: 1592833464865,

“webglNoise”: true,

“width”: 1600,

“videocard”: “ANGLE (Intel(R) HD Graphics 4000 Direct3D11 vs_5_0 ps_5_0)”,

“ObserverWebRTC”: true

}

Удаление профиля отпечатка

POST https://account.aezakmi.run:2087/api/delete_current_user_profile

authorization: APIKEY

Content-Type: application/json

POST DATA (JSON)

profileName: Имя профиля для удаления

login: Ваш логин в Aezakmi

Пример:

{
"profileName": "APITEST6667",
"login": "admin"
}

Взаимодействие с Selenium

Получение отпечатка.

Для начала вам необходимо отправить на наш апи запрос с именем нужного профиля и вашим логином — + хедер autorization — для того чтоб получить объект отпечатка.

Пример:

curl--request POST \

--url https://account.aezakmi.run:2087/api/get_current_user_profile \

--header ‘authorization: eyJsb2dpbiI6IktvbiJBZnNZamRmZWeitqMDZjY3lWRDhISXdTejVaMU1i==’ \

--header ‘content-type: application/json’ \

--data ‘{

“profileName”: “APITEST”,

“login”: “Konin”

}’

Пример на JS: https://ghostbin.co/paste/9p8xb

В результате вы получите массив — нулевым элементом которого будет являться нужный вам объект отпечатка.

Затем вам необходимо будет начать взаимодействия с расширением браузера.

Для взаимодействия вам необходимо посылать команды в консоль расширения по адресу

chrome-extension://mgcamgpggangcolfjanejmldolohpcig/

(у вас ID расширения может отличаться — уточните его на странице управления дополнениями в браузере Настройки-Дополнительние инструменты-Расширения)

Старт профиля

Далее вам необходимо будет вызвать функцию start_profile_api и в качестве аргумента указать полученный вами объект профиля.

Например start_profile_api(fingerprintObject);

Профиль применяется примерно 20 секунд — после чего можно продолжать работать.

Проверка статуса.

После каждого нового применения профиля рекомендуем проверять статус его запуска с помощью вызова функции

check_status_api();

Она возвращает True или False.

Остановка профиля

Просто вызовите в консоли расширения функцию stop_profile_api(); без аргументов.

После того как поработали с отпечатком — необходимо обязательно останавливать профиль.

Механизм следующий

1 — Получаете объект отпечатка

2 — Стартуете профиль передав в функцию полученный отпечаток в качестве аргумента

3 — Проверяете статус

4 — Работаете

5 — Останавливаете профиль

6 — Получаете следующий отпечаток

7 — Снова стартуете профиль

….

9999 — Останавливаете профиль

_________________________________________________________________

Если у вас возникнут вопросы по использованию данных функций вы всегда можете обратиться к нам в поддержку:

Telegram: @aezakmisupport

Email: support@aezakmi.run

Сайт: www.aezakmi.run

--

--