Integração com JavaScript

Integre o SilentShield em qualquer site usando JavaScript puro, ou utilize nossos guias específicos para React, Vue e Angular.

1. Adicionar a Tag de Script

Adicione esta tag de script ao seu HTML, de preferência antes da tag de fechamento </body>:

HTMLhtml
<script src="https://api.silentshield.io/client.js?key=YOUR_API_KEY" defer></script>

2. Inicializar o Widget

Chame SilentShield.init() após o carregamento do DOM:

JavaScriptjavascript
document.addEventListener('DOMContentLoaded', function() {
  SilentShield.init({
    apiKey: 'YOUR_API_KEY',
    lang: 'auto',
    features: {
      telemetry: true,
      captchaUI: true,
      fallbackCaptcha: true,
      showBrandingBadge: true,
    },
    onVerdict: function(response) {
      console.log('SilentShield verdict:', response);
    }
  });
});

Opções de Configuração

apiKey
API Key (obrigatório)
lang
Código do idioma ou 'auto' para detecção do navegador (padrão: 'auto'). Suporta 25 idiomas.
thresholdSuspicious
Pontuação abaixo deste valor aciona um desafio (padrão: 0.6)
thresholdBlock
Pontuação abaixo deste valor bloqueia a requisição (padrão: 0.3)
telemetry
Ativar rastreamento de comportamento (padrão: true)
captchaUI
Mostrar interface do CAPTCHA quando necessário (padrão: true)
fallbackCaptcha
Ativar CAPTCHA matemático como alternativa (padrão: true)
showBrandingBadge
Mostrar selo 'Protegido por SilentShield' (padrão: true)
zeroPii
Disable browser fingerprinting for maximum privacy (default: false). See Features → Zero-PII Mode.
debugOverlay
Mostrar sobreposição de depuração (padrão: false)
onVerdict
Função de callback chamada quando um veredito é recebido

Aplicações de Página Única (SPA)

Para SPAs que usam roteamento no lado do cliente (React Router, Vue Router, etc.), o SilentShield observa automaticamente as mudanças no DOM e detecta novos formulários. Não é necessária reinicialização após a navegação.

Lendo o Nonce

Após o envio do formulário, o nonce está disponível como um campo oculto:

HTMLhtml
const nonce = document.querySelector('input[name="ss_nonce"]')?.value;