Antifrode e antibot na gamificação baseada em ML
1) Por que um sistema antifrode separado para a gamimização
A gaimificação estimula a atividade (missões, tokens, cosméticos), o que significa que provoca:- bots (ário de missões, farm de tokens/classificações);
- Multiplicaunts/colusões (acção de comando, «revezamento» de prêmios);
- emuladores/rut-device (manipulação do cliente);
- um expoente de missões (ciclos onde o progresso se dá sem um jogo real).
O objetivo do antifrode é manter a honestidade, não superaquecer a UX, manter a privacidade/regulação e manter a economia promo sustentável.
2) Sinais e fichas (o que contar)
Dispositivo e ambiente
Avaliação da integridade do cliente (mobile/web), sinais de emulador/ruth, perfil WebGL/Canvas não convencional.
Device fingerprint (sem PII): combinações de User-Agente, fontes, gráficos, tempo de renderização.
Biometria comportamental
Ritmo de cliques/teclas, fluidez das curvas, micropausibilidade, variabilidade das trajectórias.
Ruídos «humanos»: tremor do cursor, microdrefe scroll, distribuição de espaçonaves (lognormalidade).
Pattern de jogos e missionários
Ciclos repetitivos de comprimento «perfeito», ritmo anormalmente estável (spin/min).
Janelas de atividade estreitas (por exemplo, exatamente a cada 10 min), terminações instantâneas de buscas múltiplas.
Sinais gráficos e rede
Correspondências IP/AS, fontes de pagamento compartilhadas (em unidades), clusters de amizade/convites.
Coparticipação de torneios com «subcombas» (estranhas correlações de resultados).
Economia/Promo
Monetização desproporcional em missões com Tóquio, conclusões drásticas após a farma.
RG/contexto
Sessões superdimensionais sem micropausa (sinal de bot), «linhas de montagem» noturnas.
3) Pilha de modelo (como apanhamos)
1. Detectores de anomalia (unsupervised):- Isolation Forest, One-Class SVM, Autoencoder para comportamentos e dispositivos.
- Uso: Um «escrutínio da suspeita» precoce sem o rótulo «culpado».
- Comunity detation (Louvain/Leiden) + sinais de centralidade (betweenness, degree).
- GNN (GraphSAGE/GAT) para classificação de nós/costelas (rodas, quintas de contas).
- Gradiente Boosting/Tabular Transformers em marcas de investigações anteriores.
- Calibrated propabilities → confiança na tomada de decisões.
- User2Vec para sequências de eventos; distâncias → «bot-cluster».
- Escolha uma barreira mínima (cheque vs fácil verificação rígida) sob um contexto de risco x UX.
4) Orquestração de regras (policy engine)
A ideia é que o ML dá risk _ score, o policy decide o que fazer com base na economia e no UX.
Exemplo de níveis:- R0 (verde): sem restrições; Monitoramento passivo.
- R1 (amarelo): soft «humanity-challengy» (microfluência), reduzido por um caco de missões.
- R2 (laranja): cheque device, controle de ritmo, redução da emissão de tokens.
- R3 (vermelho): unidade de progresso de missões disputadas, moderação manual/congelamento temporário de prémios.
- R4 (preto): ban/CUS-Revo (se regulatório for válido e razoável).
Controladores de transições: risco agregado, porta-bandeiras, queixas, sinal dos provedores.
5) Barreiras justas sem mais atrito
Invisível checks: biometria comportamental de fundo, avaliação do ambiente.
Humanity-action em vez de kupchi: mini-gesto (drag-pattern casual, slide improvisado), time-window com microapausas.
WebAuthn/Passkeys para ações «caras»: fixar o dispositivo/identidade sem senha.
Barreiras de propulsão, só acendem no momento das anomalias, não todos.
6) Missões anti-pattern (como não deixar «farmácia»)
Variabilidade de requisitos: série de ações em diferentes provedores/horários/taxas.
Kuldown e mudança de conteúdo, proibição de ciclos idênticos consecutivos.
Eventos aleatórios de verificação, pequenas verificações «humanas» no meio de uma longa missão.
Limitação de progressões paralelas, para que as fazendas não fechem dezenas de missões simultâneas.
7) Complaens, privacidade, transparência
Data minimization: apenas os fichas necessários, armazenamento de unidades anônimas.
Explainability: reason-codes para ações controversas (por exemplo, velocidade anormal + cluster de gráficos).
Processo appeal: uma forma compreensível de recurso; uma rápida revisão.
Política RG: Com sinais de cansaço, reduzimos a carga de trabalho em vez de «empurrar» o jogador.
8) Métricas de sucesso e guarda da economia
Bot/Collusion catch rate (proporção identificada antes dos prêmios-chave).
Falso Positivo Rate (limiar Lag to Action (tempo da anomalia à medida). Emision to GGR e Prize ROY: A defesa paga a si mesma. Complaint/Appeal rate и Appeal overturn rate. Impacto on UX: conversão de missões, mute/opt-out de personalização, NPS de honestidade. 9) A/B e validação offline 1. Missões antissistema: variabilidade vs básico. 2. O cheque Humanity é um gesto invisível vs clássico capcha. 3. Limite de risk _ score: macio/rígido (diferentes TPR/FPR). 4. Filtros gráficos: s/sem GNN, apenas as regras do grafo. 5. Orquestrador de barreiras: bandido de contexto vs estático. 10) Pseudocode (padrão → política → ação) 11) Modelos JSON (regras e registro) 12) Processo de resposta e redtiming Monitoramento em tempo real: dashboards de picos de risco, componentes gráficos. 1. detalhe de anomalia → 2) redução de emissão/congelamento de prémios em disputa → 3) amostra de logs/gráficos → 4) patch regras/modelos → 5) retro-contagem de prêmios honestos. Red Team/Laboratório clandestino: simulação de bots (desobstrução, randomização), ataques a modelos (adversarial examples). Lançamentos de canário, criamos novas barreiras entre 5% e 10% do tráfego. 13) UX e comunicações Tom neutro e respeitoso: «Observados atos não convencionais - confira que você é humano (30 segundos)». Opções: «repetir mais tarde», «entrar em contato com suporte», «recurso». Acessibilidade: Alternativas para pessoas com limitações motoras/visuais. Transparência: página «Como defendemos a honestidade», com princípios gerais (sem prescrição para abuso). 14) Arquitetura técnica (resumo) Coletar eventos: Kafka/Redpanda, circuitos 'mission _ progress', 'input _ stream', 'device _ attest'. Fichestor: online (ms-latência) + offline (batch 1-6 h). Serviços ML: 'risk-scorer', 'graph-service', 'policy-engine'. Armazenamento de provas: logs imutáveis (WORM), criptografia em paz e no canal. Segurança: Assentos de segurança RNG no servidor; cliente - apenas visualização. 15) Folha de cheque antes do lançamento Antifrod/antibot na gamificação é uma camada de ML + gráficos + barreiras justas que são ativadas exatamente onde você precisa. A biometria comportamental e a anomalia de detecção dão um sinal inicial, o gráfico-analista abre as colónias, o orquestrador seleciona o mínimo suficiente. Com transparência, privacidade e respeito à UX, o sistema mantém a honestidade da competição, protege a economia dos prêmios e não transforma o produto em uma «faixa de obstáculos» para jogadores de boa fé.
python def score_request(user, event):
x = build _ featuras (user, event) # dispositivo, comportamento, sinais gráficos r _ unsup = oc _ svm. score (x) # anormalidade r _ sup = gbdt. predict _ proba (x) [:, 1] # probabilidade de frod r _ graph = gnn _ node _ prob (user. node _ id) # risco de grafia risk = calibrate (r _ unsup, r _ sup, r _ graph) # calibragem isotropal return risk
def decide_action(risk, context):
contexto: importância da ação, valor da recompensa, fator 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 + сниж. cap de missões if risk <0. 85: return «HOLD _ REWARDS» # congelamento até return «BAN _ OR _ REVIEW»
def enforce(action, user):
barreira if action mínima = = «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 da decisão (para auditoria/recurso):
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"
}