No Google · No tracking

Sin Google · Sin rastreo

A captcha that respects your visitors

Un captcha que respeta a tus visitantes

Stop bots without handing your users over to an advertising company. SentryCaptcha protects your forms with two lines of code: no profiling, no behavioural tracking, no cookies following anyone around the web afterwards.

Frena a los bots sin entregar tus usuarios a una empresa de publicidad. SentryCaptcha protege tus formularios con dos líneas de código: sin perfilado, sin seguimiento de comportamiento y sin cookies que persigan a nadie por la web después.

  • Two lines to integrate — works with any stack
  • Dos lĂ­neas para integrarlo, con cualquier tecnologĂ­a
  • Proof of work makes mass solving expensive
  • El proof-of-work encarece resolverlo en masa
  • Works on touch-only POS terminals and kiosks
  • Funciona en TPV y kioscos sin teclado fĂ­sico

Try the real thing

Pruébalo de verdad

This is the actual widget, not a screenshot. Solve it and you get a one-time token — the same token your backend would then verify.

Este es el widget real, no una captura. Resuélvelo y obtendrás un token de un solo uso: el mismo que tu backend verificaría después.

Nothing external is requested until you click. No se pide nada externo hasta que pulsas.

What you get

Qué incluye

No profiling, ever

Sin perfilado, nunca

We check whether a visitor is a human on that form, at that moment — and nothing else. No behavioural profile, no advertising network behind it, no data sold to anyone.

Comprobamos si quien rellena ese formulario es humano en ese momento, y nada más. Sin perfil de comportamiento, sin una red publicitaria detrás y sin vender datos a nadie.

Proof of work

Proof of work

Every challenge costs the browser real CPU. Verifying is instant; solving thousands is not — abuse has to pay for itself.

Cada reto cuesta CPU real al navegador. Verificarlo es instantáneo; resolver miles, no: abusar tiene que salir a cuenta.

Adaptive: appears only when needed

Adaptativo: aparece solo cuando hace falta

Show the captcha only after N failed logins, counted per IP and per account. Normal users never see it; attackers always do.

Muestra el captcha solo tras N intentos fallidos, contados por IP y por cuenta. El usuario normal no lo ve nunca; el atacante siempre.

No iframe — works on POS and kiosks

Sin iframe — funciona en TPV y kioscos

The field is a plain input in your page and the widget never steals focus, so on-screen keyboards behave on touch-only terminals.

El campo es un input normal de tu página y el widget nunca roba el foco, así que el teclado en pantalla funciona en terminales táctiles.

A dashboard, not a config file

Un panel, no un fichero de configuraciĂłn

One key pair per site, allowed origins, visual difficulty and typo tolerance — all editable from your account, no redeploy needed.

Un par de claves por sitio, orĂ­genes permitidos, dificultad visual y tolerancia a erratas, editables desde tu cuenta y sin volver a desplegar nada.

Ready-made Odoo module

MĂłdulo de Odoo listo

Drop-in protection for the Odoo 14 and 16 login and signup pages: install, paste your keys, done. Everything else integrates through two plain HTTP calls.

Protección directa para el login y el registro de Odoo 14 y 16: instalar, pegar las claves y listo. Todo lo demás se integra con dos llamadas HTTP normales.

How it works

CĂłmo funciona

  1. GET /generate The widget asks for a challenge and gets an image plus a token. El widget pide un reto y recibe una imagen y un token.
  2. POST /verify It sends the visitor's answer and, if correct, receives a one-time response token. EnvĂ­a la respuesta del visitante y, si es correcta, recibe un token de un solo uso.
  3. POST /siteverify Your backend validates that token with your secret key — server to server. Tu backend valida ese token con tu clave secreta, servidor a servidor.

Your secret key never reaches the browser, and a solved captcha can only be redeemed once.

Tu clave secreta nunca llega al navegador, y un captcha resuelto solo puede canjearse una vez.

Two snippets and you are done

Dos fragmentos y listo

1. In your form

1. En tu formulario

<div id="sentrycaptcha-container" data-public-key="pub_xxxxxxxx"></div>
<script src="https://captcha.sentrycaptcha.com/static/js/widget.js"></script>

2. In your backend

2. En tu backend

r = requests.post(
    "https://captcha.sentrycaptcha.com/siteverify",
    json={"secret": SECRET_KEY,
          "response": form["sentrycaptcha-response"]},
    timeout=5,
)
if not r.json().get("success"):
    abort(400)

Any language works — it is one HTTP POST. Using Odoo? Install the module, paste your keys in Settings, done.

Vale cualquier lenguaje: es un POST HTTP. ¿Usas Odoo? Instala el módulo, pega tus claves en Ajustes y ya está.

A private service

Un servicio privado

SentryCaptcha protects the websites and Odoo instances we build and maintain. It is not open for public sign-up: accounts are created for the projects we work on. If yours is one of them, the dashboard is where you manage your keys.

SentryCaptcha protege las webs e instancias de Odoo que construimos y mantenemos. No está abierto al registro público: las cuentas se crean para los proyectos en los que trabajamos. Si el tuyo es uno de ellos, el panel es donde gestionas tus claves.

What it does not do

Lo que no hace

No captcha makes abuse impossible, and anyone claiming otherwise is selling something. A distorted image can be read by modern OCR; what stops real attacks is the cost stacked around it — proof of work, per-IP and per-account limits, single-use tokens and automatic bans. The goal is to make abuse cost more than it is worth.

Ningún captcha hace imposible el abuso, y quien diga lo contrario está vendiendo algo. Un OCR moderno puede leer una imagen distorsionada; lo que frena los ataques reales es el coste que la rodea: proof of work, límites por IP y por cuenta, tokens de un solo uso y baneos automáticos. El objetivo es que abusar cueste más de lo que vale.