Как я боролся с абьюзерами фри триалов в SaaS

 Публичный пост
23 сентября 2024  1427
Я понял!

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

Я поделюсь своим опытом решения этой проблемы.

Капча

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

Обычных пользователей она пропускает практически моментально, не заставляя их выбирать транспортные средства на картинках. Ботов она тоже пропускает, если они используют нормальный хромдрайвер. Тем не менее, значительная часть энтузиастов отвалится уже на этом этапе.

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

💭 До сих пор не понимаю, что означают все эти символы
💭 До сих пор не понимаю, что означают все эти символы

Емейлы

В своих проектах я использую регистрацию по емейлу, опционально добавляю логин через гугл / гитхаб.

Можно попытаться радикально решить проблему, оставив регистрацию только через социальные сети или по номеру телефона, но, на мой взгляд, это снизит конверсию и приведет к потере потенциальных клиентов (то же самое относится к введению белых списков почтовых доменов).
Кроме того, если ценность продукта, который вы предоставляете бесплатно, превышает стоимость приобретения учетки в соцсети или получения одноразового смс, то это не остановит злоумышленников.

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

Существует довольно много репозиториев со списками таких доменов и сервисов для проверки, является ли email одноразовым: 1, 2, 3, 4. Я использую 7c/fakefilter и даже периодически прошу добавить очередной сервис для сканирования. Как и с капчей, это отсеивает большинство нарушителей, но, к сожалению, таких сервисов становится все больше, и авторы списков не могут физически отследить все домены.

Также абьюзер может использовать аккаунты в почтовых сервисах вроде Gmail, где себестоимость регистрации одного такого почтового адреса колеблется в диапазоне $0–0,1. Здесь мы тоже бессильны.

🎉 Ура! Зарегистрировался очередной фри триальщик
🎉 Ура! Зарегистрировался очередной фри триальщик

IP-адреса

Самое простое, что можно сделать с IP, – установить рейтлимиты на чувствительные действия, такие как регистрация аккаунта.

Также можно использовать сервисы проверки IP, которые выдают подробную информацию об адресе, включая то, является ли IP-адрес известным публичным прокси или VPN-сервером. Эти данные можно просто собирать, а можно усложнять регистрацию с таких адресов. Я использую proxycheck и запрещаю регистрацию с адресов, у которых risk score >= 67, предлагая пользователю отключить VPN.

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

💪 Самый эффективный способ решить проблему
💪 Самый эффективный способ решить проблему

Фингерпринты

Существуют библиотеки и сервисы, которые позволяют снимать отпечаток с браузера пользователя на основе сотен параметров (начиная с банальных, как юзерагент и таймзона, и заканчивая установленными шрифтами в ОС пользователя). Пример: FingerprintJS.

Все это, безусловно, круто и технологично, но, на мой субъективный взгляд, абсолютно бесполезно. Если пользователь уже обошел вашу reCAPTCHA или Turnstile, вероятно, он использует undetected-chromedriver или его аналог. В таком случае создается отдельная сессия, что приводит к уникальному отпечатку. Точно так же, как если бы вы создали новый профиль в Chrome.

Кстати, можете ради интереса проверить, насколько ваш отпечаток уникален по сравнению с другими: Am I Unique?

👀 Забавный факт: ваш отпечаток в режиме инкогнито совпадает с вашим обычным отпечатком
👀 Забавный факт: ваш отпечаток в режиме инкогнито совпадает с вашим обычным отпечатком

Человеческий фактор

Окей, представим, что нарушитель использовал трастовые IP и email адреса, прошел капчу и получил доступ к сервису. И проделал это сотни, тысячи, а возможно, и сотни тысяч раз.

В моем случае один из проектов — это API, и главная цель фри-триальщиков — получить API-ключ на 100 бесплатных запросов.

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

Выводы

Всех не заблокируешь :)

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

Если вы только запускаете свой SaaS, я бы на вашем месте ограничился добавлением капчи и блокировкой одноразовых email-адресов. А если ваш продукт не ориентирован на метрики, а фри-триалы больно бьют по бюджету, возможно, стоит отказаться от бесплатного периода в пользу недорогого тарифного плана.

Буду рад, если в комментариях вы поделитесь своим опытом. Наверняка, в клубе есть много людей с большим опытом в этом вопросе.

20 комментариев 👇

Меня немного коробит вот это "халявщики", "боремся с злоумышлениками" и "решение проблемы". Люди пользуются твоим сервисом в рамках установленных тобой же правил. Я понимаю, что идеальный кейс это когда человек приходит, тестит возможности и сразу покупает подписку а не запрягает ботов скрейпить форму регистрации. Но если ты сам дал возможность зарегистрировать бесконечное количество триалов на уникальную почту?..
Не лучше ли называть это не борьбой с злоумышленниками (они не делают ничего незаконного) а уточнить правила пользования сервисом. Не более 100 запросов с одного ip, никаких одноразовых карт, регистрация только по видеозвонку с менеджером а лучше вообще приходите в офис с 12 до 16 по четвергам с паспортом...

  Развернуть 1 комментарий

@Crypto_mate, блин, довольно иронично что твой продукт это апи скрейпер социальных сетей. Уверен что в офисе инстаграма сейчас сидит человек и думает как бы решить проблему с злоупотреблением.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

@Crypto_mate, Так он и устанавливает правило один человек - один триал, просто исполнение непростое

  Развернуть 1 комментарий

@alberand, если я попрошу другого человека создать триал и передать мне апи ключ это считается? А если я нашел "незадокументированую фичу" в смартконтракте и перевёл себе все скам-токены?
Что я хотел сказать своим комментом так это то что в интернете если что-то может быть заабьюжено то это скорее всего так и будет. И правильный путь это не орать на облака а устанавливать такие правила которые нельзя обойсти
Автор молодец и делает все правильно

  Развернуть 1 комментарий

@Crypto_mate, ну так вроде как раз не орет, а решает проблему.

Альтернативой было бы "селфи с паспортом в руках", но это отсеивает много нормальных пользователей, поэтому приходится искать более элегантные решения.

  Развернуть 1 комментарий

Спасибо за пост и полезные ссылки в нем!
Узнал много нового)

  Развернуть 1 комментарий
Evgenii Kochanov Анализирую данные 23 сентября в 11:27

завязывали триалку на email (аккаунт) и/или номер карты (если карта была на триалке, то повторный бесплатный доступ не неё не давали, сразу списывали за подписку). способ неидеальный, но много халявщиков отсекал.
бонусом - скоринг транзакций (в тч и на создание триала), самые рисковые проверяли полуавтоматом и блокировали аккаунт/отменяли подписку.

  Развернуть 1 комментарий

@kochanoff, + банить провайдеров одноразовых карточек можно по BIN-ам: их не так много, как поставщиков одноразовых email или IP ^.^

  Развернуть 1 комментарий

@esemi, да, до этого мы тоже дошли. Правда, насколько я помню, это работало для всяких подарочных карт + совсем уж стремных банков. А сейчас у приличных банков в моде виртуальные карты, которые уже по BINу (совпадающему со реальным пластиком) банить неприлично.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

А что с телегой? Что, если продукт - бот? Есть какие-то мысли по защите (идентификации пользователя без необходимости проверять документы/привязывать карту)?

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

Спасибо за пост, забрал пару сервисов полезных, которые всегда искал, но как-то руки не доходили.
Жаль, что фактически для мобильных приложений тут подходит только IP трекинг, чего конечно же не достаточно.
Буду кстати рад, если кто-то поделится подобными статьями или инфой защиты от ботов и тп.

Кстати, Гугл авторизация тоже не особо спасает - каким-то образом (я пока не осилил выяснить каким, видимо как-то через бизнес акки) они регают гугл акки на радномные темп домены и все. Но я не копал эту проблему, а просто весь побанил как-то)

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб