Actualmente tengo una secuencia de comandos para bloquear direcciones de correo electrónico no comerciales en el formulario de mi sitio web (Marketo), pero los bots aún encuentran la manera de evitarlo. Hoy recibí otro envío de "gmail" y "hotmail.fr". Cada vez que pruebo mi formulario, funciona, pero los bots están encontrando una manera de eludir el script. También he probado el método honeypot pero no ha funcionado. También se envían con nombres de dos letras, el último mes ha sido realmente malo y estoy desesperado por recibir ayuda, no soy muy bueno en JS, por lo que cualquier ayuda sería muy apreciada.
Este es mi guion:
(function (){ // Please include the email domains you would like to block in this list var invalidDomains = ["@gmail.","@yahoo.","@hotmail.","@live.","@aol.","@outlook.","@icloud.","@zoho.","@hubspot.","@gmx.","@yandex.","@mail.","@email.","@tutanota.","@trashmail.","@lycos.","@tutanota.","@protonmail."]; MktoForms2.whenReady(function (form){ form.onValidate(function(){ var email = form.vals().Email; if(email){ if(!isEmailGood(email)) { form.submitable(false); var emailElem = form.getFormElem().find("#Email"); form.showErrorMessage("Must be Business email.", emailElem); }else{ form.submitable(true); } } }); }); function isEmailGood(email) { for(var i=0; i < invalidDomains.length; i++) { var domain = invalidDomains[i]; if (email.indexOf(domain) != -1) { return false; } } return true; } })(); </script>```Algunos bots cuando se ejecutan, ni siquiera ejecutan el JavaScript en la página. Simplemente toman los campos, encuentran la solicitud de publicación que envía el formulario y les envían los campos con valores predefinidos. Por lo tanto, ignorando su validación por completo.
Entonces, ahora la solución sería verificar los valores de la solicitud posterior en el backend. Algunas personas usan el hecho de que algunos bots son tontos e incluyen un campo honeypot en sus campos. Lo marcan como oculto con CSS en la interfaz, pero nuevamente, algunos bots son tontos y lo completarán de todos modos y lo enviarán en la solicitud posterior. Ahora puede hacer que su servidor lo deseche de inmediato.