Антифрод і антибот в гейміфікації на базі ML
1) Навіщо окрема антифрод-система для гейміфікації
Гейміфікація стимулює активність (місії, токени, косметика), а значить - провокує:- ботів (скрипти виконання місій, фарм токенів/рейтингів);
- мультиаккаунти/колюзії (командна накрутка, «перекидання» нагород);
- емулятори/рут-девайси (маніпуляція клієнтом);
- експлойт місій (цикли, де прогрес йде без реальної гри).
Цілі антифроду: зберегти чесність, не перегріти UX, дотримати приватність/регуляції і тримати економіку промо стійкою.
2) Сигнали і фічі (що вважати)
Пристрій і середовище
Атестація цілісності клієнта (mobile/web), ознаки емулятора/рут, нестандартний WebGL/Canvas-профіль.
Device fingerprint (без PII): комбінації User-Agent, шрифтів, графіки, часу рендерингу.
Поведінкова біометрія
Темп кліків/таких, плавність кривих, мікропаузність, варіативність траєкторій.
«Людські» шуми: тремтіння курсору, мікродрейф скролла, розподіл інтервалів (логнормальність).
Ігрові та місійні патерни
Повторювані цикли «ідеальної» довжини, аномально стабільні темпи (спінів/хв).
Вузькі вікна активності (наприклад, рівно кожні 10 хв), миттєві завершення багатошагових квестів.
Граф-сигнали і мережа
Збіги IP/AS, загальні платіжні джерела (в агрегатах), кластери дружби/запрошень.
Спільна участь у турнірах з «підіграшем» (дивні кореляції результатів).
Економіка/промо
Непропорційна монетизація на місіях з токенами, різкі висновки після фарму.
RG/контекст
Наддовгі сесії без мікропауз (бот-ознака), нічні «конвеєри».
Всі фічі агрегуються і анонімізуються. PII - тільки в обсязі вимог регулятора.
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 (чорний): бан/КУС-рев'ю (якщо регуляторно допустимо і обґрунтовано).
Драйвери переходів: агрегований ризик, граф-прапори колюзій, скарги, сигнал від провайдерів.
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 система зберігає чесність змагань, захищає економіку нагород і не перетворює продукт в «смугу перешкод» для сумлінних гравців.