wordpress屏蔽垃圾评论

大部分垃圾评论都是用自动化软件来发的,它会先GET一个页面,然后再往wp-comments-post.php文件POST内容。
例如:

"GET /archives/589.html HTTP/1.1" 200 8490
"POST /wp-comments-post.php HTTP/1.1" 302 26

垃圾评论当中80%以上都是福建莆田市IP发的,鄙视下。

1、使用插件
垃圾评论过滤:Akismet插件
wordpress评论滑动解锁:myQaptcha插件

发现效果不好,Akismet虽然能过滤垃圾评论但是阻止不了机器人提交评论,而且一来就是几百个连接,VPS负载直接飙到4点几,CPU占用率也很高,导致博客打开异常慢。上个月Akismet统计过滤了1,477,296条的垃圾评论怪不得会慢。
myQaptcha安装后没有起色,看日志里被绕过了。

2、直接屏蔽IP
网上找了一个类似功能修改下。先看下IP在日志里是第几个字段,第一个就填$1,第二个就填$2以此类推。
先从日志中过滤出IP:

awk '/wp-comments-post/ { printf $1 "\n"}' /var/log/httpd/live-in.org-access_log* | sort | uniq -d -c | awk '$1 > 10 {printf $2 "\n"}' >/tmp/iptables.txt 2>/dev/null

结果保存到/tmp/iptables.txt中。

iptables屏蔽:

awk '{system("iptables -I INPUT -s "$0" -j DROP")}' /tmp/iptables.txt
service iptables save

将/tmp/iptables.txt内的IP添加到iptables中并保存。

查看添加的内容:

iptables -n -L |less

说明:-n表示不做DNS解析

PS:如果效果不好,直接屏蔽IP段!
PS2:再次添加iptables时使用如下,先删除当前规则再添加避免重复

awk '{system("iptables -D INPUT -s "$0" -j DROP;iptables -I INPUT -s "$0" -j DROP")}' /tmp/iptables.txt
service iptables save

参考资料:
http://blog.csdn.net/windcxb/article/details/6547688
http://www.qingting.org/2012/iptables-block-ip-rule
http://www.ctohome.com/FuWuQi/0d/535.html