Skip to content

Web SDK de Prevención de fraude

El Web SDK de Prevención de fraude se ejecuta en tu página — una landing page, una pantalla de registro o inicio de sesión, o cualquier recurso protegido. Solicita un veredicto para la visita actual y se lo devuelve a tu código, para que puedas decidir qué hacer con el tráfico — registrarlo, marcarlo o pedir al visitante una verificación adicional.

Inicio rápido

html
<!-- Load the Fraud Prevention SDK -->
<script src="https://cdn.captcha-cdn.net/bot-signal.js"></script>

<script>
  BotSignal.init({
    appKey: 'YOUR_APP_KEY',
    onVerdict: function (verdict) {
      // verdict.is_bot, verdict.score, verdict.action — see Verdict Reference
      if (verdict.is_bot) {
        // exclude this visit from your funnel / suppress conversions
      }
    },
    onError: function (err) {
      console.error('bot-signal error', err);
    },
  });
</script>

BotSignal.init() también devuelve una Promise<BotVerdict>, así que también puedes usar await en lugar de onVerdict — ambos reciben el mismo objeto de veredicto.

js
const verdict = await BotSignal.init({ appKey: 'YOUR_APP_KEY' });

Opciones

optiontypedefaultDescripción
appKeystringObligatorio. Tu clave de aplicación de Prevención de fraude.
domainstringsignal-v1.world-dynamic.comDominio de señales al que el SDK envía las solicitudes.
tokenParamstring_ctkParámetro de consulta de la URL del que el SDK lee el token de clic.
onVerdict(v) => voidSe invoca una vez con el veredicto final. El principal punto de integración. init() también devuelve Promise<BotVerdict>.
onError(err) => voidSe invoca ante cualquier fallo. El SDK nunca lanza excepciones hacia tu página.
onChallenge(v) => creds | null | Promise<…>Sobrescribe las credenciales de escalado: devuelve tus propias { appKey, serverToken } (serverToken emitido por tu backend), o null para omitir el escalado. Si no se define, se usan las credenciales por defecto emitidas por el backend en verdict.escalate (sin configuración).
challengeConfigobjectApariencia/ubicación del captcha: product (popup/float/embed), container, theme, lang.
onEscalate(displayType) => voidSe invoca cuando se muestra un captcha de escalado.
onEscalateDone(passed, detail) => voidSe invoca tras el escalado. passed = el visitante lo superó; detail = { token, challengeId, cid } para la verificación del lado del servidor del paso.

El escalado lo decide el servidor. El SDK muestra un captcha únicamente cuando el action del veredicto del servidor es challenge y la aplicación está configurada con una acción de escalado correspondiente — no existe un interruptor del lado del cliente para ello. Usa onChallenge para proporcionar tus propias credenciales o para omitir el escalado, y challengeConfig para controlar su apariencia. Después de que un visitante lo supere, verifica el resultado en tu propio backend con detail.token (más challenge_id/cid) — no confíes únicamente en el indicador passed del lado del cliente.

Escenarios con fuente de tráfico

Si un tercero te entrega visitantes y ambas partes necesitan conciliar sobre una conclusión por clic, el SDK también puede leer un token de clic de la URL de la página. Eso es específico de los flujos de tráfico de pago — consulta la guía de Fraude publicitario.

Uso del veredicto

onVerdict recibe un objeto BotVerdict. Los dos campos que más usarás:

  • verdict.is_bottrue cuando la visita se juzga como automatizada/inválida.
  • verdict.action — lo que te recomendamos hacer: record_only, challenge o flag.
js
BotSignal.init({
  appKey: 'YOUR_APP_KEY',
  onVerdict: function (verdict) {
    switch (verdict.action) {
      case 'record_only':
        // normal-looking traffic — proceed, just log the verdict
        break;
      case 'flag':
        // suspicious — keep serving the page but mark this visit as low quality
        markLowQuality(verdict);
        break;
      case 'challenge':
        // high risk — handled by escalation if enabled (see below)
        break;
    }
  },
});

Consulta la lista completa de campos y el manejo recomendado en la Referencia del veredicto.

Escalado

Cuando una visita parece de alto riesgo, Prevención de fraude puede pedir al visitante que complete una verificación adicional antes de tratarlo como un usuario real. Esto lo decide el veredicto del servidor, no un indicador del lado del cliente — se ejecuta siempre que el action del veredicto es challenge y la aplicación tiene configurada una acción de escalado.

js
BotSignal.init({
  appKey: 'YOUR_APP_KEY',
  onEscalate: function (displayType) {
    // se está mostrando una verificación adicional al visitante
  },
  onEscalateDone: function (passed, detail) {
    if (passed) {
      // el visitante superó la verificación adicional — verifica detail.token en tu backend
    } else {
      // no la superó — conserva la recomendación del veredicto original
    }
  },
  onVerdict: function (verdict) {
    // si el visitante superó el escalado, verdict.is_bot se actualiza a false
  },
});

Notas:

  • El escalado solo se activa cuando el action del veredicto es challenge. Para todas las demás visitas no se muestra nada y la experiencia del visitante no se ve afectada.
  • Por defecto el SDK usa las credenciales emitidas por el backend en verdict.escalate (sin configuración). Usa onChallenge para proporcionar tus propias { appKey, serverToken } o para omitir el escalado, y challengeConfig para controlar su apariencia.
  • Tras superarlo, verifica detail.token (más challenge_id/cid) en tu propio backend — no confíes únicamente en el indicador passed del lado del cliente.
  • Si el visitante supera la verificación adicional, el veredicto entregado a onVerdict lo refleja (se trata como humano).
  • El escalado falla en abierto (fail open): si la verificación adicional no se puede cargar o mostrar, el SDK conserva el veredicto original en lugar de bloquear tu página.

INFO

Prevención de fraude nunca decide por ti. Incluso en challenge/flag, tu código sigue teniendo el control de si la visita continúa — el SDK solo expone el veredicto y, opcionalmente, ejecuta la verificación adicional.

Resiliencia

Si el servicio de veredicto es inalcanzable o se produce cualquier error, el SDK devuelve un veredicto degradado (degraded: true) en lugar de hacer fallar tu página. Un veredicto degradado es conservador (is_bot: false, action: record_only) de modo que nunca bloquea usuarios reales. Comprueba verdict.degraded si quieres tratar esas visitas de forma especial.

Próximos pasos

MIT-licensed examples · CaptchaLa is operated independently