修改PHP脚本使WordPress拦截垃圾评论的方法示例

拦截英文垃圾评论

由于绝大多数的垃圾评论都是英文的,所以国内不少朋友在使用 Some Chinese Please 插件,它可以有效地拦截内容中不带有中文字的comment和trackback(pingback),不写入数据库中,可有效地减小spam对blog服务器的无谓使用。虽然已经 2 年多没有更新,但还是可用的。

其实还可以简化下,直接将下面的代码添加到主题的 functions.php 文件,效果与使用 Some Chinese Please 插件相同:

@Teddysun http://teddysun.com/ 经过实测反馈,Wordpress中并没有err这个函数(这个函数也许是存在于 @知更鸟 的主题里)。因此不会有提示信息出现。最好还是用wp_die函数,这样就会有提示信息。所以,上面的代码如果不生效,可以使用以下代码:

针对那些使用技术手段,比如GET、POST等方式不填写前台表单,直接读取后台程序文件的spam,只有屏蔽IP才能缓解疯狗一样的攻势,其它什么验证码、滑动解锁等等都没用。

禁止某些IP访问

可以在.htaccess文件中添加:

拦截中文垃圾评论

如果发现大量垃圾评论是中文,那么可以用写的小墙工具,理论上可以 100% 屏蔽机器人发出的 spam. 如果是自然人提交评论,小墙会在评论提交表单中加一个 hidden 变量,如果后台检测不到这个变量,则认定为 spam,可以选择需要审核,也可以直接过滤掉.

如果对方知道你用的 hidden 变量或者使用虚拟点击,就可以破掉小墙. 但是 spam 本来就是小成本和以量取胜的事情,除非与你与 spammer 结仇了,我相信人家不会那么无聊来破你小墙. 而且机器人 spam 的数量占了绝大多数,这个工具很有必要.

貌似 Willin 现在不用 WordPress 了,网站也正在维护,小墙代码我就贴在下面. 使用方法很简单,拷贝到 function.php 文件最后即可. 其中 wall 是隐藏关键字,有需要的请自行更改 (不改也可以).

//設欄位
function w_tb() {
if ( is_singular() ) {
ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#","textarea$1name=$2wall$3$4/textarea><textarea name=\"comment\" cols=\"50\" rows=\"4\" style=\"display:none\">",$input);') );
}
}

//檢查
function gate() {
( !empty($_POST['wall']) && empty($_POST['comment']) ) ? $_POST['comment'] = $_POST['wall'] : $_POST['spam_confirmed'] = 1;
}

//處理
function sink( $comment ) {
if ( !empty($_POST['spam_confirmed']) ) {
//方法一:直接擋掉,將 die(); 前面兩斜線刪除即可.
//die();
//方法二:標記為spam,留在資料庫檢查是否誤判.
//add_filter('pre_comment_approved',create_function('','return "spam";'));
/
$is_ping = in_array( $comment['comment_type'],array('pingback','trackback') );
$comment['comment_content'] = ( $is_ping ) ?
"◎ 這是 Pingback/Trackback,小牆懷疑這可能是 Spam!\n" . $comment['comment_content'] :
"[ 小牆判斷這是Spam! ]\n" . $comment['comment_content'];
/
// MG12 的處理方法
$is_ping = in_array( $comment['comment_type'],'trackback') );
if(!$is_ping) {
die();
}
}
return $comment;
}
}
new anti_spam();

计算前端处理时间

在输入框上方用 JavaScript 取一个时间戳作为全局变量,在提交表单的时候获取提交时间,两个时间相减,如果小于可能值,则视为机器人. 判断为机器人的评论你可以按小墙的方式处理,也可以不处理 (不占用服务器资源,但不能记录 spam 信息).

相对与小墙,这种方法更加可靠,但绝不是没有漏洞,只要 spammer 做个 setTimeout 延迟发布就破了.

时间戳

老掉牙的方机器人方法,很实用,但有最大的缺点: 用户体验不好. 要求访客多填一个很难观察的数字,严重打压评论者积极性. WordPress 平台有很多这类插件可以用,但我是不建议使用的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧