Brasil

19 março 2008 ~ 20 Comentários, deixe o seu »

Como implementar o sistema anti-spam Inverse Captcha no WordPress

Amigo,

Implementei um sistema anti-spam neste blog e no serviço Blog Empresa, que é um sucesso!

O Mergulhão explica muito bem o conceito.

Eu vou explicar a aplicação para o WordPress em apenas dois passos:

Primeiro Passo – alterar o html do formulário de comentários

Abra o arquivo comments.php do seu tema.

Troque a linha abaixo:

<p><textarea id="comment" tabindex="4" rows="10" cols="100" name="comment"></textarea></p>

pelo código abaixo:

<p>
<textarea name="comment-valendo" id="comment-valendo" cols="100" rows="10" tabindex="4"></textarea>
<div style="display:none">
Não preencha o campo abaixo.<br />
<textarea name="comment" id="comment" cols="100" rows="10" tabindex="4"></textarea>
</div>
</p>

Segundo Passo – alterar a programação de processamento do formulário

Abra o arquivo wp-comments-post.php.

Logo após a linha:

$comment_post_ID = (int) $_POST[‘comment_post_ID’];

Insira o seguinte código:

/* Inverser Captcha */
if(!empty($_POST[‘comment’]))  {
$location = ( empty($_POST[‘redirect_to’]) ? get_permalink($comment_post_ID) : $_POST[‘redirect_to’] );
$location = apply_filters(‘comment_post_redirect’, $location, $comment);
wp_redirect($location);
exit;
}
else {
$_POST[‘comment’] = $_POST[‘comment-valendo’];
}
/* Fim do Inverse Captcha */

Pronto!

Espero que gostem da dica.

Abraços e até a próxima!

20 Respostas para “Como implementar o sistema anti-spam Inverse Captcha no WordPress”

  1. isaac calaça 25 agosto 2008 at 12:03 AM Permalink

    Tentei fazer funcionar no meu site mas fico recebendo um erro que diz que o campo de comentário está vazio. Alguma idéia?

  2. Henrique Bastos 26 agosto 2008 at 10:59 AM Permalink

    Sensacional! Vou implementar isso ainda hoje! Parabéns pela dica!

  3. Rafael Lima 27 agosto 2008 at 10:48 PM Permalink

    Isaac,

    Você colocou o código certinho no wp-comments-post.php

    Imprima o valor do $_POST para debugar usando:
    print_r($_POST);

    Abraço

  4. Daniel Ribeiro 8 outubro 2008 at 8:56 AM Permalink

    Olá, achei interessante sua técnica, tentei instalar e parece ter funcionado, o problema é que ele parou de moderar o post!

    Se tiver alguma idéia do que possa ser, agradeço a ajuda, abraços e obrigado!

  5. Rafael Lima 14 outubro 2008 at 1:39 AM Permalink

    Daniel,

    Não deveria parar, deve ser outra coisa. Só olhando o código mesmo…

    Abraço

  6. Marcio Toledo 2 dezembro 2008 at 3:29 AM Permalink

    Na minha opinião essa gambiarra acaba causando um problema, ou melhor um retrabalho constante quando você faz atualização do Wordpress. Tudo bem que difícilmente eles modificarão o arquivo “wp-comments-post.php”. Mas vai contra o manual de atualização do WP.

    Talvez não fosse melhor criar um plugin?

    Atenciosamente,
    Marcio Toledo

  7. Rafael Lima 20 dezembro 2008 at 8:50 PM Permalink

    Oi Marcio,

    Neste caso não dá pra fazer plugin, pq o Wordpress não tem hooks suficiente.

    Abraço

  8. Bruno 28 abril 2009 at 6:36 PM Permalink

    A ideia foi boa o/

    eu dei um die no arquivo de coment.. assim para os comentario de spam.. e os envio de email q tava fazendo meu blog ser bloqueado pelo servidor kaka.. vlw

  9. Guilherme 24 setembro 2009 at 2:55 PM Permalink

    Boa Tarde, gostei da ideia mas fiquei em duvida na real funcionalidade, hoje eu faço uso de um robo de tela para executar meus testes via browser, esse robo completa nos campos que eu pre defini os valores que eu passo a ele, como eu não capturo e exploro todos os campos a validação passaria, em outras palavras o robo preenche exatamente os campos que a ação humana preencheria, qlq coisa me envie um e-mail

    vlw a iniciativa.

  10. Guilherme 25 setembro 2009 at 10:01 PM Permalink

    Acho que não me expliquei bem, hoje faço uso de um robo de tela para a execução de testes, esse robo me permite executar ações automaticas que um usuario realizaria, o que me permite utiliza-lo como “spam”(ñ é o uso correto da palavra mas) preenchendo ,enviando formularios de maneira automatica, essa técnica não impede isso e não bane meu robo , ao meu ver no cadatro não há maneira de retirar o captcha, no acesso a conta podemos usar uma abordagem similar ao google , na primeira tentativa de login , não pede-se o captcha , se ele errar ai sim envio um captcha, deu pra entender??!?! qlq duvida respondo por e-mail

  11. Rafael Lima 27 setembro 2009 at 9:47 AM Permalink

    Guilherme,

    Realmente não bane neste caso. Mas para ser efetivo o cara teria que fazer um robô específico para o seu site.

    O inverse captcha serve para banir as programações automátias para Wordpress.

  12. Marcos Martins 28 outubro 2009 at 3:20 PM Permalink

    Infelizmente… pra mim não funcionou.
    Implementei conforme as dicas do passo a passo, que até por sinal achei bem simples de fazer. Tentei usar também o codigo Captcha com imagem que explicava em outro blog… tbém não funcionou! Vou tentar achar outro jeito, ou se alguém tiver alguma dica, eu agradeço!

  13. Marcos Martins 28 outubro 2009 at 3:27 PM Permalink

    Olá Rafael,
    Aliás, o ERRO que aparece é o mesmo do comentário do Isaac Calaça no topo deste post: ( erro que diz que o campo de comentário está vazio).
    Onde exatamente posso inserir este codigo “print_r($_POST);” ?

  14. Rafael Lima 28 outubro 2009 at 9:01 PM Permalink

    Marcos,

    Logo no início do arquivo, isso serve pra debugar e ver se os parâmetros estão vindo conforme esperado na requisição.

    Abraço

  15. Eder 11 agosto 2010 at 10:14 AM Permalink

    muito bom!

  16. Thiago 25 outubro 2010 at 7:55 AM Permalink

    Rafael, vou fazer essa dica que você deu!
    Agora, te perguntar uma coisa.
    Tenho sofrido com tentativas de cadastros incessantes.
    E os mesmos não estão sendo feitos de forma de usuário.
    Eu sempre consigo barrar, porque como os nomes geralmente são estranhos, eu tenho um plugin no WP que antes de deixar usar o login eu tenho de aprovar o mesmo.

    Queria saber como fazer este processo que você explicou, só que não parte de cadastro de usuários.
    Pra amenizar um pouco da qtde de tentativas de cadastros sem intuito!

  17. Rafael Lima 25 outubro 2010 at 9:48 PM Permalink

    Thiago,

    Nenhuma dica instantânea, tem que programar mesmo.

    Abraço

  18. Carlos Freitas 16 dezembro 2010 at 10:28 AM Permalink

    Thiago, este plugin pode te ajudar:
    http://wordpress.org/extend/plugins/si-captcha-for-wordpress/

  19. juvenal 27 janeiro 2011 (1 semanas atrás) at 10:47 AM Permalink

    asdasd