Tenho uma abordagem simples para impedir spammers que é 100% eficaz, pelo menos em minha experiência, e evita o uso de reCAPTCHA e abordagens semelhantes. Passei de quase 100 spams por dia em um dos formulários html de um dos meus sites para zero nos últimos 5 anos depois de implementar essa abordagem.
Ele funciona aproveitando as vantagens dos recursos ALIAS de e-mail da maioria dos scripts de gerenciamento de formulários html (eu uso FormMail.pl), junto com um "código" de envio gráfico, que é facilmente criado no mais simples dos programas gráficos. Um desses gráficos inclui o código M19P17nH e o prompt "Digite o código à esquerda".
Este exemplo específico usa uma sequência aleatória de letras e números, mas eu tendo a usar versões não inglesas de palavras familiares aos meus visitantes (por exemplo, "pnofrtay"). Observe que o prompt para o campo do formulário é incorporado ao gráfico, em vez de aparecer no formulário. Assim, para um robô, esse campo de forma não apresenta nenhuma pista quanto ao seu propósito.
O único truque real aqui é certificar-se de que o html do formulário atribua esse código à variável "destinatário". Em seguida, em seu programa de e-mail, certifique-se de que cada código usado esteja definido como um alias de e-mail, que aponta para os endereços de e-mail que deseja usar. Como não há nenhum tipo de prompt no formulário para um robô ler e nenhum endereço de e-mail, ele não tem ideia do que colocar no campo do formulário em branco. Se não inserir nada no campo do formulário ou qualquer coisa exceto códigos aceitáveis, o envio do formulário falhará com um erro de "destinatário incorreto". Você pode usar um gráfico diferente em diferentes formas, embora não seja realmente necessário na minha experiência.
Obviamente, um ser humano pode resolver esse problema em um piscar de olhos, sem todos os problemas associados ao reCAPTCHA e esquemas semelhantes, mais elegantes. Se um spammer humano responder à falha do destinatário e programar o código da imagem no robô, você pode alterá-lo facilmente, uma vez que perceber que o robô foi codificado para responder. Em cinco anos de uso dessa abordagem, nunca recebi um spam de nenhum dos formulários nos quais o uso, nem recebi uma reclamação de qualquer usuário humano dos formulários. Tenho certeza de que isso poderia ser superado com a capacidade de OCR no robô, mas nunca vi isso acontecer em nenhum dos meus sites que usam formulários html. Também usei "armadilhas de spam" (código html oculto "venha aqui" que aponta para minhas políticas anti-spam) com bons resultados, mas elas foram apenas cerca de 90% eficazes.