Spam, como odeio isso!

25/04/07

16.657 spams bloqueados. Basta! Não dá mais. Coloquei uma espécie de CAPTCHA nos comentários (perguntinhas básicas de soma de 2 números). Desculpe-me por este incomôdo, mas apagar 300 spams por dia estava ficando totalmente inviável.

Update: Se você quer adicionar este suporte ao seu blog (Wordpress), adicione o código abaixo ao arquivo "functions.php", presente no diretório do seu tema. Caso ele não exista, crie-o.

<?php
/* author: Nando Vieira <fnando dot vieira at gmail dot com> */
function challenge_check($comment_id)
{
    global $wpdb, $user_ID, $comment_count_cache;
    
    if ($user_ID) {
        return;
    }
    
    $hash = $_POST['challenge_hash'];
    $challenge = md5($_POST['challenge']);
    $post_id = $_POST['comment_post_ID'];
    
    if ($hash != $challenge) {
        $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_ID = {$comment_id}");
        $count = $wpdb->get_var("select count(*) from $wpdb->comments where comment_post_id = {$post_id} and comment_approved = '1'");    
        $wpdb->query("update $wpdb->posts set comment_count = {$count} where ID = {$post_id}");
        wp_die(__('Sorry, but your answer is incorrect.'));
    }
}
 
function challenge_form()
{
    global $user_ID;
    
    if ($user_ID) {
        return;
    }
    
    $nums = array(rand(1,4), rand(1,4));
    $n1 = max($nums[0], $nums[1]);
    $n2 = min($nums[0], $nums[1]);
    $challenge = ($n1 + $n2);
    $hash = md5($challenge);
    
    $question = "Quanto é {$n1} + {$n2}?";
    $field = sprintf('<p><label for="challenge">%s</label> <input type="hidden" name="challenge_hash" value="%s" /> <input type="text" name="challenge" id="challenge" size="2" /></p>', $question, $hash);
    echo $field;
}
 
add_action('comment_post', 'challenge_check');
add_action('comment_form', 'challenge_form');
?>

Update: não recebi mais nenhum spam! ;)

Comentários #


#1 Roberto Soares disse:
25 Abr 07, 07:50AM

Raiz quadrada de… hum… já sei! 6. :)

#2 Aguinelo Pedroso disse:
25 Abr 07, 09:08AM

Que legal esse sistema, gostei… hehehe

#3 Danilo Cesar disse:
25 Abr 07, 12:30PM

Pois é cara, eu usava um plugin assim também mas removi.

Alguns spammers ainda conseguem burlar esse tipo de defesa…

A melhor defesa até agora tem sido o askmet… Esse sim tem funcionado.
Estava recebendo cerca de 40 spams diários, hoje não recebo mais nenhum graças a ele.

#4 Nando Vieira disse:
25 Abr 07, 01:38PM

@Danilo, mas você ainda tem que remover os spams manualmente, não? Eu uso o askimet, mas ele apenas marca os comentários como spam. Ou estou viajando?

#5 Leonardo Faria Coelho disse:
06 Maio 07, 07:46PM

O Akismet marca como Spam e você tem que deletar.

#6 Nando Vieira disse:
06 Maio 07, 10:43PM

Sabia! ;)

#7 Diego disse:
22 Maio 07, 09:55PM

Poxa, aqui nao aconteceu nada.. e ainda deu uma msg de erro ao efetuar logout.. :(

#8 Nando Vieira disse:
23 Maio 07, 12:09AM

Diego, que versão do WP você está usando? Qual o erro que apareceu?

#9 Marcelo disse:
26 Jun 07, 05:56PM

Nando,

uma pergunta usei seu codigo, e a questão aparece depois do botão submit. Pode ser que meu tema seja diferente do seu na chamada do metodo comment_post sei lá,
tem como vc me passar como fez pra ficar antes disso no seu?

Abs

#10 Nando Vieira disse:
26 Jun 07, 06:39PM

Marcelo, basta mudar de lugar a chamada para a função do_action('comment_form', $post->ID);

#11 Alenônimo disse:
01 Set 07, 11:17AM

Muito interessante. É só copiar no functions.php?

Podia fazer um plugin com isso. Não ficava melhor?

#12 Nando Vieira disse:
01 Set 07, 01:27PM

Alenônimo, dá uma olhada aqui[1] que o Flávio do japs.etc.br já fez isso com o meu código.

[1] japs.etc.br

#13 Spam e acessibilidade » Revolução Etc disse:
01 Set 07, 05:23PM

[...] solução foi implementada pelo Flávio Kaminisse à partir de uma implementação em PHP do Nando Vieira . O código original barrava trackbacks e foi corrigido pelo Flávio e transformado em plugin do [...]

#14 Como evitar SPAM de comentários com código simples e acessível... disse:
03 Set 07, 11:54AM

[...] do Wordpress, ele me disse que ele tinha implementado o código e me passou o link do artigo, Spam, como odeio isso!, que continha o código e algumas dicas para [...]

#15 Simetria disse:
04 Set 07, 10:28PM

Como evitar spam no seu blog WordPress…

Um dos maiores problemas para quem gerencia um blog, são as mensagens com spam, recebidas pelo arquivo de comentários dos blogs que utilizam o WordPress.
Quando se tem 2 ou 3 spams, é até aceitável, mas quando começa a passar dos 50 por dia, a si…

#16 Plugins Wordpress que utilizo · project.47 - Portfolio e b... disse:
17 Set 07, 09:33PM

[...] Comment's Hash - Comecei a utiliz

#17 Uebas disse:
25 Out 07, 10:05AM

No tema que estou modificando nao funciona, veja

http://www.hostip.com.br/blog

#18 CAPTCHA para Wordpress » LSDR.net disse:
29 Nov 07, 11:34PM

[...] aqui o hack do Nando para adicionar CAPTCHA ao Wordpress e se juntar ao Akismet no combate à [...]

#19 Vinicius Cruz disse:
21 Fev 08, 11:47PM

Show! Tinha implementado isso em um form de contato de um site. Só que o resultado da soma tinha que ser feito por extenso. =D

#20 iran disse:
14 Jul 08, 08:50PM

não existe outro plugin?

Deixe um comentário




Este blog usa o Gravatar.


Não é aceito código HTML:
adicione-o no pastie.caboo.se ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.