关于为什么我特么又拖了那么久神马的我就不说了,对,懒得说。直接进入正题。
前几篇里面wu1yi2fan提到自己新开的VPS被垃圾评论机器扫描到了,从此wu1yi2fan又过上了手动清空spam的生活,当然,这些spam都是被Akisment拦截了的。
然后针对这个现象wu1yi2fan提出了一个方案,那就是屏蔽那些发送垃圾评论的机器的IP。不记得的童鞋点一下这里:辣鸡评论别烦我 – VPS屏蔽IP大法
但是,spam机器那么多,这样子屏蔽是屏蔽不过来的,怎么办呢,在膜拜了大神bigfa以后,我找到了这个方法。
以下方法参考自bigfa大神。
你可能会说,为什么一个关于屏蔽垃圾评论的方法里面会扯到Ajax?这里,我们就要从spam机器的原理说起了。
一般的WordPress Spam机器都是通过直接向WordPress中负责处理评论的wp-comments-post.php来提交评论,如果wp-comments-post.php不能被访问或者是一个不存在/空文件,那么垃圾评论就不能被提交。
而这样子处理的话我们就要想办法让我们网站的评论提交的时候不通过wp-comments-post.php这个文件。而实现这个效果最好的方法就是使用Ajax通过调用WordPress自带的评论函数来提交。
开始
评论提交Ajax化
这一步参考自bigfa大神的 WordPress Ajax 评论提交 https://fatesinger.com/jquery-ajax-comments.html
第一步,就是看一下自己的网站评论是不是启用了Ajax。具体验证方法就是提交一条评论,看一下提交以后需不需要重新加载页面才能看到自己的评论。
如果你的评论系统没有Ajax化,那么你需要进入这一步。
在bigfa大神的blog页面下载文件按说明修改上传文件就好啦(我就不多说了,bigfa大神已经说的够详细了)(逃
如果你的使用的主题是基于WordPress默认主题创作的,你就只需要在function.php中引用文件即可。
禁止访问wp-comments-post.php
这一步参考自bigfa大神的 WordPress 防垃圾评论 https://fatesinger.com/78305
前面说了阻止spam机器提交评论的方法有清空wp-comments-post.php,删除wp-comments-post.php,但是这两种方法在每次更新了WordPress以后都需要重新操作,因此禁止访问wp-comments-post.php成了最佳方案。
nginx
nginx的同学需要在自己网站的配置文件中,添加以下内容:
location ^~ /wp-comments-post.php { deny all; }
接下来重启nginx即可。
你可以直接访问 你的网站/wp-comments-post.php 来确认这条规则是否生效。
没有屏蔽前:(某X友情出镜)
屏蔽访问后:
Apache
Apache的同学则需要在.htaccess文件中添加以下内容:
<Files wp-comments-post.php> Require all denied </Files>
(这里本来应该有截图,但是我都不用Apache了怎么给你们截图哇)
到这里 ,就结束啦XD