CashoutGuard

Como bloquear fraude no cadastro, no clique na oferta e no saque

Pontuar a fraude é só metade do trabalho. O dinheiro é salvo quando o seu site age com base na resposta. Este guia mostra os quatro pontos onde agir, o que fazer em cada um e as poucas linhas de código necessárias.

Os quatro pontos onde agir

A fraude em um site de recompensa segue sempre o mesmo caminho: abrir contas, completar ofertas, receber as conversões e sacar. Cada etapa é uma chance de barrá-la, e cada uma custa menos do que a seguinte.

  1. Cadastro. Recusar aqui uma conta de fazenda não custa nada. Ela nunca ganha, nunca clica e nunca chega aos seus anunciantes.
  2. Clique na oferta. Se a conta já está sinalizada, não abra a oferta. A fraude nunca chega ao offerwall nem ao anunciante, então não há nada para estornar depois.
  3. Conversão (postback). Credite a recompensa, mas retida. Os pontos existem, o usuário não pode gastá-los e você decide depois de dar uma olhada.
  4. Saque. O último momento em que o dinheiro ainda é seu. Retenha o saque e revise antes de pagar.

O que fazer com cada resposta

O CashoutGuard responde a cada evento com allow, review ou block, junto com os motivos. Esta é uma política inicial sensata:

Ondeblockreviewallow
CadastroRecusar a conta ou mantê-la suspensaAceitar, observar o primeiro saqueAceitar
Clique na ofertaMostrar "oferta indisponível"Abrir a ofertaAbrir a oferta
ConversãoCreditar retido, sem saldoCreditar normalmente, sinalizar para a revisão do saqueCreditar normalmente
SaqueReter; em geral negar após a revisãoReter para uma revisão rápidaPagar

Suspenda a conta em vez de excluí-la. Se foi alarme falso, um clique traz o usuário de volta com o histórico intacto.

O código

O script do navegador dá a cada visitante um request_id. Envie-o com o formulário para o seu servidor e depois consulte o CashoutGuard a partir do servidor com a sua chave secreta. Os exemplos usam o SDK de PHP da documentação; os SDKs de Node.js e Python seguem o mesmo formato.

Cadastro

$cg = new \CashoutGuard\Client(getenv('CASHOUTGUARD_SECRET'));

$user = createUser($request);   // your own signup
$r = $cg->evaluate([
    'event'      => 'signup',
    'account_id' => (string) $user->id,
    'request_id' => $request->input('cg_request_id'),
    'ip'         => $request->ip(),
    'email'      => $user->email,
]);
if ($r->isBlocked()) {
    $user->suspend();          // keep it, so a false alarm is one click away
    return back()->withErrors(['email' => 'We could not create your account.']);
}

Clique na oferta

$r = $cg->evaluate(['event' => 'offer_click', 'account_id' => (string) $user->id,
    'request_id' => $request->input('cg_request_id'), 'offer_id' => $offer->id, 'click_id' => $clickId]);
if ($r->isBlocked()) {
    return response()->view('offer-unavailable', [], 403);
}
return redirect()->away($offer->trackingUrl($user, $clickId));

Conversão (postback)

// Ask BEFORE crediting, so a blocked conversion never touches the balance.
$r = $cg->evaluate(['event' => 'conversion', 'account_id' => (string) $userId,
    'offer_id' => $offerId, 'transaction_id' => $transId, 'amount' => $payoutUsd, 'currency' => 'USD']);
$status = $r->isBlocked() ? 'hold' : 'approved';
creditReward($userId, $points, $status);   // 'hold' = recorded, not spendable

Saque

$r = $cg->evaluate(['event' => 'cashout', 'account_id' => (string) $user->id,
    'request_id' => $request->input('cg_request_id'), 'amount' => $usd, 'currency' => 'USD',
    'payout_method' => $method, 'payout_address' => $address]);
$withdrawal->status = $r->isBlocked() ? 'hold' : ($r->needsReview() ? 'review' : 'pending');
$withdrawal->save();

Com segurança: modo sombra e fail-open

Duas configurações protegem os usuários honestos enquanto você implanta isso.

  • Modo sombra primeiro. Um site novo responde allow para tudo, mas registra o que teria feito. Rode seu código em modo sombra por alguns dias, veja as contas que teriam sido bloqueadas e depois mude o site para o modo ativo. Seu código não muda.
  • Fail-open. O SDK espera no máximo dois segundos e responde allow se o CashoutGuard estiver lento ou fora do ar. Um problema de rede nunca bloqueia um cadastro nem um pagamento.

Quais sinais merecem um bloqueio

Nem todo motivo tem o mesmo peso. Uma boa política bloqueia com base em evidências difíceis de explicar de forma inocente e só manda o resto para revisão. Estes são os sinais que mais vezes justificam um bloqueio sozinhos:

  • Um endereço de pagamento que já recebeu por outra conta. Um mesmo e-mail de PayPal ou uma mesma carteira recebendo por várias contas é uma pessoa só.
  • Um dispositivo compartilhado com contas que você já bloqueou. O mesmo navegador ou celular voltando com outro nome é o padrão clássico de fazenda.
  • Um emulador, uma máquina virtual ou uma ferramenta de automação. Usuários reais não completam ofertas a partir de um navegador headless ou de um emulador de Android.
  • Tor ou IP de datacenter em ofertas segmentadas por país. O anunciante pagou por um país onde o usuário nunca esteve, então a conversão vai ser estornada.
  • Um endereço na sua própria lista de bloqueio. Cada rede confirmada entrega dispositivos, IPs e endereços que nunca mais deveriam ganhar.

Outros sinais servem mais como motivo para olhar do que para bloquear: uma VPN sozinha, um fuso horário que não bate com o IP, uma conta recém-criada ou uma oferta feita rápido demais. Dois ou três deles juntos na mesma conta costumam somar uma pontuação de bloqueio de qualquer forma, e é justamente para isso que serve a pontuação: um sinal fraco raramente decide; vários fortes sempre decidem.

Como escolher seus limites

Cada site tem dois números: a pontuação a partir da qual um evento vai para revisão e a pontuação a partir da qual ele é bloqueado. Os valores padrão funcionam para a maioria dos sites de recompensa, mas o seu tráfego não é igual ao de todo mundo.

  1. Rode em modo sombra de três a sete dias para ter tráfego real pontuado.
  2. Abra as contas que teriam sido bloqueadas e confira vinte delas à mão. Se quase todas forem claramente fraude, o limite de bloqueio está certo ou pode até descer um pouco.
  3. Faça o mesmo com vinte contas em revisão. Se a maioria for honesta, suba o limite de revisão para que sua equipe só olhe os casos que importam.
  4. Repita depois de mudanças grandes: um offerwall novo, um país novo ou um método de pagamento novo mudam quem aparece.

As regras ajudam quando um sinal importa mais no seu site do que nos outros. Um site que só paga em cripto pode querer bloquear toda carteira compartilhada; um site de pesquisas pode se importar mais com a velocidade. As regras mudam o peso de um motivo sem mexer no seu código.

Quando um usuário honesto é bloqueado

Vai acontecer. Uma família dividindo um notebook, um viajante no Wi-Fi do hotel ou um usuário atrás de uma operadora móvel que troca de IP podem parecer incomuns. O que importa é a rapidez com que você desfaz o bloqueio.

  • Mantenha a conta, suspenda-a. Excluir joga fora o histórico de que você precisa para decidir.
  • Ofereça um caminho de volta. Uma mensagem neutra com um link para o suporte basta. Fazendas raramente escrevem; usuários honestos, sim.
  • Coloque na lista de permissão depois de verificar. Quando tiver certeza, adicione a conta à lista de permissão para que os mesmos sinais não a bloqueiem de novo na semana seguinte.
  • Libere rápido o dinheiro retido. Uma conversão ou um saque retido que se mostre legítimo deveria ser pago no mesmo dia. É isso que torna a retenção aceitável para usuários honestos.

Plano de implantação em uma semana

DiaEtapaPor quê
1Instale o script e envie saques e postbacks, com o site em modo sombraO tráfego real é pontuado com risco zero
2-3Revise uma amostra dos possíveis bloqueios e revisõesConfira os limites com os seus próprios usuários
4Mude para o modo ativo e aja só nos saquesProtege o dinheiro com o menor impacto
5Retenha as conversões bloqueadas no handler de postbackOs saldos param de crescer nas contas sinalizadas
6-7Recuse cadastros bloqueados e mantenha fechadas as ofertas bloqueadasAs fazendas param na porta e nunca chegam aos seus anunciantes

Como medir o resultado

Três números dizem se o bloqueio funciona. Acompanhe-os toda semana durante o primeiro mês.

  • Taxa de estornos das suas redes. A parcela de conversões estornadas semanas depois deve cair à medida que as contas bloqueadas param de ganhar.
  • Dinheiro retido e dinheiro liberado. Se você libera a maior parte do que retém, seus limites estão rígidos demais. Se quase nunca libera nada, talvez estejam frouxos demais.
  • Tickets de suporte sobre bloqueios. Alguns por semana é normal. Um salto repentino geralmente significa que um sinal está forte demais para o seu público.

Próximos passos

Comece pelo saque: é uma chamada só e protege o dinheiro diretamente. Depois adicione o postback e, em seguida, o cadastro e o clique na oferta. O checklist de saque cobre o que olhar durante a revisão, e a página de preços inclui um teste de 14 dias do plano Growth.

Perguntas frequentes

Devo bloquear no cadastro ou no saque?

Nos dois, mas por motivos diferentes. O cadastro barra as fazendas antes que elas custem qualquer coisa; o saque é a rede de segurança final para contas que pareciam limpas no começo.

Bloquear o clique na oferta ajuda mesmo?

Sim. Se a oferta nunca abre, o offerwall nunca registra a instalação, então o anunciante não recebe fraude do seu site e não há nada para estornar semanas depois.

E se o CashoutGuard estiver fora do ar?

Os SDKs funcionam em fail-open: depois de dois segundos respondem allow, e o seu site continua funcionando como se a checagem não existisse.

Posso bloquear só no saque e apenas observar o resto?

Sim. O seu código decide sobre quais respostas agir. Muitos sites começam retendo os saques bloqueados e só depois passam a recusar cadastros.

Continue lendo