Avisos
Vaciar todo

Recaptcha y Cloudflare no impiden que se registren correos spam

16 Respuestas
3 Usuarios
0 Reactions
36 Visitas
Respuestas: 2647
Famed Member
Topic starter
 

Buenos días, por limitaciones de Recaptcha gratuito en su última actualización, optamos por instalar el plugin de Cloudflare en la página de registro y en los formularios. Sin embargo, algo falla porque se siguen registrando o consultando e-mails de spam con direcciones que no existen y a los cuales el sistema no puede enviar respuesta. Nos aparecen notificaciones del tipo:

Delivery Status Notification (Failure)

No se ha encontrado la dirección
Tu mensaje no se ha entregado a oxxxxxxx8@mail.ru porque no se ha encontrado la dirección o esta no puede recibir correo.

Saludos y gracias por la ayuda

Contenido solo visible a usuarios registrados


 
Respondido : 05/11/2025 6:43 am
Tags del tema
Pepe
 Pepe
Respuestas: 41476
Illustrious Member Admin
 

Hola Alceste

El código que te pase es PHP y estaría bien según lo que comentas.

Solo entro ese correo ? los demás los paro ?

Sustituye el código anterior por el siguiente:

// Bloquear TODOS los Gmail/Hotmail spam rusos/chinos
add_filter('registration_errors', function($errors, $sanitized_login, $user_email) {

$user_email = strtolower($user_email);
$local_part = explode('@', $user_email)[0]; // parte antes del @

// 1. Más de 3 puntos en total o 2 puntos seguidos
if (substr_count($local_part, '.') >= 4 || preg_match('/\.{2,}/', $local_part)) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}

// 2. Más de 22 caracteres antes del @
if (strlen($local_part) > 22) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}

// 3. Alternancia de consonante-vocal o patrones típicos rusos
if (preg_match('/([bcdfghjklmnpqrstvwxyz][aeiouy])\2{2,}/i', $local_part) ||
preg_match('/(^[a-z]{1,3}\.){3,}/', $local_part)) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}

// 4. Palabras spam (más amplias)
$spam_words = ['love','sex','fuck','xxx','porn','hot','girl','boy','sexy','cum','dick','pussy','mail','temp','test','spam','shit','ass','cock','tits','fuck','bitch','slut','russian','mattenly','shlubely','triuko','stiff'];
foreach ($spam_words as $word) {
if (strpos($local_part, $word) !== false) {
$errors->add('spam_email', __('Correo no permitido.', 'woocommerce'));
return $errors;
}
}

return $errors;
}, 10, 3);

 

Un saludo


 
Respondido : 01/12/2025 11:44 am
Página 2 / 2