Ora, apesar da situação do Blog do UBuntued estar a funcionar muito bem, pois tudo o que era spam (havia um ou outro comentários que não era considerado com spam talvez de 2 em dois meses, ou que é algo soberbo!), eu não gostava de ver aquele número gigante de comentários definidos como spam.
Não gostava de ver tantos comentários por dois motivos:
- Podia haver falsos-positivos que eu nunca os iria encontrar (e provavelmente os utilizadores não iam ficar satisfeitos por pensarem que foi culpa dos moderadores)
- A base de dados fica bastante mais congestionada por causa dessa quantidade enorme de comentários
- Diariamente o Wordpress tinha de apagar os comentários de SPAM que tinham mais de 30 dias de vida, ou seja, mais peso no servidor
Precisava portanto de uma solução mais eficaz ainda que o próprio akismet (que recomendo vivamente a utilizar!!). Pensei então em utilizar um sistema resultante de uma ideia muito inteligente que a maioria dos bots que produzem SPAM se enganavam: utilizar o plugin Invisible Defender. Basicamente este plugin punha mais uma entrada a ser preenchida aquando da escrita de comentários. Só que essa entrada estava oculta pelo CSS, fazendo com que numa situação normal nunca fosse preenchida, mas os bots, como são bots ao preencherem caíam na ratoeira. O problema é que isso teve consequências com o sistema de cache do UBuntued. Podem saber mais sobre a incompatibilidade do sistema de cache com o Invisible Defender aqui.
Como resolvi então este problema do excesso de SPAM? Veja a secção abaixo.
Como reduzir praticamente a zero o SPAM no Wordpress!
Como as soluções anteriores não estavam a ser suficientemente eficazes, lembrei-me de analisar o spam. Ora, a maioria do spam que o Ubuntued recebia tinha palavras chave muito comuns, nomeadamente palavras farmacêuticas (viagra é talvez o mais comum) e tags de foruns (por exemplo [url]).
Ora, ao ver tal coisa, sabia bem que devia arranjar uma maneira de simplesmente nem aceitar tais comentários com essas keywords. Essas palavras nunca serão ditas numa situação normal no Ubuntued e portanto eu podia simplesmente nem sequer saber dos comentários que tivessem tais conteúdos. Mas mesmo assim, eu devia avisar que o comentário não foi aceite pelo motivo real: utilização de palavras proibidas por serem usadas pelos bots.
Procurei na internet e encontrei um site que tinha precisamente a solução relativa a esse assunto:
Basicamente, este procedimento que expliquei acima resume-se a pôr o conteúdo seguinte no ficheiro functions.php da pasta do tema que estamos a utilizar no nosso blog do wordpress:
- Código: Selecionar todos
function in_comment_post_like($string, $array) {
foreach($array as $ref) { if(strstr($string, $ref)) { return true; } }
return false;
}
function drop_bad_comments() {
if (!empty($_POST['comment'])) {
$post_comment_content = $_POST['comment'];
$lower_case_comment = strtolower($_POST['comment']);
// List of banned words in comments.
// Comments with these words will be auto-deleted.
$bad_comment_content = array(
'viagra',
'hydrocodone',
'[url=http',
'[link=http',
'xanax',
'tramadol',
'lorazepam',
'adderall',
'dexadrine',
'no prescription',
'oxycontin',
'without a prescription',
'sex pics',
'family incest',
'online casinos',
'online dating',
'cialis',
'amoxicillin'
);
if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {
wp_die( __('O seu comentário não foi aceite por utilizar palavras banidas.') );
}
}
}
add_action('init', 'drop_bad_comments');
Depois disto, tive de limpar toda a cache do blog para que tivesse efeito imediato. Nos primeiros dias, fiquei assustado pois não via mesmo comentários nenhuns de SPAM. A pasta que outrora tinha sempre um valor na ordem dos milhares, agora estava constantemente no ZERO. Com o passar do tempo, vejo um ou o outro comentário de SPAM. Talvez um comentário a cada 4 dias.