Remark about anti fraud system.
Part I (Intro)
Ребятки, рад каждому, кто заглянул в этот гайд/статью и решил почитать мой поток мыслей. Постарался изложить в краткой и понятной форме основные аспекты и умения для базового понимания антифрод-систем и других наших любимых проверок.
Понимаю, что многие из вас и так знают и используют основы, но хочу, чтобы мы разложили материал по полочкам и извлекли для себя ценность.
Давайте вместе разберёмся, что означает само слово антифрод, фингерпринт, подберём нужный инструментарий и рассмотрим практический кейс.
Желаю приятного прочтения.
Part II (base)
Начинаем с простого, что это за слова такие были сверху и зачем они нужны?
Anti Fraud System - изначально это системы борьбы с мошениками, финансовыми махинациями, ботами и в нашем случаи абузерами. Кто для сайтов и платформ мошеник? Правильно! каждый сомнительный пользователь. Смотря в рамках крипто авантюры это могут быть абузеры которые выносят очередной проект фермами.
Заходя в интернет каждый браузер имеет свой профиль, лицо и особые приметы. И много платформ собирают эти данные, для анализа/защиты или других своих потребностей.
Правильно собраная пачка этих данных нам известна как Fingerprint.
Также сайты могут собирать не только лишь ваш отпечаток с ip адресом, а трекать полностью все движения на сайте, от движения курсора, случайного мисс клика, до времени нахождения на конкретной странице.
Часто нам будут встречаться такие системы защиты на разных сайтах:
Arkose Labs (Fun Captcha)
Cloudflare (Captcha, Turnstale Page)
Google (Recaptcha, Bot Detection)
HCaptcha (Invisiable, Passive)
FingerprintJS (библиотека которая собирает данные про пк и генерирует индитификатор фингерпринта)
Аналоги FingerprintJS. Чтобы получить более наглядное представление, загуглите, посмотрите на капчи их документации, виды лишним явно не будет.
Part III (Instruments)
По ходу нашего путешествия нам пригодятся разные приложения и боты — это и будет наш инструментарий.
Первым инструментом будет такой дискорд сервер: Зашли на сервер, давайте посмотрим, что там есть.
Cлева, среди веточек есть antibot-test
и там:
Api Sniffer - показывает какие web APIs используют на сайте и с какими он скриптами они взаимодействуют.
Antibot test - проверяет наличие антибот/антифрод систем на сайте.
Browser monitor - трекер который следит за обновлениями хрома, а также пишет что поменялось в новой версии.
Остальные разделы можете изучить самостоятельно — там всё довольно понятно.
Для анализа сайтов, нам также пригодиться один из сниферов трафика(последнее время я использую charles) для того чтобы удобно смотреть куда идут наши запросы и что получают в ответ.
Из популярных это:
Burp Suite
Charles Proxy
WireShark
Не забываем, что выбранную программу придётся подкрутить - как это сделать, легко найдёте на YouTube.
После того как нужный софт установлен и готов к работе вам нужно:
Cделать чистый профиль хрома, Уставить только одно расширение кошелька (если есть в этом потребность).
Такой минимализм нужен для удобства, вам будет проще работать без лишних запросов.
Part IV (Practic Case)
Заскучали уже от всей этой теории? Я тоже! Предлагаю перейти к самому интересному!
1) Eye Review :
Заходим на сайт, просто осмотритесь, покликайте, поскрольте.
Особое внимание уделяем подрузкам страницы, наличии разных видов каптч и проверок. Мониторим и URL самого сайта, запоминаем пути где есть проверки.
2) Discord check:
Переходим в дискорд сервер, копируем наш url, заходим в бота и воркаем с ним.
Проверяем сначала через API сниффер.
Скролим дальше, опять дискорд, юзаем второго бота:
Что же нам тогда делать, и как понять что мы передаем при запросе токенов на кране?
На этом моменте в тусовку влетают сниферы трафика и много терпения.
Заходим на сайт, делаем жесткую перезагрузку (f12, пкм на кнопку reload страницы), с очисткой кеша и закрываем вкладку не дожидаясь загрузки страницы.
Запускаем наш софт, включаем запись трафика, открываем новую вкладку, переходим на сайт, и поэтапно, подконтрольно выполняем то что нам нужно проверить и следим за запросами.
На тот момент кран не работал, спустя время они поменяли endpoint, и он зароботал.
Наблюдаем: адрес нашего кошелька, токен от Cloudflare и... visitor ID. Интересный момент — он у меня был такой же, как и на предыдущей версии крана. Почему так? Давайте разбираться.
Что за визитор ид и откуда он?
Нашли его сеттер скорее всего тут собирают объект Agent (про него немного позже), первое на что обращаем внимание, это coment внизу, где написано updrage to pro и линк. Попробуем перейти по нему https://fpjs.dev/pro.
Теперь знаем что они используют связку fingerprint js + cloudflare.
Но давайте убедимся в нашей теории и попробуем подсмотреть что же содержит в себе фингерпринт.
То что мы нашли это хорошо но полную картину так и не поняли. Предлагаю обратится к github библиотеки fingerprint js, мы примерно увидели что там должно быть и серчим в этом векторе дальше.
Переходим в директорию sourсes:
Данные наши содержатся в таком объекте.
Agent:
сам visitor id
confidence - наш скор
components - полный розвернутый фингерпинт, который на скриншоте выше формирутся.
Тут находятся файлы с одинаковыми названиями на те что мы наблюдали в одном из скриншотов сверху в процесе разбора. В результате мы узнали что они собирают,при желании можете скачать файл js(оставлю в коментах в телеграме) из крана и сравнить. Результат будет +- идентичный.
Part V (Final)
Подводим итоги и рисуем схему их работы:
Юзер заходит на сайт, с него создают Agent, который мы уже знаем что хранит.
Эти данные собирают при первом заходе на сайт, далее проверяют есть ли такой ид, если нету собирают опять. Далее они могут хранить отпечатки на бекенде у себя или сервере того же fingerptint js, а при выполнении крана уже передают только visitor id пользователя, по которому уже смогут при надобности стянуть с бека фулл данные и сделать фильтрацию.
Part VI (Thanks you!)
Надеюсь, что прочитанный материал оказался полезным и помог хотя бы немного приоткрыть завесу антифрод-систем.
Я был рад получить такой опыт и надеюсь, что он поможет вам в дальнейшем разобраться в этом направлении.
Спасибо за внимание и до новых встреч!
Tg channel: https://t.me/uppercasenote