11 5563-9074
Orçamento

Protegendo seu formulário contra SPAM sem reCAPTCHA

Script - Proteger formulário contra SPAM sem reCaptcha
Publicidade

Independente do tamanho do seu site, seja ele pequeno ou grande, a grande maioria deles sofre com os mesmos problemas: SPAMs, aqueles e-mails com propaganda que são enviados automaticamente várias e várias vezes, muitas vezes no mesmo dia.

Existem diversos métodos para bloquear o envio de SPAMs como por exemplo o reCAPTCHA, o mais famoso utilizado hoje em dia, mas mesmo ele pode ser burlado pelos spambots (programa projetado para envios de SPAM), além de ser um incomodo para seu cliente quando ele quer enviar um formulário simples como de contato.

O método que mostraremos aqui é conhecido como Honeypot (pote de mel), um dos mais simples encontrados hoje em dia, que consiste em colocar um campo escondido no formulário que terá unicamente a função de verificar se o envio está sendo feito por um spambot.

Vamos pegar como exemplo o formulário abaixo:

<form id="formulario" action="">

    <input type="text" name="nome" id="nome" placeholder="Nome">

    <input type="email" name="email" id="email" placeholder="E-mail">

    <input type="text" name="telefone" id="telefone" placeholder="Telefone"> 

    <input type="text" name="assunto" id="assunto" placeholder="Assunto">

    <input type="text" name="empresa" id="empresa">

</form>

No formulário acima, o campo 'empresa' será a nossa armadilha, e para isso nós iremos esconde-lo.

Com a evolução dos spambots, muitos deles conseguem ler o html dos campos e detectar se possuem alguma configuração, principalmente 'display: none' ou 'visibility: hidden', então não é recomendado colocar um 'style' diretamente no campo.

Para evitar ao máximo que os spambots reconheçam o campo como escondido, usaremos uma técnica diferente (recomendamos que coloque essa configuração no arquivo CSS do site, para diminuir ainda mais as chances do spambot):

#empresa{
    position: absolute;
    top: -9999px;
}
Agora vem a parte mais importante: a verificação durante o envio do formulário.

Por padrão, os spambots possuem a configuração para preencher todos os campos de um formulário para aumentar a chance de que ele seja enviado, e é justamente essa função que iremos utilizar contra eles. Utilizando javascript (ou jquery), nós iremos fazer a verificação: se o campo for preenchido, então se trata de um spam, e o formulário não será enviado.
// Com jquery
$('#formulario').on('submit', function(e){

    if($('#empresa').val()){
        e.preventDefault();
        return false;
    }

});

// Com javascript puro
document.querySelector("#formulario").addEventListener("submit", function(e){
    
    if(document.getElementById('empresa').value.length !== 0){
        e.preventDefault();
    }

});

Conclusão

Esse é o mais simples dos vários métodos que existem para impedir o envio de SPAMs nos seus formulários, mas no final das contas nenhum deles é 100% a prova de falhas.
A melhor solução é combinar mais de um para que, caso um deles falhe, o outro consiga impedir os envios.
Publicidade
Autor: Arthur P. Saborido
Programador Web