Reducir el spam en formularios de contacto sin CAPTCHAs

Implementa protección contra spam eficaz sin frustrar a usuarios legítimos con CAPTCHAs difíciles.

El problema de los CAPTCHAs

Por qué los CAPTCHAs son problemáticos

CAPTCHAs tradicionales:

  • "Selecciona todas las imágenes con semáforos"
  • "Escribe estas letras distorsionadas"
  • "Resuelve este problema matemático"
  • "Haz clic hasta que la imagen esté derecha"

Problemas:

  • Frustrantes para todos los usuarios
  • Pésima accesibilidad (personas con discapacidad visual)
  • Mala experiencia móvil
  • Reduce las tasas de conversión entre un 10 y un 30 %
  • Requiere tiempo y esfuerzo cognitivo
  • Los usuarios suelen abandonar el formulario

La paradoja: Estás castigando a usuarios legítimos para frenar bots.

Alternativas mejores

Protección contra spam moderna que:

  • Funciona de forma invisible para la mayoría de usuarios
  • Mantiene la accesibilidad
  • Preserva la experiencia de usuario
  • Detiene más del 99 % del spam
  • No requiere interacción del usuario

Técnicas antispam eficaces

1. Cloudflare Turnstile (recomendado)

Qué es:
Detección de bots de nueva generación que suele funcionar de forma invisible.

Cómo funciona:

  • Analiza el comportamiento del navegador
  • Comprueba patrones de bots
  • Verifica que es humano de forma automática
  • Rara vez requiere interacción del usuario

Ventajas:

  • ✓ Suele ser invisible para los usuarios
  • ✓ Accesible según WCAG
  • ✓ Adaptado a móvil
  • ✓ Sin puzles ni selección de imágenes
  • ✓ Verificación rápida
  • ✓ Respeta la privacidad

Experiencia de usuario:

El usuario rellena el formulario → Haz clic en enviar → El formulario se envía
(Turnstile verifica en segundo plano)

Implementación:
SupportRetriever incluye Turnstile por defecto. No hace falta configurar nada.

Eficacia: Bloquea entre el 95 y el 99 % del spam automatizado.

2. Campos honeypot

Qué es:
Campo oculto que los bots rellenan pero los humanos no ven nunca.

Cómo funciona:

<!-- Invisible para humanos, fuera del orden de tabulación -->
<input 
  type="text" 
  name="website" 
  tabindex="-1" 
  autocomplete="off"
  aria-hidden="true"
  style="position: absolute; left: -9999px;"
>

Comprobación en el servidor:

// If honeypot field is filled, it's a bot
if (formData.website !== '') {
  return reject('Spam detected');
}

Ventajas:

  • ✓ Cero impacto para el usuario
  • ✓ Completamente invisible
  • ✓ Sin problemas de accesibilidad
  • ✓ Detecta bots básicos
  • ✓ Fácil de implementar

Experiencia de usuario:
Ningún cambio visible. Funciona en silencio.

Eficacia: Bloquea entre el 60 y el 70 % de los bots básicos.

3. Límite de tasa

Qué es:
Limitar el número de envíos desde la misma IP o usuario.

Cómo funciona:

  • Registrar envíos por dirección IP
  • Bloquear si hay demasiados en poco tiempo
  • Limitación gradual (no bloqueo duro)

Ejemplos de configuración:

Conservadora (sitios pequeños):

  • 5 envíos por hora por IP
  • 20 envíos al día por IP

Equilibrada (sitios medianos):

  • 10 envíos por hora por IP
  • 50 envíos al día por IP

Permisiva (sitios con mucho tráfico):

  • 20 envíos por hora por IP
  • 100 envíos al día por IP

Ventajas:

  • ✓ Detiene avalanchas de spam
  • ✓ Sin impacto para el uso legítimo
  • ✓ Previene ataques en ráfaga
  • ✓ Implementación en backend (invisible)

Experiencia de usuario:
Los usuarios normales no alcanzan el límite. Los bots se bloquean tras los primeros intentos.

Eficacia: Bloquea entre el 80 y el 90 % de las avalanchas automatizadas.

4. Validación de correo

Qué es:
Comprobar que la dirección de correo es válida antes de aceptar el envío.

Capas de validación:

1. Comprobación de formato:

// Basic format validation
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
  return 'Please enter a valid email address';
}

2. Verificación de dominio:

  • Comprobar si el dominio existe (consulta DNS)
  • Verificar registros MX (puede recibir correo)
  • Bloquear servicios de correo temporal (opcional)

3. Detección de correo desechable:

  • Bloquear servicios de correo temporal conocidos
  • Reduce envíos falsos
  • Opcional (puede ser demasiado agresivo)

Ventajas:

  • ✓ Reduce envíos falsos
  • ✓ Mejora la entregabilidad
  • ✓ Mensajes de error claros para el usuario
  • ✓ Validación rápida

Experiencia de usuario:
Mensaje de error útil si el correo no es válido:

"Please enter a valid email address (e.g., name@example.com)"

Eficacia: Reduce entre el 50 y el 70 % de los envíos no válidos.

5. Filtrado de contenido

Qué es:
Detectar patrones de spam en el contenido del mensaje.

Indicadores de spam:

  • Mensajes en mayúsculas
  • Enlaces excesivos
  • URLs sospechosas
  • Frases de spam conocidas
  • Texto sin sentido
  • Caracteres repetidos

Ejemplo de reglas:

// Flag as potential spam if:
- Mensaje contains 5+ URLs
- Mensaje is all caps
- Contains "click here to claim"
- Contains "100% free money"
- Has repeated characters (aaaaaaa)

Ventajas:

  • ✓ Detecta spam sofisticado
  • ✓ Mejora con el tiempo
  • ✓ Sin falsos positivos con buenas reglas
  • ✓ Invisible para usuarios legítimos

Experiencia de usuario:

Mensaje legítimo: "I need help with billing"
→ Pasa

Spam: "CLICK HERE FREE MONEY !!!"
→ Bloqueado

Eficacia: Bloquea entre el 70 y el 80 % del spam basado en contenido.

6. Limitación por tiempo

Qué es:
Medir la rapidez con la que se rellena el formulario.

Implementación:

// Track time between page load and submission
const pageLoadTime = Date.now();

// On submission:
const fillTime = Date.now() - pageLoadTime;

// If submitted in less than 2 seconds, likely a bot
if (fillTime < 2000) {
  return reject('Submission too fast');
}

Ventajas:

  • ✓ Detecta envíos automatizados
  • ✓ Invisible para usuarios normales
  • ✓ Fácil de implementar

Precaución:

  • No pongas el umbral demasiado alto
  • Algunos usuarios rellenan rápido
  • Debe ser suave (no defensa principal)

Experiencia de usuario:
Los usuarios normales tardan 10-30 segundos en rellenar. No notan esta comprobación.

Eficacia: Bloquea entre el 50 y el 60 % de los envíos instantáneos de bots.

Configuración antispam recomendada

Configuración mínima (sitios pequeños)

Usar:

  1. Cloudflare Turnstile
  2. Validación de correo
  3. Límite de tasa básico

Configuración:

Turnstile: Enabled
Rate limit: 5 per hour
Correo electrónico validation: Formularioat + domain check

Eficacia: Más del 95 % de reducción de spam
Impacto en el usuario: Mínimo
Tiempo de configuración: 5 minutos (integrado en SupportRetriever)

Configuración equilibrada (sitios medianos)

Usar:

  1. Cloudflare Turnstile
  2. Campo honeypot
  3. Validación de correo (con detección de desechables)
  4. Límite de tasa
  5. Filtrado de contenido básico

Configuración:

Turnstile: Enabled
Honeypot: Enabled
Rate limit: 10 per hour, 50 per day
Correo electrónico validation: Full (including disposable detection)
Content filtering: Moderate

Eficacia: Más del 99 % de reducción de spam
Impacto en el usuario: Muy bajo
Tiempo de configuración: 10 minutos

Configuración agresiva (sitios con mucho tráfico)

Usar:

  1. Cloudflare Turnstile
  2. Campo honeypot
  3. Validación de correo (estricta)
  4. Límite de tasa (por IP y por sesión)
  5. Filtrado de contenido (estricto)
  6. Limitación por tiempo

Configuración:

Turnstile: Enabled
Honeypot: Enabled
Rate limit: 10 per hour per IP, 3 per session
Correo electrónico validation: Strict (block disposable/temporary)
Content filtering: Strict rules
Time throttling: Minimum 3 seconds

Eficacia: Más del 99,5 % de reducción de spam
Impacto en el usuario: Bajo (puede marcar ocasionalmente a usuarios avanzados)
Tiempo de configuración: 20 minutos

Solución de problemas: pico repentino de spam

Si estás recibiendo una oleada de spam

Acciones inmediatas:

1. Activar un límite de tasa más estricto

Reducir a: 3 envíos por hora por IP

2. Comprobar que Turnstile funciona

  • Verificar que el widget aparece en el formulario
  • Comprobar errores de JavaScript
  • Confirmar la validación en el backend

3. Revisar envíos recientes

  • Buscar patrones (misma IP, mismo contenido)
  • Identificar el origen si es posible

4. Filtrado agresivo temporal

- Activar bloqueo de correos desechables
- Añadir reglas de contenido más estrictas
- Bajar el umbral de tiempo

5. Bloquear IPs concretas (si hay ataque dirigido)

  • Identificar las IPs atacantes
  • Añadir a la lista de bloqueo
  • Monitorizar nuevas IPs

Respuesta a largo plazo

Investigar el origen:

  • ¿Se filtró la dirección de correo?
  • ¿Se compartió un enlace en algún sitio?
  • ¿Están atacando la URL del formulario?

Reforzar defensas:

  • Mantener configuración agresiva temporalmente
  • Monitorizar la reducción de spam
  • Relajar la configuración poco a poco cuando se calme

Seguir métricas:

  • Envíos de spam al día
  • Envíos legítimos (no bloquearlos)
  • Tasa de falsos positivos

Cómo ayuda SupportRetriever

Protección integrada

SupportRetriever incluye:

Cloudflare Turnstile

  • Activado por defecto
  • Invisible para la mayoría de usuarios
  • Muy eficaz

Límite de tasa

  • Limitación automática por IP
  • Previene avalanchas
  • Umbrales configurables

Validación de correo

  • Comprobación de formato
  • Verificación de dominio
  • Mensajes de error claros

Campos honeypot

  • Invisibles para los usuarios
  • Detectan bots básicos

Análisis de contenido

  • Detección de patrones
  • Puntuación de spam
  • Mejora con el tiempo

Qué puedes configurar

En Ajustes:

  • Umbrales de límite de tasa
  • Bloqueo de correos desechables (on/off)
  • Nivel de filtrado de contenido
  • Dominios permitidos/bloqueados

Monitorización

Ver en el panel:

  • Intentos de spam bloqueados
  • Eficacia de la protección
  • Tasa de falsos positivos (si la hay)
  • Patrones de ataque

Buenas prácticas

Qué hacer

Empieza con protección mínima

  • Añade más si hace falta
  • No te pases de ingeniería

Monitoriza los falsos positivos

  • Revisa los envíos bloqueados
  • Ajusta si se bloquean usuarios legítimos

Prueba tu propio formulario

  • Envía mensajes de prueba
  • Verifica que la protección funciona
  • Asegura una buena experiencia de usuario

Mantén la protección invisible

  • No añadas CAPTCHAs evidentes
  • Deja que Turnstile trabaje en silencio
  • Mantén una buena UX

Sigue métricas

  • Tasa de bloqueo de spam
  • Tasa de envíos legítimos
  • Tasa de finalización del formulario

Qué no hacer

No uses CAPTCHAs difíciles

  • Daña las tasas de conversión
  • Mala accesibilidad
  • Frustra a los usuarios

No pongas límites de tasa demasiado bajos

  • Puede bloquear a usuarios legítimos
  • Sobre todo en IPs compartidas (oficinas)

No bloquees todos los correos desechables

  • Algunos usuarios legítimos los usan
  • Puede reducir envíos de quienes priorizan privacidad

No ignores los falsos positivos

  • Monitoriza los envíos bloqueados
  • Ajusta las reglas si hace falta

No dependas de una sola técnica

  • Combina varias protecciones
  • Ninguna técnica es perfecta

Comparación de eficacia

Técnica Reducción de spam Impacto usuario Accesibilidad Tiempo config.
CAPTCHA difícil 90 % Alto (malo) Pobre 10 min
Turnstile 95-99 % Muy bajo Excelente 5 min
Honeypot 60-70 % Ninguno Perfecta 5 min
Límite de tasa 80-90 % Ninguno Perfecta 10 min
Validación correo 50-70 % Bajo Buena 10 min
Filtrado contenido 70-80 % Bajo Buena 15 min
Enfoque combinado 99 %+ Bajo Excelente 15 min

Ganador: El enfoque combinado (Turnstile + ayudas) ofrece la mejor protección con el menor impacto para el usuario.

Temas relacionados

¿Listo para simplificar tu soporte?
Únete a miles que usan SupportRetriever para gestionar conversaciones con clientes.
Probar gratis

Explorar más

Ver todos los artículos