WordPress 如何应对垃圾评论?

2014-08-16 23:52:22 +08:00
 vicalloy
WordPress的垃圾评论真是泛滥成灾,每天都有超多的垃圾评论。
已经启用Akismet,垃圾评论基本上可以全部拦截掉。
但问题是主机资源比较有限,不时会收到主机商发来的issue,提示MySQL由于处理时间太长被kill掉。
各位是怎么处理垃圾评论的问题的?

PS:
估计很多朋友会建议换其他系统,这就不折腾了。用WordPress最大的好处就是省心。
3907 次点击
所在节点    问与答
25 条回复
Automan
2014-08-17 00:10:10 +08:00
我用 disqus。。
kmvan
2014-08-17 00:14:09 +08:00
一个验证码就ok了
hjc4869
2014-08-17 00:42:05 +08:00
SI CAPTCHA
yylzcom
2014-08-17 01:05:36 +08:00
我会建议你优化mysql或者换主机商
Showfom
2014-08-17 01:07:51 +08:00
我直接用多说了。。
Jat001
2014-08-17 01:14:59 +08:00
我以前写过一个很2的脚本…… https://gist.github.com/jat001/8639850
kavinyao
2014-08-17 03:07:26 +08:00
按照lz的情况还是升级VPS吧,没有两全其美的事情。
seki
2014-08-17 03:21:15 +08:00
我自己在用 Stop Spammer Registrations Plugin 以及 Captcha 两个插件,没有用 Akismet。拦截率还行,很少有漏过去的。

占用资源大不大倒是不清楚……蹭的别人的 VPS
sandtears
2014-08-17 03:24:40 +08:00
硬件升级成本又不高,升级硬件呗。
zjgood
2014-08-17 07:55:14 +08:00
@seki 楼主可能觉得akismet拦截太慢了吧,评论提交之后会卡住一会儿才显示。不知道V友你介绍的插件判断得快吗
zjgood
2014-08-17 07:56:16 +08:00
@Showfom 多说太不稳定了吧。而且巨丑。但是disqus很多人又不会用。。。
WildCat
2014-08-17 08:00:37 +08:00
@zjgood disqus有中文版,话说我认为不会用它的用户不是我的目标用户
Pete
2014-08-17 08:05:54 +08:00
不知道为啥我一直没有垃圾评论 没用插件
先禁止纯英文评论 然后ajax发表
然后就不知道为什么了。。
zjgood
2014-08-17 08:07:04 +08:00
@Pete 直接禁止中文和日文。。。我试试还有垃圾评论不
hsiayc
2014-08-17 08:15:03 +08:00
Disqus在手机浏览器上显示失败,访客评论没有邮件通知,还是原生自带最好。
jakehu
2014-08-17 09:24:10 +08:00
装个多说搞定
xenme
2014-08-17 10:33:06 +08:00
我以前每天要清理两次垃圾评论,现在基本没见过垃圾评论了:
1. 禁用纯英文的回复,直接后台加个正则匹配就好,这样基本可以拦截大部分垃圾评论
2. 后台设置过滤的关键词: http, www, .com, .net 类似
这是最简单的,做了这两个之后,基本能拦住大部分关键字,但是还是有些机器人会直接 post 或者通过 ping back、trackback 来发送垃圾评论。
然后我找到一个终极解决方法:
把评论的提交的地址从wp-comments-post.php改成wp-comments-post2.php,然后在前台的评论表单上在输入评论的内容里面做 onfocus 事件,当 focus 后,把默认的post action 改成正确的就好了。机器人的话,基本都是直接提交到原来的地址,肯定没法提交。正常人,肯定要输入,那么一定会触发 onfocus,那么肯定可以正确提交。
改完之后,加上 disable pingback/trackback,就再没有收到过垃圾评论。
-------
以上只能防机器人,要是有人专门搞你的站,那没办法。不过就我们这种访问量小的可怜的,估计没人闲得搞你。
Mihuwa
2014-08-17 10:48:36 +08:00
官网上是这样做的,也能防暴力破解后台。当然针对的是采用POST提交的方式:

# Stop spam attack logins and comments
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
RewriteCond %{HTTP_REFERER} !.*example.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
</ifModule>

如果是Nginx使用一下:

location ~* (wp-comments-posts|wp-login)\.php$ {
if ($http_referer !~ ^(http://example.com) ) {
return 405;
}
}

记得把example换成自己的域名
fox
2014-08-17 11:24:42 +08:00
用第三方评论系统,禁用系统评论。
比如disqus和多说
seki
2014-08-17 12:23:24 +08:00
@zjgood 没做过监控。我单纯就是觉得 Akismet 太麻烦才不用的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/128317

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX