Vamos a ver cómo bloquear direcciones de correo y dominios spam en tu Formulario de contacto
Un problema común cuando tienes un blog de blogger y tienes Formulario de contacto es que este sea utilizado por spamers para enviar su basura.
Lo que vamos a hacer es insertar un script que hace lo siguiente:
✅ Bloquea emails de la lista y dominios si los añadiste.
✅ Cancela la petición AJAX en todos los casos bloqueados.
Sígueme
En el Panel de control de Blogger vamos a Tema
Siguiente paso Editar HTML
A partir de aquí se debe tener mucho cuidado, pues un error puede hacer que nuestra página no cargue.
Daremos clic en el centro de la ventana y pulsaremos las teclas CTRL + F y escribiremos </body> para que nos lleve a su ubicación
Justo antes de </body> pegaremos el siguiente script
<script type='text/javascript'>
//<![CDATA[
(function () {
// === LISTA DE EMAILS BLOQUEADOS ===
var listaBloqueados = [
"correo1@ejemplo.com",
"correo2@ejemplo.com"
];
// === OPCIONAL: DOMINIOS BLOQUEADOS ===
var dominiosBloqueados = [
"spam.com",
"mailtest.com"
];
function emailBloqueado(email) {
if (!email) return false;
email = email.toLowerCase().trim();
// Bloqueo por email exacto
for (var i = 0; i < listaBloqueados.length; i++) {
if (email === listaBloqueados[i].toLowerCase()) return true;
}
// Bloqueo por dominio
var parts = email.split("@");
if (parts.length === 2) {
var dominio = parts[1];
for (var j = 0; j < dominiosBloqueados.length; j++) {
if (dominio === dominiosBloqueados[j].toLowerCase()) return true;
}
}
return false;
}
// === FUNCION PARA LIMPIAR MENSAJE DE ESTADO ===
function resetEstado() {
var status = document.querySelector(".contact-form-status-message");
if (status) {
status.innerHTML = "";
status.style.display = "none";
}
// Restaurar botón
var btn = document.querySelector(".contact-form-button");
if (btn) {
btn.disabled = false;
btn.classList.remove("disabled");
}
}
// === INTERCEPTAR CLICK EN EL BOTÓN ===
document.addEventListener("click", function(e) {
var btn = e.target;
if (!btn.classList || !btn.classList.contains("contact-form-button")) return;
var emailInput = document.querySelector("input[type='email']");
if (!emailInput) return;
var email = emailInput.value;
if (emailBloqueado(email)) {
e.preventDefault();
e.stopImmediatePropagation();
// Restaurar estados inmediatamente y varias veces
setTimeout(resetEstado, 0);
setTimeout(resetEstado, 20);
setTimeout(resetEstado, 50);
console.log("ENVÍO BLOQUEADO:", email);
return false;
}
}, true); // fase de captura
// === BLOQUEO REAL DE LA PETICIÓN AJAX ===
var sendOriginal = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data) {
try {
if (typeof data === "string" && data.indexOf("email=") !== -1) {
var params = data.split("&");
for (var i = 0; i < params.length; i++) {
if (params[i].indexOf("email=") === 0) {
var email = decodeURIComponent(params[i].substring(6));
if (emailBloqueado(email)) {
// Reset del estado visual
setTimeout(resetEstado, 0);
setTimeout(resetEstado, 50);
return; // cancelar envío
}
}
}
}
} catch (e) {}
return sendOriginal.apply(this, arguments);
};
})();
//]]>
</script>
//<![CDATA[
(function () {
// === LISTA DE EMAILS BLOQUEADOS ===
var listaBloqueados = [
"correo1@ejemplo.com",
"correo2@ejemplo.com"
];
// === OPCIONAL: DOMINIOS BLOQUEADOS ===
var dominiosBloqueados = [
"spam.com",
"mailtest.com"
];
function emailBloqueado(email) {
if (!email) return false;
email = email.toLowerCase().trim();
// Bloqueo por email exacto
for (var i = 0; i < listaBloqueados.length; i++) {
if (email === listaBloqueados[i].toLowerCase()) return true;
}
// Bloqueo por dominio
var parts = email.split("@");
if (parts.length === 2) {
var dominio = parts[1];
for (var j = 0; j < dominiosBloqueados.length; j++) {
if (dominio === dominiosBloqueados[j].toLowerCase()) return true;
}
}
return false;
}
// === FUNCION PARA LIMPIAR MENSAJE DE ESTADO ===
function resetEstado() {
var status = document.querySelector(".contact-form-status-message");
if (status) {
status.innerHTML = "";
status.style.display = "none";
}
// Restaurar botón
var btn = document.querySelector(".contact-form-button");
if (btn) {
btn.disabled = false;
btn.classList.remove("disabled");
}
}
// === INTERCEPTAR CLICK EN EL BOTÓN ===
document.addEventListener("click", function(e) {
var btn = e.target;
if (!btn.classList || !btn.classList.contains("contact-form-button")) return;
var emailInput = document.querySelector("input[type='email']");
if (!emailInput) return;
var email = emailInput.value;
if (emailBloqueado(email)) {
e.preventDefault();
e.stopImmediatePropagation();
// Restaurar estados inmediatamente y varias veces
setTimeout(resetEstado, 0);
setTimeout(resetEstado, 20);
setTimeout(resetEstado, 50);
console.log("ENVÍO BLOQUEADO:", email);
return false;
}
}, true); // fase de captura
// === BLOQUEO REAL DE LA PETICIÓN AJAX ===
var sendOriginal = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data) {
try {
if (typeof data === "string" && data.indexOf("email=") !== -1) {
var params = data.split("&");
for (var i = 0; i < params.length; i++) {
if (params[i].indexOf("email=") === 0) {
var email = decodeURIComponent(params[i].substring(6));
if (emailBloqueado(email)) {
// Reset del estado visual
setTimeout(resetEstado, 0);
setTimeout(resetEstado, 50);
return; // cancelar envío
}
}
}
}
} catch (e) {}
return sendOriginal.apply(this, arguments);
};
})();
//]]>
</script>
Lo que vemos marcado en verde son las direcciones de correo y los dominios spam que queremos bloquear, modificar ese apartado y listo
Y para asegurarnos que todo está bien construido y acorde a nuestra plantilla antes de guardar cambios clicaremos en Vista previa del Tema
Si todo está bien y no hay ningún error HTML ya podemos Guardar los cambios
Y comprobaremos que si escribimos en el Formulario de contacto la dirección de correo que hemos bloqueado, escribimos mensaje y clicamos en Enviar, el botón se quedará en bucle en "Enviando" y el correo no se enviará a nuestra bandeja.
Cabe añadir que este código no va a funcionar en todas las plantillas de blogger, siempre dependerá de la clase especifica, esta en concreto es .contact-form-button, si la vuestra es otra clase, sólo sería modificarla en el código y ya debería funcionar.
Cómo siempre espero que este Tutorial os sea de utilidad y si es así compartirlo en vuestras redes sociales.









0 Comentarios
Comentar nos ayuda a crecer y además preguntar incrementa nuestro saber.