Pulsa ESC para cerrar

Curso WordpressCurso Wordpress

Adiós al spam en formularios y comentarios con Cloudflare Turnstile

Los formularios de contacto llenos de ofertas falsas, los comentarios en ruso con enlaces, los registros de usuarios que nadie hizo. El spam automático es una molestia constante en WordPress, y muchas soluciones son peores que el problema: captchas que obligan a tus visitas a identificar bicicletas o que vuelven lenta la página.

Cloudflare Turnstile es una alternativa gratuita que, en la mayoría de los casos, el visitante ni siquiera nota.

Qué es y cómo funciona

Turnstile analiza señales del navegador (cómo se comporta, si ejecuta JavaScript como una persona, su historial) y decide si es humano. Casi siempre lo resuelve solo y muestra un pequeño ✓. Solo en casos dudosos pide un clic.

Ventajas frente a otros captchas:

  • Gratuito y sin límite de uso razonable.
  • No necesitas tener tu sitio en Cloudflare: funciona con cualquier hosting.
  • No usa tus datos para publicidad, a diferencia de otras opciones.
  • Liviano: casi no afecta la velocidad.

Paso 1: crear las claves

  1. Entra a tu cuenta de Cloudflare (gratuita) y ve a Turnstile.
  2. Pulsa Añadir widget, ponle un nombre y escribe tu dominio.
  3. Elige el modo Administrado (el recomendado: solo pide clic si hay dudas).
  4. Copia la clave del sitio y la clave secreta.

Paso 2: activarlo en WordPress

La forma más simple es un plugin que integre Turnstile. Hay plugins gratuitos dedicados que lo agregan con un clic en:

  • La pantalla de inicio de sesión, registro y recuperación de contraseña.
  • Los comentarios.
  • Los formularios de los plugins más usados (Contact Form 7, WPForms, Gravity Forms, Fluent Forms y otros).
  • El pago, el registro y el login de WooCommerce.

Pega las dos claves en los ajustes del plugin, marca dónde quieres activarlo y guarda.

Prueba el login antes de cerrar sesión. Abre una ventana de incógnito y comprueba que puedes entrar. Si las claves están mal, te puedes quedar afuera. Si pasa, desactiva el plugin renombrando su carpeta por FTP o con wp plugin deactivate nombre-del-plugin.

Dónde ponerlo y dónde no

Sí:

  • Login, registro y recuperación de contraseña.
  • Comentarios.
  • Formularios de contacto.
  • Pago de WooCommerce, sobre todo si has sufrido ataques de prueba de tarjetas.

Mejor no:

  • Buscadores internos: molesta a la gente y los robots se frenan mejor con límites de velocidad.
  • Páginas de «agregar al carrito»: interrumpe la compra.

Paso 3: comprueba que funciona

  • Abre el formulario en una ventana de incógnito: debe aparecer el recuadro de Turnstile con el ✓.
  • En el panel de Cloudflare → Turnstile → tu widget verás estadísticas de cuántas verificaciones se resolvieron y cuántas fallaron.
  • Después de una semana, compara la cantidad de spam en Comentarios → Spam o en los mensajes de tus formularios.

Turnstile no reemplaza a Akismet ni al filtro de spam, lo complementa. Turnstile frena a los robots automáticos; el filtro atrapa el spam que escriben personas reales. Juntos, el spam prácticamente desaparece.

Nivel pro: validar en tu propio formulario

Si tienes un formulario hecho a mano, la validación en el servidor es una petición a la API de Cloudflare:

function cwp_turnstile_valido( $token ) {
	$respuesta = wp_remote_post( 'https://challenges.cloudflare.com/turnstile/v0/siteverify', array(
		'timeout' => 10,
		'body'    => array(
			'secret'   => CWP_TURNSTILE_SECRET, // En wp-config.php
			'response' => $token,
			'remoteip' => $_SERVER['REMOTE_ADDR'] ?? '',
		),
	) );
	if ( is_wp_error( $respuesta ) ) {
		return false;
	}
	$datos = json_decode( wp_remote_retrieve_body( $respuesta ), true );
	return ! empty( $datos['success'] );
}

// Al procesar el formulario:
// if ( ! cwp_turnstile_valido( $_POST['cf-turnstile-response'] ?? '' ) ) { ... rechazar ... }

En el HTML del formulario basta con cargar el script de Turnstile y agregar <div class="cf-turnstile" data-sitekey="TU_CLAVE_DEL_SITIO"></div> antes del botón de enviar.

¿Sigues recibiendo spam con Turnstile activado? Cuéntanos en el foro en qué formulario y cómo es el spam, y vemos qué falta.