Cómo bloquear el fraude en el registro, el clic en la oferta y el retiro
Puntuar el fraude es solo la mitad del trabajo. El dinero se salva cuando tu sitio actúa según la respuesta. Esta guía muestra los cuatro puntos donde actuar, qué hacer en cada uno y las pocas líneas de código que hacen falta.
Los cuatro puntos donde actuar
El fraude en un sitio de recompensas sigue siempre el mismo camino: abrir cuentas, completar ofertas, cobrar las conversiones y retirar. Cada paso es una oportunidad para frenarlo, y cada uno cuesta menos que el siguiente.
- Registro. Rechazar aquí una cuenta de granja no cuesta nada. Nunca gana, nunca hace clic y nunca llega a tus anunciantes.
- Clic en la oferta. Si la cuenta ya está marcada, no abras la oferta. El fraude nunca llega al offerwall ni al anunciante, así que después no hay nada que revertir.
- Conversión (postback). Acredita la recompensa, pero en espera. Los puntos existen, el usuario no puede gastarlos y tú decides después de echar un vistazo.
- Retiro. El último momento en que el dinero sigue siendo tuyo. Retén el retiro y revísalo antes de pagar.
Qué hacer con cada respuesta
CashoutGuard responde a cada evento con allow, review o block, además de los motivos. Esta es una política inicial sensata:
| Dónde | block | review | allow |
|---|---|---|---|
| Registro | Rechazar la cuenta o dejarla suspendida | Aceptar, vigilar el primer retiro | Aceptar |
| Clic en la oferta | Mostrar "oferta no disponible" | Abrir la oferta | Abrir la oferta |
| Conversión | Acreditar en espera, sin saldo | Acreditar con normalidad, marcar para la revisión del retiro | Acreditar con normalidad |
| Retiro | Retener; normalmente rechazar tras la revisión | Retener para una revisión rápida | Pagar |
Suspende la cuenta en lugar de eliminarla. Si fue una falsa alarma, con un clic el usuario vuelve con su historial intacto.
El código
El script del navegador asigna a cada visitante un request_id. Envíalo con el formulario a tu servidor y luego consulta a CashoutGuard desde el servidor con tu clave secreta. Los ejemplos usan el SDK de PHP de la documentación; los SDK de Node.js y Python funcionan igual.
Registro
$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.']);
}Clic en la 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));Conversión (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 spendableRetiro
$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();Sin riesgos: modo sombra y fail-open
Dos ajustes protegen a los usuarios honestos mientras lo pones en marcha.
- Primero, modo sombra. Un sitio nuevo responde allow a todo, pero registra lo que habría hecho. Ejecuta tu código en modo sombra unos días, revisa las cuentas que habría bloqueado y luego pasa el sitio a modo activo. Tu código no cambia.
- Fail-open. El SDK espera como máximo dos segundos y responde allow si CashoutGuard va lento o no responde. Un problema de red nunca bloquea un registro ni un pago.
Qué señales merecen un bloqueo
No todos los motivos pesan lo mismo. Una buena política bloquea ante evidencias difíciles de explicar de forma inocente y solo manda a revisión el resto. Estas son las señales que más a menudo justifican un bloqueo por sí solas:
- Una dirección de pago que ya cobró para otra cuenta. Un mismo email de PayPal o una misma wallet cobrando para varias cuentas es una sola persona.
- Un dispositivo compartido con cuentas que ya bloqueaste. El mismo navegador o móvil que vuelve con otro nombre es el patrón clásico de una granja.
- Un emulador, una máquina virtual o una herramienta de automatización. Los usuarios reales no completan ofertas desde un navegador headless ni desde un emulador de Android.
- Tor o una IP de datacenter en ofertas con segmentación geográfica. El anunciante pagó por un país en el que el usuario nunca estuvo, así que la conversión se va a revertir.
- Una dirección que está en tu propia lista de bloqueo. Cada red confirmada te deja dispositivos, IPs y direcciones que nunca deberían volver a ganar.
Otras señales sirven más como motivo para mirar que para bloquear: una VPN por sí sola, una zona horaria que no coincide con la IP, una cuenta recién creada o una oferta completada muy rápido. Dos o tres de ellas juntas en la misma cuenta suelen sumar de todos modos una puntuación de bloqueo, y de eso se trata puntuar: una señal débil rara vez decide; varias fuertes siempre lo hacen.
Cómo elegir tus umbrales
Cada sitio tiene dos números: la puntuación a partir de la cual un evento pasa a revisión y la puntuación a partir de la cual se bloquea. Los valores por defecto funcionan para la mayoría de los sitios de recompensas, pero tu tráfico no es igual al de los demás.
- Deja el sitio en modo sombra entre tres y siete días para tener tráfico real puntuado.
- Abre las cuentas que se habrían bloqueado y revisa veinte a mano. Si casi todas son claramente fraude, el umbral de bloqueo es correcto o incluso podría bajar un poco.
- Haz lo mismo con veinte cuentas en revisión. Si la mayoría son honestas, sube el umbral de revisión para que tu equipo solo mire los casos que importan.
- Repite después de cambios grandes: un offerwall nuevo, un país nuevo o un método de pago nuevo cambian quién llega a tu sitio.
Las reglas ayudan cuando una señal importa más en tu sitio que en otros. Un sitio que solo paga en cripto quizá quiera bloquear toda wallet compartida; a un sitio de encuestas quizá le preocupe sobre todo la velocidad. Las reglas cambian el peso de un motivo sin tocar tu código.
Cuando se bloquea a un usuario honesto
Va a pasar. Una familia que comparte un mismo portátil, un viajero en el wifi de un hotel o un usuario detrás de un operador móvil que rota IPs pueden parecer inusuales. Lo que importa es lo rápido que puedas deshacerlo.
- Conserva la cuenta, suspéndela. Eliminarla tira a la basura el historial que necesitas para decidir.
- Da una vía de regreso. Basta un mensaje neutro con un enlace a soporte. Las granjas rara vez escriben; los usuarios honestos sí.
- Incluye la cuenta en la lista de permitidos tras comprobarla. Cuando estés seguro, añádela a la lista de permitidos para que las mismas señales no la vuelvan a bloquear la semana siguiente.
- Libera rápido el dinero retenido. Una conversión o un retiro retenido que resulta estar en regla debería pagarse el mismo día. Eso es lo que hace que una retención sea aceptable para los usuarios honestos.
Plan de implementación en una semana
| Día | Paso | Por qué |
|---|---|---|
| 1 | Instala el script y envía los retiros y los postbacks, con el sitio en modo sombra | Se puntúa tráfico real sin ningún riesgo |
| 2-3 | Revisa una muestra de los posibles bloqueos y revisiones | Contrasta los umbrales con tus propios usuarios |
| 4 | Pasa a modo activo y actúa solo sobre los retiros | Protege el dinero con el menor impacto |
| 5 | Retén las conversiones bloqueadas en el handler de postbacks | Los saldos dejan de crecer en las cuentas marcadas |
| 6-7 | Rechaza los registros bloqueados y mantén cerradas las ofertas bloqueadas | Las granjas se quedan en la puerta y nunca llegan a tus anunciantes |
Cómo medir el resultado
Tres números te dicen si el bloqueo funciona. Revísalos cada semana durante el primer mes.
- Tasa de reversiones de tus redes. El porcentaje de conversiones revertidas semanas después debería bajar a medida que las cuentas bloqueadas dejan de ganar.
- Dinero retenido y dinero liberado. Si liberas la mayor parte de lo que retienes, tus umbrales son demasiado estrictos. Si casi nunca liberas nada, quizá sean demasiado laxos.
- Tickets de soporte por bloqueos. Unos pocos por semana es normal. Un salto repentino suele significar que una señal pesa demasiado para tu audiencia.
Próximos pasos
Empieza por el retiro: es una sola llamada y protege el dinero directamente. Luego integra el postback y, después, el registro y el clic en la oferta. La checklist de retiros cubre qué mirar durante la revisión, y la página de precios incluye una prueba de 14 días del plan Growth.