Антифрод и антибот в геймификации на базе ML
1) Зачем отдельная антифрод-система для геймификации
Геймификация стимулирует активность (миссии, токены, косметика), а значит — провоцирует:- ботов (скрипты выполнения миссий, фарм токенов/рейтингов);
- мультиаккаунты/коллюзии (командная накрутка, «перекидывание» наград);
- эмуляторы/рут-девайсы (манипуляция клиентом);
- эксплойт миссий (циклы, где прогресс идёт без реальной игры).
Цели антифрода: сохранить честность, не перегреть UX, соблюсти приватность/регуляции и держать экономику промо устойчивой.
2) Сигналы и фичи (что считать)
Устройство и среда
Аттестация целостности клиента (mobile/web), признаки эмулятора/рут, нестандартный WebGL/Canvas-профиль.
Device fingerprint (без PII): комбинации User-Agent, шрифтов, графики, времени рендеринга.
Поведенческая биометрия
Темп кликов/тачей, плавность кривых, микропаузность, вариативность траекторий.
«Человеческие» шумы: дрожание курсора, микродрейф скролла, распределение интервалов (логнормальность).
Игровые и миссионные паттерны
Повторяющиеся циклы «идеальной» длины, аномально стабильные темпы (спинов/мин).
Узкие окна активности (например, ровно каждые 10 мин), мгновенные завершения многошаговых квестов.
Граф-сигналы и сеть
Совпадения IP/AS, общие платежные источники (в агрегатах), кластеры дружбы/приглашений.
Совместное участие в турнирах с «подыгрышем» (странные корреляции результатов).
Экономика/промо
Непропорциональная монетизация на миссиях с токенами, резкие выводы после фарма.
RG/контекст
Сверхдлинные сессии без микропауз (бот-признак), ночные «конвейеры».
3) Модельный стек (как ловим)
1. Аномалия-детекторы (unsupervised):- Isolation Forest, One-Class SVM, Autoencoder для поведенческих и устройств.
- Использование: ранний «скоринг подозрительности» без ярлыка «виновен».
- Community detection (Louvain/Leiden) + признаки центральности (betweenness, degree).
- GNN (GraphSAGE/GAT) для классификации узлов/рёбер (коллюзии, фермы аккаунтов).
- Gradient Boosting/Tabular Transformers по меткам прошлых расследований.
- Calibrated probabilities → доверие в принятии решений.
- User2Vec по последовательностям событий; расстояния → «бот-кластеры».
- Выбор минимального барьера (лёгкий чек vs жёсткая верификация) под контекст риск×UX.
4) Оркестрация правил (policy engine)
Идея: ML даёт risk_score, policy решает «что делать» с учётом экономики и UX.
Пример уровней:- R0 (зелёный): без ограничений; пассивный мониторинг.
- R1 (жёлтый): мягкие «humanity-челленджи» (микровзаимодействия), снижен кап миссий.
- R2 (оранжевый): device-чек, доп. контроль темпа, снижение эмиссии токенов.
- R3 (красный): блок прогресса по спорным миссиям, ручная модерация/временная заморозка наград.
- R4 (чёрный): бан/KYC-ревью (если регуляторно допустимо и обосновано).
Драйверы переходов: агрегированный риск, граф-флаги коллюзий, жалобы, сигнал от провайдеров.
5) Честные барьеры без лишнего трения
Invisible checks: фоновая поведенческая биометрия, аттестация окружения.
Humanity-action вместо капчи: мини-жест (случайный drag-pattern, импровизированный слайдер), тайм-window с микропаузами.
WebAuthn/Passkeys для «дорогих» действий: закрепить устройство/личность без пароля.
Реактивные барьеры: включаются только в момент аномалий, не каждому.
6) Анти-паттерны миссий (как не дать «фармить»)
Вариативность требований: серия действий в разных провайдерах/временах/ставках.
Кулдауны и смена контента: запрет однотипных циклов подряд.
Случайные контрольные события: небольшие «человеческие» проверки в середине длинной миссии.
Ограничение параллельных прогрессов: чтобы фермы не закрывали десятки миссий одновременно.
7) Комплаенс, приватность, прозрачность
Data minimization: только необходимые фичи, хранение анонимных агрегатов.
Explainability: reason-codes для спорных действий (например, «аномальная скорость + граф-кластер»).
Appeal-процесс: понятная форма апелляции; быстрый пересмотр.
Политики RG: при признаках усталости снижаем нагрузку, а не «толкаем» игрока.
8) Метрики успеха и стражи экономики
Bot/Collusion catch rate (доля выявленных до получения ключевых наград).
False Positive Rate (порог < целевого; важна калибровка).
Lag to Action (время от аномалии до меры).
Emission to GGR и Prize ROI: защита окупает себя.
Complaint/Appeal rate и Appeal overturn rate.
Impact on UX: конверсия миссий, mute/opt-out от персонализации, NPS по честности.
9) A/B и офлайн-валидация
1. Антизлоупотребительные миссии: вариативность vs базовые.
2. Humanity-чек: невидимый жест vs классическая капча.
3. Порог risk_score: мягкий/жёсткий (разные TPR/FPR).
4. Граф-фильтры: с/без GNN, только правила графа.
5. Оркестратор барьеров: статический vs контекстный бандит.
10) Псевдокод (скоринг → политика → действие)
python def score_request(user, event):
x = build_features(user, event) # устройство, поведение, графовые признаки r_unsup = oc_svm.score(x) # аномальность r_sup = gbdt.predict_proba(x)[:,1] # вероятность фрода r_graph = gnn_node_prob(user.node_id) # графовый риск risk = calibrate(r_unsup, r_sup, r_graph) # изотропная калибровка return risk
def decide_action(risk, context):
контекст: важность действия, ценность награды, UX-фактор if risk < 0.25: return "ALLOW"
if risk < 0.45: return "SOFT_CHECK" # humanity-gesture, micro-pause if risk < 0.65: return "DEVICE_ATTEST" # integrity + сниж. кап миссий if risk < 0.85: return "HOLD_REWARDS" # заморозка до ревью return "BAN_OR_REVIEW"
def enforce(action, user):
минимально нужный барьер if action == "SOFT_CHECK": trigger_humanity_challenge(user)
elif action == "DEVICE_ATTEST": run_integrity_attestation(user.device)
elif action == "HOLD_REWARDS": freeze_rewards(user, duration="72h")
elif action == "BAN_OR_REVIEW": open_case_to_fraud_ops(user)
11) JSON-шаблоны (правила и журнал)
Политика уровней риска:json
{
"policy_id": "anti_fraud_s1", "tiers": [
{"name":"R0","risk_lt":0.25,"action":"allow"}, {"name":"R1","risk_lt":0.45,"action":"soft_check"}, {"name":"R2","risk_lt":0.65,"action":"device_attest_and_cap"}, {"name":"R3","risk_lt":0.85,"action":"hold_rewards_review"}, {"name":"R4","risk_gte":0.85,"action":"ban_or_kyc_review"}
], "caps": {"missions_per_day_r2": 2, "token_emission_multiplier_r2": 0.5}, "appeal": {"enabled": true, "sla_hours": 48}
}
Лог решения (для аудита/апелляции):
json
{
"decision_id":"dec_2025_10_24_1415", "user_id":"u_45219", "risk_components":{"unsup":0.38,"sup":0.41,"graph":0.57}, "final_risk":0.51, "action":"device_attest_and_cap", "reasons":["abnormal_click_tempo","graph_cluster_c17"], "expires_at":"2025-10-27T14:15:00Z"
}
12) Процесс реагирования и редтиминг
Мониторинг в реальном времени: дашборды по всплескам рисков, граф-компонентам.
Runbook инцидента:1. детект аномалии → 2) снижение эмиссии/заморозка спорных наград → 3) выборка логов/графов → 4) патч правил/моделей → 5) ретро-пересчёт честных наград.
Red Team/подпольная лаборатория: симуляция ботов (обфускация, рандомизация), атаки на модели (adversarial examples).
Канареечные релизы: выкатываем новые барьеры на 5–10% трафика.
13) UX и коммуникации
Нейтральный, уважительный тон: «Замечены нестандартные действия — подтвердите, что вы человек (30 сек)».
Опции: «повторить позже», «связаться с поддержкой», «апелляция».
Доступность: альтернативы для людей с ограничениями моторики/зрения.
Прозрачность: страница «Как мы защищаем честность» с общими принципами (без рецептов для злоупотреблений).
14) Техническая архитектура (вкратце)
Сбор событий: Kafka/Redpanda, схемы `mission_progress`, `input_stream`, `device_attest`.
Фичестор: онлайн (мс-латентность) + офлайн (батчи 1–6 ч).
МЛ-сервисы: `risk-scorer`, `graph-service`, `policy-engine`.
Хранилище доказательств: неизменяемые логи (WORM), шифрование в покое и в канале.
Секьюрность: секьюрные сиды RNG на сервере; клиент — только визуализация.
15) Чек-лист перед релизом
- Калиброваны вероятности (Platt/Isotonic), FPR в целевом коридоре.
- Подключены граф-сигналы и кросс-девайс корреляции.
- Настроен оркестратор барьеров (минимум трения при низком риске).
- Встроены RG-гварды и апелляции; лог-аудит и reason-codes.
- Политики приватности и хранения данных соответствуют регуляторным требованиям.
- Настроены канарейки, алерты и runbook восстановления.
Антифрод/антибот в геймификации — это слой ML + графы + честные барьеры, которые включаются ровно там, где нужно. Поведенческая биометрия и аномалия-детект дают ранний сигнал, граф-аналитика вскрывает коллюзии, оркестратор подбирает минимально достаточную проверку. При прозрачности, приватности и уважении к UX система сохраняет честность соревнований, защищает экономику наград и не превращает продукт в «полосу препятствий» для добросовестных игроков.