Как остановить злоупотребление бесплатными кредитами в ИИ-приложении
Бесплатные кредиты в ИИ-продукте стоят реального инференса. Как работают фермы кредитов, почему лимиты на аккаунт их не останавливают и где в регистрации принимать решение.
Чем отличаются бесплатные кредиты в ИИ-продукте
В большинстве SaaS фейковый аккаунт стоит строку в базе и немного шума в метриках. В ИИ-продукте каждый бесплатный аккаунт может тратить реальные деньги: каждый промпт запускает инференс на GPU, за которые платите вы. Бесплатные кредиты — по сути наличные, а всё, что превращается в деньги, притягивает автоматизацию.
Это меняет и тех, кто злоупотребляет бесплатным тарифом. Помимо людей, которые просто хотят больше бесплатного использования, появляются фермы кредитов: скрипты, которые создают много аккаунтов, собирают бесплатные кредиты каждого и перепродают доступ или гоняют через ваш API собственные задачи.
Как работает ферма кредитов
Детали различаются, но схема одна и та же:
- Аккаунты создаёт скрипт — обычно headless-браузер под управлением Puppeteer, Playwright или Selenium, иногда антидетект-браузер, который подменяет свой отпечаток.
- Ящики одноразовые: одноразовые домены, собственные catch-all домены или один аккаунт Gmail, записанный десятками способов с точками и плюсами.
- Трафик идёт с серверов: облака и хостинг дёшевы, поэтому многие фермы работают там, иногда за прокси или Tor.
- Кредиты расходуются быстро, часто в первые минуты, раньше, чем успевает сработать любой сигнал по использованию.
Почему лимиты на аккаунт не помогают
Лимиты защищают от аккаунта, который потребляет слишком много. Ферма так никогда не делает: каждый аккаунт вежливо укладывается в свою бесплатную квоту. Злоупотребление — в количестве аккаунтов, поэтому защищаться нужно при регистрации, до выдачи кредитов, а не позже, на уровне использования.
Правильный вопрос не «злоупотребляет ли этот запрос?», а «должен ли этот новый аккаунт вообще получить бесплатные кредиты, и сколько?».
Сигналы, выдающие ферму при регистрации
Автоматизация
Браузеры под управлением автоматизации оставляют следы: navigator.webdriver равен true, user agent HeadlessChrome, подключённый клиент протокола DevTools, программный рендеринг WebGL, окно нулевого размера. Аккуратный оператор может скрыть каждый из них, поэтому работают они лучше всего вместе. В руководстве как распознать headless-браузеры они разобраны по одному.
Сеть
Настоящие пользователи регистрируются из домашних и мобильных сетей. Регистрации из облачных диапазонов (AWS, Google Cloud, Oracle, DigitalOcean, Linode) и с выходных узлов Tor заслуживают большего внимания, как и любой адрес или подсеть, создавшие сегодня много аккаунтов.
Почтовый ящик
Одноразовые домены, домены, не принимающие почту, и алиасы Gmail существующего аккаунта. См. Точки и плюс-алиасы в Gmail.
Связи между аккаунтами
Самый сильный признак фермы — её аккаунты связаны: то же устройство, тот же нормализованный ящик, тот же отпечаток карты. Один связанный аккаунт — слабое свидетельство, десять — ферма.
Где ставить проверку
Вызывайте антифрод-проверку на сервере после отправки формы регистрации и до начисления кредитов. Если кредиты выдаёт фоновая задача или подтверждение почты, ставьте проверку прямо перед этим шагом. Главное, чтобы решение появилось раньше кредитов.
// Node.js, перед выдачей бесплатных кредитов const res = await fetch("https://attrelix.com/v1/check", { method: "POST", headers: { Authorization: `Bearer ${process.env.ATTRELIX_SECRET}`, "Content-Type": "application/json" }, body: JSON.stringify({ email, ip, visitor: req.body.attrelix_visitor }), signal: AbortSignal.timeout(3000), }).catch(() => null); const decision = res?.ok ? (await res.json()).decision : "allow"; const credits = { allow: 100, review: 10, block: 0 }[decision] ?? 100; await grantCredits(user.id, credits);
Ступенчатые кредиты лучше жёсткой блокировки
Для ИИ-продуктов хорошо работает схема, при которой бесплатные кредиты зависят от риска, а не выдаются по принципу «всё или ничего»:
- Разрешить: полная бесплатная квота.
- Проверить: небольшая квота — достаточно, чтобы попробовать продукт, — а остальное после карты, телефона или подтверждённой почты.
- Заблокировать: без бесплатных кредитов; предложите платный тариф.
Честные пользователи, попавшие на проверку, всё равно могут попробовать продукт, а ферма, получающая десятую часть кредитов на аккаунт, теряет большую часть выгоды.
Знайте, во что это обходится
Посчитайте проблему: умножьте стоимость бесплатных кредитов нового аккаунта на число аккаунтов, которые ваша проверка отправила бы на проверку или в блок. Это ежемесячная цена бездействия, и она показывает, сколько трения стоит добавить. Панель Attrelix считает это по стоимости ваших кредитов.
Итог
- Фермы кредитов укладываются в лимиты на аккаунт; останавливайте их при регистрации.
- Сочетайте сигналы автоматизации, сети, почтового ящика и связей между аккаунтами.
- Решайте до появления кредитов и пропускайте, если проверка недоступна.
- Дозируйте кредиты по риску вместо немедленной блокировки.