吵吵   2011-08-12  阅读:3,583

  前段时间每天九点左右会有莫名的39条评论出现,都是英文的,而且每个都加上了两个以上的连接。毫无疑问,这是完全的机器人群发的,没想到我这个小博还引来老外这么恶心的seo。一边赞叹他用心良苦,一边郁闷我删的手疼。

  其实我这个是加入过一个验证的,为了让我们的评论者不用那么麻烦输入我们的验证码,我直接加入了一个隐藏的input,在wp-comments-post.php中对这个值进行了验证,如果存在即判断为非机器人所发。刚开始的时候,这个效果是非常不错的,很多无聊或者加了连接的评论都被过滤掉了。从39条垃圾评论来看,评论机器人的代码有了进化,他会去获取那个页面的代码,然后分析出里面的所有的input,并在post时候一并发送过去,那么,我们的评论验证隐藏input就失效了。

  难道非要改点代码,搞个动态图片神马的么,或者用session变量?仔细想来用不着这么费力,评论机器人一般都是多线程加socket写的,获取的页面只是我们的源码,却不能解析或者执行js。当然,牛人可能会搞个js解析引擎出来,不过这个貌似代价太大了。基于这点原因,我们可以用js来改变一下我们的隐藏input的值,那么即是人家的评论机器人它获取到页面的input值时候它只会直接提交,可惜这个时候如果在流浪器中js会改变这个值再提交。评论机器人发的没有用了。
要实现这个代码非常简单:
1、找到主题的comments.php在form表单中加入



2、加入js代码

function SunbmitCommentForm(){
var commentText=document.getElementById('comment').value;
while(commentText.indexOf("")+1;
var t=commentText.substring(s, e);
commentText=commentText.replace(t,"");
commentText=commentText.replace("","");
}
document.getElementById('check').value=(parseInt(document.getElementById('check').value)*2)/3;
document.getElementById('comment').value=commentText;
return true;
}

当然,别忘了在form中加入onsubmit=”SunbmitCommentForm()”,上面那个代码还包括了清楚两节的。
3、找到wp-comments-post.php加入验证代码:

if(!isset($_POST['check']))
{
wp_die( '未填写验证码!');
}
else{
if($_POST['check']!=10)
{
wp_die( __('验证码输入错误!') );
}

}

好了,机器人评论你该死绝了,我总不相信你能根据每个博客不同去改吧,那么大规模评论还有什么意义呢,软件也失去了本来的便捷。当然,如果你是打开浏览器慢慢写,很多评论哪怕是垃圾我也尊重你的劳动的。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

13条回应:“再战wp的评论机器人”

  1. 囧汉博客说道:

    前段时间我也遇到过, 把我逼急了 我把留言模块给去掉了,现在好了!真有这么无聊的人,气人呐

  2. 流氓兔足迹说道:

    我的程序有防垃圾插件!也很给力!

  3. 这些人真他妈的讨厌

  4. 广州SEO说道:

    这种垃圾评论很难管制,尤其是对WP来说。阿修罗更新文章喽,快来瞧瞧吧!

  5. 努努说道:

    加了小墙什么都不怕了

  6. 于泽鹏说道:

    我屏蔽了所有带www 和 com cn 留言

  7. 残风追月说道:

    我目前的小站也有几百条英文的垃圾评论,不过在WP后台设置后,那个Akismet的拦截效果还是挺不错的,就是有时候会拦错。

  8. ixwebhosting说道:

    感觉这个未必有用吧!你索性直接设置留言中不能有链接不就行了?

  9. feifei435说道:

    感谢分享

  10. 过客说道:

    其实这些评论大部分都是国内做外贸的人发的,呵呵。

发表评论

电子邮件地址不会被公开。 必填项已用*标注