Si applica a
scope.record_types determina su cosa si attiva una regola.
Se lo ometti, la regola resta limitata alle transazioni. Tutte le regole scritte prima che esistessero gli eventi si comportano esattamente come prima, e una regola non inizia mai a corrispondere agli accessi perché il suo ambito era vuoto.
"__current__" significa “lo stesso valore dell’evento in valutazione”: è così che una regola esprime per soggetto, per dispositivo o per round senza nominarne uno.
I record privi del valore raggruppato non vengono mai raggruppati insieme. Un evento senza impronta del dispositivo non è “lo stesso dispositivo” di altri eventi senza impronta, e un evento che non indica un soggetto non è “lo stesso soggetto” di altri eventi anonimi: quando l’evento in valutazione non ha un valore per un campo "__current__", quell’aggregazione non corrisponde, qualunque sia il suo operatore.
Campi degli eventi
Le condizioni leggono percorsi con namespace. Il vocabolario delle transazioni che già conosci (action_type, subject_vendor_data, subject_ip_country, custom_values.<key>) si risolve anche su un evento.
I segnali del soggetto sono memorizzati nella cache per l’utente monitorato e non vengono ricalcolati per ogni evento, così una regola può leggerli alla velocità dell’ingestione.
Aggregazioni
Velocità
Le funzioni di aggregazione che già usi sulle transazioni -count, sum, avg, min, max, distinct_count - su una window scorrevole (30m, 24h, 7d, 30d).
Rapporto
Due funzioni di aggregazione sulla stessa finestra. È così che si esprimono i rapporti tra scommesse e depositi, tra prelievi e depositi, tra bonus e depositi e i tassi di chargeback.Un rapporto senza denominatore non corrisponde mai. Nessun deposito non equivale a un rapporto pari a zero: è assenza di prove, e far scattare la regola in quel caso segnalerebbe ogni utente appena registrato.
Sequenza
Predicati ordinati all’interno di una finestra. Ogni passaggio corrisponde aaction_type, event_category o a un filtro match arbitrario, e può richiedere almeno min_count occorrenze prima che la sequenza avanzi.
Correlazione
Un join tra soggetti diversi: esegue un’aggregazione su tutti gli eventi che condividono il gruppo di questo evento."pair": true confronta le due estremità come insieme non ordinato, quindi A→B e B→A finiscono nello stesso gruppo. È questo che permette a una sola regola di vedere entrambe le metà di una collusione. Il trasferimento illecito di fiches, le scommesse opposte e l’autoreferenza dell’affiliato hanno tutti questa forma.
Assegna sempre a una regola di correlazione dei filters restrittivi. Senza di essi considera ogni evento della finestra.
In tempo reale e asincrone
Alcune regole possono rispondere all’interno della richiesta di acquisizione, altre no.
Un evento le cui regole sono ancora in attesa viene restituito con
"correlation_pending": true. Il suo stato e il suo punteggio si aggiornano sul posto al completamento del passaggio asincrono; la riesecuzione è idempotente, quindi una regola non applica mai il proprio punteggio due volte.
Questa suddivisione è intenzionale: una query di anello tra soggetti diversi non deve far attendere un login.
Azioni
Lo stesso vocabolario di azioni delle regole sulle transazioni:add_score, change_status, add_tags, add_note, add_to_list, open_case.
Due differenze sugli eventi:
change_statusimpostato suAWAITING_USERè un esito valido solo per le transazioni (non esiste un flusso di rimedio per gli eventi) e viene applicato comeIN_REVIEW.open_casecollega il caso al soggetto anziché a una transazione, e registra sul caso l’id dell’evento corrispondente.
Evidenze
Ogni corrispondenza memorizza ciò che ha rilevato: la finestra di aggregazione, il valore calcolato, il valore atteso, gli id degli eventi campionati e la fonte di ciascun campo corrispondente.
Un analista può quindi distinguere un IP registrato dal server da un suggerimento fornito dal client prima di agire su una corrispondenza. La console mostra la fonte accanto a ciascun campo corrispondente nel pannello dell’evento.
Esempi pratici
Riciclaggio con gioco minimo
Riciclaggio con gioco minimo
Deposito, gioco con token, prelievo rapido. Condizione
event.action_type eq withdrawal_requested, più il rapporto puntata-deposito sopra indicato con lte 0.1 su 24h.Frode amichevole
Frode amichevole
Rapporto tra
count(chargeback_opened) e count(deposit_completed) per soggetto su 30d, gte 0.5. Raggruppa per event.payment.payment_fingerprint anziché per soggetto, per individuare uno stesso strumento di pagamento su più account.Svuotamento causato dalla compromissione dell'account
Svuotamento causato dalla compromissione dell'account
La sequenza
ato_drain descritta sopra, con add_score 90 e change_status DECLINED.Chip dumping
Chip dumping
La correlazione di coppia descritta sopra. Imposta
value sull’importo rilevante per i tuoi tavoli e aggiungi event.gameplay.game_id a group_by per tenere separate le partite.Gioco con bot e assistenza in tempo reale
Gioco con bot e assistenza in tempo reale
Condizioni su
event.action_type eq bot_signal_observed, event.bot.timing_variance_ms lte 10 ed event.device.bot_score gte 90, con add_tags. Combinala con un distinct_count di event.device.fingerprint per IP, per individuare una farm anziché un singolo script.Elusione dell'autoesclusione
Elusione dell'autoesclusione
Condizione su
event.action_type eq self_exclusion_match e event.payload.re_registration_attempt eq true, con escalation tramite open_case.Passaggi successivi
Acquisizione degli eventi
Il contenitore, le dieci categorie e il contratto dei batch.
API delle regole
Crea, aggiorna e sottoponi a back-test le regole in modo programmatico.