---
type: explanation
title: Verifique sem um backend
summary: O que é a verificação hospedada, para quem ela serve, e como o Caputchin verifica um envio e o encaminha para um webhook ou e-mail para que você nunca rode um backend.
---

Um token do Caputchin não prova nada até que algo o confirme. Normalmente esse algo é [o seu próprio backend](/docs/integration-guides/verify-on-your-backend), que chama `/siteverify` e decide se confia na requisição. A verificação hospedada move esse passo para o Caputchin: seu formulário posta em um encaminhador do Caputchin, o Caputchin verifica o token, descarta qualquer coisa que falhe, e encaminha só os envios verificados para um destino que você escolher.

É a mesma decisão de confiança da conferência no backend, rodada do lado do Caputchin em vez do seu. O ponto é que não há chamada `/siteverify` para escrever nem segredo para guardar em um servidor, porque não há servidor.

A verificação hospedada é um recurso pago, disponível no Alpha em diante.

## Para quem serve

A verificação hospedada existe para o caso em que rodar um backend só para conferir um token é mais do que o projeto precisa.

| Você é | Por que se encaixa |
|---|---|
| Um site estático (Webflow, Framer, HTML puro em um CDN) | Não há servidor para receber o formulário ou chamar `/siteverify`. |
| Um construtor no-code (Wix, Squarespace, Carrd) | Você não consegue adicionar código de verificação no servidor. |
| Um desenvolvedor solo ou um time pequeno | Um formulário de contato ou cadastro não vale a pena montar e operar um backend. |
| Já rodando um backend, mas não para este formulário | Você pode apontar um formulário para o encaminhador e deixar o resto do seu stack em paz. |

Se você de fato roda um backend e quer verificar ali, use [verificar no seu backend](/docs/integration-guides/verify-on-your-backend) em vez disso. Os dois são alternativas, não camadas.

## Como funciona

```mermaid
sequenceDiagram
  autonumber
  participant U as Visitante
  participant B as Navegador (widget)
  participant F as Encaminhador do Caputchin
  participant D as Seu destino (webhook ou e-mail)

  U->>B: Preenche o formulário e envia
  B->>F: POST dos campos do formulário mais o token caputchin
  Note over F: Verifica o token, depois o remove do payload
  alt Token válido
    F->>D: Entrega o envio
    D-->>F: Confirma
    F-->>B: 200 com resultado da entrega
  else Token ausente ou inválido
    F-->>B: Rejeitado, nada entregue
  end
```

O encaminhador segura o envio apenas em memória pelo instante que leva para entregá-lo. Não há armazenamento entre o post e a entrega, e o campo `caputchin-token` é removido antes de o payload chegar ao seu destino.

## Destinos

Você configura um ou ambos por chave de site. Ativar os dois é um padrão comum: enviar para um webhook para processamento e enviar a si mesmo uma cópia por e-mail.

| Destino | O que você recebe |
|---|---|
| **Webhook** | Um `POST` JSON carregando os campos do seu formulário mais os metadados de verificação do Caputchin. |
| **E-mail** | Um e-mail simples com os campos do formulário e um rodapé notando que o Caputchin verificou o envio. |

As entregas não são assinadas. O segredo da URL do encaminhador é o que autentica uma chamada de webhook, então mantenha a URL fora de repositórios públicos e de código do lado do cliente. O [tutorial de configuração](/docs/hosted-verification/set-up) mostra o payload exato do webhook.

## O que é mantido privado

A verificação hospedada segue a mesma postura de nenhum-dado-de-visitante do resto do Caputchin:

- **Os envios nunca são armazenados.** Eles vivem na memória do processo pela duração do encaminhamento, depois somem. Construa seu próprio registro do lado do webhook se quiser um.
- **Nenhum dado sobre quem enviou é coletado.** Nenhum IP, nenhum User-Agent, nenhuma impressão digital, nenhum rastreamento.
- **A telemetria é só agregada.** O Caputchin conta sucessos e falhas de entrega para que você veja se seus destinos estão saudáveis, nunca o conteúdo de nenhum envio. Veja [estatísticas](/docs/hosted-verification/statistics).

## Como uma URL fornecida pelo cliente é mantida segura

Uma URL que os servidores do Caputchin vão chamar é um risco clássico de Server-Side Request Forgery. O encaminhador rejeita qualquer URL de webhook cujo host seja um endereço privado, de loopback, link-local ou de metadados de nuvem, tanto quando você a salva quanto de novo logo antes de cada entrega. As categorias bloqueadas incluem:

| Categoria | Exemplos |
|---|---|
| Loopback e não especificado | `127.0.0.1`, `0.0.0.0`, `::1` |
| Privado (RFC 1918) | `10.x.x.x`, `172.16.x.x` até `172.31.x.x`, `192.168.x.x` |
| Link-local e metadados de nuvem | `169.254.x.x`, em particular o endpoint de metadados `169.254.169.254` |
| Carrier-grade NAT | `100.64.x.x` até `100.127.x.x` |
| Multicast e reservado | `224.x.x.x` e acima |
| Hostnames internos | `localhost` e qualquer host terminado em `.local`, `.localhost` ou `.internal` |
| IPv6 privado | endereços link-local (`fe80::/10`) e unique-local (`fc00::/7`) |

Codificações que tentam disfarçar um endereço bloqueado também são pegas: um host em inteiro decimal como `http://2130706433/` ou um host em hex como `http://0x7f000001/` (ambos significando `127.0.0.1`) são rejeitados. Só URLs `http` e `https` são aceitas; qualquer outro esquema é recusado. O encaminhador também se recusa a seguir redirecionamentos, então um endpoint de webhook não pode desviar a chamada para um alvo interno. Uma URL bloqueada surge como um erro genérico em vez de um específico, então não pode ser usada para sondar uma rede. Seu webhook precisa, portanto, viver em uma URL `https` pública.

## O que é deixado de fora de propósito

- **Sem caixa de entrada de envios.** Não há histórico armazenado de envios para navegar no painel.
- **Sem adaptadores próprios de Discord, Slack, Telegram ou SMS.** Só webhook e e-mail. Um webhook pode distribuir para qualquer um desses do seu lado.
- **Sem upload de arquivos.** O encaminhador aceita campos de texto; um envio carregando um arquivo é rejeitado.
- **Sem transformação de payload.** O que o formulário posta é o que seu destino recebe, mais os metadados de verificação.

## Veja também

- [Configurar a verificação hospedada](/docs/hosted-verification/set-up): um passo a passo que a conecta a uma caixa de entrada de teste primeiro.
- [Estatísticas de verificação hospedada](/docs/hosted-verification/statistics): ler a saúde da entrega.
- [Verificar no seu backend](/docs/integration-guides/verify-on-your-backend): a alternativa para quando você roda um servidor.
