Guia de migração

Migre do Friendly Captcha para o CaptchaLa

Mesma postura privacy-first. Adote o CaptchaLa, ganhe SDKs móveis, disponibilidade na China continental e fallback de desafio visível. A migração são duas mudanças de arquivo.

FFriendly CaptchaCurrent setup~10 minCaptchaLaDrop-in target

Como fica a mudança de código

Antes — Friendly Captcha
<div class="frc-captcha" data-sitekey="YOUR_SITE_KEY"></div>
<script type="module" src="https://cdn.jsdelivr.net/npm/@friendlycaptcha/sdk/site.compat.min.js" async defer></script>
Depois — CaptchaLa
<button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
  loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
    .onSuccess(res => onToken(res.token))
    .bindTo('#login-btn'));
</script>
Antes — verificação no servidor do Friendly Captcha (Node)
const res = await fetch('https://api.friendlycaptcha.com/api/v1/siteverify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    secret: process.env.FRIENDLY_SECRET,
    solution: req.body['frc-captcha-solution'],
    sitekey: process.env.FRIENDLY_SITEKEY,
  }),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })
Depois — verificação no servidor do CaptchaLa (Node)
const res = await fetch('https://apiv1.captcha.la/v1/validate', {
  method: 'POST',
  headers: {
    'X-App-Key': process.env.CAPTCHALA_APP_KEY,
    'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })

Passos da migração

  1. 1

    Cadastre-se e pegue sua App Key + Secret

    Crie uma conta gratuita no CaptchaLa, adicione um site, copie suas chaves. Sem chamada de vendas, sem contrato.

  2. 2

    Troque a tag do widget

    Substitua frc-captcha por captchala, data-sitekey por data-app-key e o src do script pelo nosso CDN. O script do tipo module vira um script async comum.

  3. 3

    Atualize o nome do campo oculto

    O Friendly Captcha envia frc-captcha-solution; nós enviamos captchala-token. Renomeie no seu handler de formulário se você o lê pelo nome.

  4. 4

    Atualize a verificação no servidor

    O endpoint muda para apiv1.captcha.la/v1/validate. O corpo dispensa o campo sitekey — identificamos o site a partir do seu appSecret. A flag valid (data.valid) do formato da resposta permanece a mesma.

  5. 5

    Faça o rollout gradualmente

    Troque um formulário de cada vez. O CaptchaLa coexiste com o Friendly Captcha — eles não compartilham cookies nem estado. A maioria das equipes percebe leve melhora na conversão porque o cálculo de PoW nos dispositivos dos usuários desaparece.

Perguntas frequentes

Vou perder a história de privacidade auditável?

A arquitetura somente-PoW do Friendly Captcha é mais auditável num sentido criptográfico literal — não há realmente nada para fazer fingerprint. O CaptchaLa também não faz fingerprint, mas nossa arquitetura (risco adaptativo + desafio) é mais complexa, o que torna a auditoria mais difícil. Se o seu critério de privacidade é 'auditável por um advogado de privacidade com expertise em criptografia', essa é uma distinção real que vale ponderar.

E quanto a mobile?

Esse é um dos maiores ganhos da migração. O Friendly Captcha é somente web. O CaptchaLa tem SDKs nativos para iOS, Android e Flutter — mesmo backend, mesmo dashboard, mesma cobrança. Entregue CAPTCHA no seu app móvel sem escolher um segundo fornecedor.

Como meus usuários percebem a diferença?

Em celulares antigos e laptops de baixo desempenho, o cálculo de PoW que o Friendly Captcha roda em segundo plano pode ser perceptível — alguns segundos de consumo de CPU. O CaptchaLa não roda cálculos pesados no dispositivo. A maioria dos usuários não notará de qualquer forma; usuários com hardware fraco nos notarão menos.