Antifrode e antibot in gaming basato su ML
1) Perché un sistema antifrode separato per la gamimizzazione
La gaimificazione stimola l'attività (missioni, token, cosmetici) e quindi provoca:- bot (script missioni, pharma token/classificazioni);
- Multipli/collusioni (comando, ricomposizione dei premi);
- emulatori/rut device (manipolazione del client)
- Esplora missioni (cicli in cui il progresso è senza un vero gioco).
L'obiettivo dell'antifrode è mantenere l'onestà, non surriscaldare la UX, mantenere la privacy/regolamentazione e mantenere l'economia promo stabile.
2) Segnali e fitte (che conta)
Dispositivo e ambiente
Certificazione dell'integrità del cliente (mobile/web), segni di emulazione/root, profilo WebGL/Canves non standard.
Device fingerprint (senza PII) - Combinazioni di User-Agente, caratteri, grafica, tempo di rendering.
Biometria comportamentale
Il ritmo dei click, la fluidità delle curve, la micropausa, la variabilità delle traiettorie.
Rumori «umani»: tremore del cursore, microdrefo dello scroll, distribuzione degli intervalli (lognormalità).
Pattern per giochi e missionari
Cicli ripetitivi di lunghezza «perfetta», ritmo anomalo stabile (spin/min).
Finestre di attività strette (ad esempio, esattamente ogni 10 minuti), completamento istantaneo delle ricerche multi-collage.
Segnale grafico e rete
Corrispondenze IP/AS, fonti di pagamento condivise (in aggregazioni), cluster di amicizia/inviti.
Co-partecipazione a tornei con «sottotono» (strane correlazioni di risultati).
Economia/promo
Monetizzazione sproporzionata nelle missioni con token, conclusioni drastiche dopo il pharma.
RG/contesto
Sessioni superflue senza micropause (segno di bot), catene notturne.
3) Pile modello (come catturabile)
1. Rilevatori di anomalia (unsupervised):- Isolation Forest, One-Class SVM, Autoencoder per dispositivi comportamentali e dispositivi.
- L'uso è un primo «riassunto del sospetto» senza l'etichetta di «colpevole».
- Community detection (Louvain/Leiden) + segni di centralità (betweenness, degree).
- GNN (GraphSAGE/GAT) per classificare nodi/costole (ruote, fattorie di account).
- Gradient Boosting/Tabula Trasformers sui marchi delle indagini precedenti.
- Calibrated probabilities ha la fiducia nelle decisioni.
- User2Vec per sequenze di eventi Le distanze dei bot-cluster.
- Seleziona la barriera minima (assegno vs verifico) per il contesto di rischio x UX.
4) Orchestrazione delle regole (policy engine)
Idea: ML dà risk _ score, policy decide cosa fare con l'economia e UX.
Esempio di livelli:- R0 (verde): senza vincoli; monitoraggio passivo.
- R1 (giallo): soft «humanity challenge» (microassicurazione), ridotta la cappa delle missioni.
- R2 (arancione): assegno device, controllo del ritmo, riduzione delle emissioni di token.
- R3 (rosso): unità di avanzamento per le missioni contese, moderazione manuale/congelamento temporaneo dei premi.
- R4 (nero): ban/CUS-review (se regolamentare è valido e valido).
I driver di transizione sono il rischio aggregato, i grafici delle collusioni, le lamentele, il segnale dei provider.
5) Barriere oneste senza troppa attrito
La biometria comportamentale di sfondo, la valutazione dell'ambiente.
Humanity-action invece di Kupchi è un mini-gesto (drag-pattern casuale, slider improvvisato), time-window con micropause.
WebAuthn/Passkeys per azioni «costose»: fissa il dispositivo/identità senza password.
Le barriere reattive si attivano solo al momento delle anomalie, non a tutti.
6) Missioni anti-pattern (come non lasciare «farmaco»)
Variabilità dei requisiti: una serie di azioni in diversi provider/tempi/scommesse.
Cooldown e cambi di contenuto, il divieto di cicli identici.
Eventi di controllo casuali, piccoli controlli «umani» nel mezzo di una lunga missione.
Limitare i progressi paralleli per evitare che le fattorie chiudano decine di missioni contemporaneamente.
7) Complaens, privacy, trasparenza
Data minimization: solo le fitte necessarie, memorizzare le unità anonime.
Esplainability: reason-codes per le attività controverse (ad esempio, velocità anomala + cluster grafico).
Processo Appeal: forma di appello comprensibile; Revisione rapida.
Policy RG: in caso di affaticamento, riduciamo il carico di lavoro anziché spingere il giocatore.
8) Metriche di successo e guardie dell'economia
Bot/Collusion catch rate (percentuale rilevata prima della ricezione dei premi chiave).
False Positive Rate (soglia Lag to Action (tempo da anomalia a misura). Emision to GGR e Prize RE: la protezione si ripaga. Complaint/Appeal rate и Appeal overturn rate. Effetto on UX: conversione delle missioni, mute/opt-out dalla personalizzazione, NPS per l'onestà. 9) A/B e la validazione offline 1. Missioni anti-autosufficienza: variabilità vs base. 2. Un assegno Umanity è un gesto invisibile vs goccia classica. 3. La soglia risk _ score è morbida/rigida (diversi TPR/FPR). 4. Filtri grafici: c/senza GNN, solo regole grafiche. 5. Orchestratore barriere: bandito contestuale vs statico. 10) Pseudo-codice (→ → azione) 11) Modelli JSON (regole e registro) 12) Processo di risposta e readtiming Monitoraggio in tempo reale dei picchi di rischio, dei componenti grafici. 1. rilevamento dell'anomalia (2) riduzione delle emissioni/congelamento dei premi controversi (3) campionamento dei loghi/grafici (4) patch delle regole/modelli (5) retropassaggio dei premi onesti. Red Team/laboratorio clandestino: simulazione di bot (imbottigliamento, randomizzazione), attacchi ai modelli (adversarial examples). Rilasci canarini: muoviamo nuove barriere al 5-10% del traffico. 13) UX e comunicazioni Tono neutrale e rispettoso: «Azioni non convenzionali notate - confermate che siete umani (30 secondi)». Opzioni: «ripetere più tardi», «contattare il supporto», «appello». Accessibilità: alternative per le persone con limitazioni motorie/visive. Trasparenza: pagina «Come difendiamo l'onestà» con principi generali (senza prescrizioni per gli abusi). 14) Architettura tecnica (in breve) Raccolta eventi: Kafka/Redpanda, schemi «mission _ progress», «input _ stream», «device _ attest». Fichestor: online (ms-latenza) + offline (batch 1-6 ore). Servizi ML: «risk-scorer», «graph-service», «policy-engine». Archivio prove: logi non modificabili (WORM), crittografia in pace e nel canale. Security: Side di sicurezza RNG sul server; il client è solo la visualizzazione. 15) Foglio di assegno prima del lancio Antifrode/antibot in gaming è uno strato ML + grafici + barriere oneste che si accendono esattamente dove si desidera. La biometria comportamentale e l'anomalia-detrazione danno un segnale precoce, il conte-analista apre le collusioni, l'orchestratore seleziona un controllo minimo sufficiente. Con trasparenza, privacy e rispetto per UX, il sistema mantiene l'onestà delle competizioni, protegge l'economia dei premi e non trasforma il prodotto in una «striscia di ostacoli» per i giocatori in buona fede.
python def score_request(user, event):
x = build _ feures (user, event) # dispositivo, comportamento, segni grafici r _ unsup = oc _ svm. score (x) # anomalia r _ sup = gbdt. predict _ proba (x) [:, 1] # probabilità di frodo r _ graph = gnn _ node _ prob (user. node _ id) # rischio grafico risk = calibrate (r _ unsup, r _ sup, r _ graph) # calibrazione isotropica return risk
def decide_action(risk, context):
contesto: importanza dell'azione, valore del premio, fattore 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 + сниж. kap delle missioni if risk <0. 85: return «HOLD _ REWARDS» # congelamento fino a gelare return «BAN _ OR _ REVIEW»
def enforce(action, user):
barriera 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)
Loga della decisione (per controllo/appello):
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"
}