如何有效拦截和过滤垃圾评论

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

可以在.htaccess文件中添加:禁止某些IP访问。

1
2
3
Order Deny,Allow
Deny from xxx.xxx.xxx.xx
Deny from xxx.xxx.xxx.xx

有效地拦截内容中不带有中文字的comment和trackback(pingback)

1
2
3
4
5
6
7
8
9
/* refused spam */
function refused_spam_comments( $comment_data ) {
$pattern = ‘/[一-龥]/u‘;
if(!preg_match($pattern,$comment_data[‘comment_content‘])) {
wp_die(‘评论必须含中文!‘);
}
return( $comment_data );
}
add_filter(‘preprocess_comment‘,‘refused_spam_comments‘);

代码将垃圾评论拒之门外直接将下面的代码放到主题的functions.php文件的最后一个 ?>前面即可:

// 垃圾评论拦截
class anti_spam {
	function anti_spam() {
		if ( !current_user_can(‘level_0‘) ) {
			add_action(‘template_redirect‘, array($this, ‘w_tb‘), 1);
			add_action(‘init‘, array($this, ‘gate‘), 1);
			add_action(‘preprocess_comment‘, array($this, ‘sink‘), 1);
		}
	}
	function w_tb() {
		if ( is_singular() ) {
			ob_start(create_function(‘$input‘,‘return preg_replace("#textarea(.*?)name=([\"\‘])comment([\"\‘])(.+)/textarea>#",
				"textarea$1name=$2w$3$4/textarea><textarea name=\"comment\" cols=\"100%\" rows=\"4\" style=\"display:none\"></textarea>",$input);‘) );
		}
	}
	function gate() {
		if ( !empty($_POST[‘w‘]) && empty($_POST[‘comment‘]) ) {
			$_POST[‘comment‘] = $_POST[‘w‘];
		} else {
			$request = $_SERVER[‘REQUEST_URI‘];
			$referer = isset($_SERVER[‘HTTP_REFERER‘])         ? $_SERVER[‘HTTP_REFERER‘]         : ‘隐瞒‘;
			$IP      = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ‘ (透过代理)‘ : $_SERVER["REMOTE_ADDR"];
			$way     = isset($_POST[‘w‘])                      ? ‘手动操作‘                       : ‘未经评论表格‘;
			$spamcom = isset($_POST[‘comment‘])                ? $_POST[‘comment‘]                : null;
			$_POST[‘spam_confirmed‘] = "请求: ". $request. "\n来路: ". $referer. "\nIP: ". $IP. "\n方式: ". $way. "\n內容: ". $spamcom. "\n -- 记录成功 --";
		}
	}
	function sink( $comment ) {
		if ( !empty($_POST[‘spam_confirmed‘]) ) {
			if ( in_array( $comment[‘comment_type‘], array(‘pingback‘, ‘trackback‘) ) ) return $comment;
			//方法一: 直接挡掉, 將 die(); 前面两斜线刪除即可.
			die();
			//方法二: 标记为 spam, 留在资料库检查是否误判.
			//add_filter(‘pre_comment_approved‘, create_function(‘‘, ‘return "spam";‘));
			//$comment[‘comment_content‘] = "[ 小墙判断这是 Spam! ]\n". $_POST[‘spam_confirmed‘];
		}
		return $comment;
	}
}
$anti_spam = new anti_spam();
时间: 2024-10-25 03:02:25

如何有效拦截和过滤垃圾评论的相关文章

贝叶斯推断及其互联网应用(二):过滤垃圾邮件

有关贝叶斯原理的讲解, 请查看这里.这里讲述的是通过贝叶斯推断如何过滤垃圾邮件. 贝叶斯推断及其互联网应用        (接上文) 七.什么是贝叶斯过滤器?    垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户.    正确识别垃圾邮件的技术难度非常大.传统的垃圾邮件过滤方法,主要有"关键词法"和"校验码法"等.前者的过滤依据是特定的词语:后者则是计算邮件文本的效验码,再与已知的垃圾邮件进行对比.它们的识别效果都不理想,而且很容易规避.    2002年,P

wordpress非插件实现屏蔽英语、日语、俄语、韩语、阿拉伯语、泰语等外语垃圾评论!

如果您没用有我前面所说的方法屏蔽全英文,请用以下代码: // 禁止全英文和日文评论 function BYMT_comment_post( $incoming_comment ) { $pattern = '/[一-龥]/u'; $jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u'; if(!preg_match($pattern, $incoming_comment['comment_content'])) { err( "写点汉字吧,博主外语很捉急! Please write some

板邓:wordpress防止被而已刷垃圾评论的方法

我想很多使用WordPress的人都应该对的垃圾评论深恶痛绝吧,然后就开始了垃圾评论与反垃圾评论的争夺战,然后给博客安装各式各样的防垃圾评论的插件,但是往往还是防不胜防. 话说小站之前每天至少200条垃圾评论,大多都是英文的,然后安装了Some Chinese Please这个插件,评论必须有中文,否则发布不成功. 然后英文的垃圾评论没有了,全是中日英混合型的垃圾评论.留垃圾评论的系统也升级了,难以防范. 前些日子在调整主题的时候,研究了下主题的评论体系,因为主题使用是ajax提交的评论的方式,

[转] 贝叶斯推断及其互联网应用:过滤垃圾邮件

[链接] 数学的美学世界 上一次,我介绍了贝叶斯推断的原理,今天讲如何将它用于垃圾邮件过滤. ======================================== 贝叶斯推断及其互联网应用 作者:阮一峰 七.什么是贝叶斯过滤器? 垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户. 正确识别垃圾邮件的技术难度非常大.传统的垃圾邮件过滤方法,主要有"关键词法"和"校验码法"等.前者的过滤依据是特定的词语:后者则是计算邮件文本的校验码,再与已知的垃圾邮件进

贝叶斯过滤器过滤垃圾邮件

贝叶斯过滤器过滤垃圾邮件 什么是贝叶斯过滤器? 垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户. 正确识别垃圾邮件的技术难度非常大.传统的垃圾邮件过滤方法,主要有"关键词法"和"校验码法"等.前者的过滤依据是特定的词语:后者则是计算邮件文本的校验码,再与已知的垃圾邮件进行对比.它们的识别效果都不理想,而且很容易规避. 2002年,Paul Graham提出使用"贝叶斯推断"过滤垃圾邮件.他说,这样做的效果,好得不可思议.1000封垃圾邮件可

Internet网络浏览的监听、拦截和过滤-浅析GFW原理

一月 2, 2010 by Hans Adreaman 我国网络界"和"风劲吹,GFW威力无边,网民不断抱怨网站被"墙",这固然是制度.利益等政策性原因导致的,我们这里就不多言政治了,仅仅对相关技术问题探究一二. 据我所知,网络浏览的拦截无外乎下列三个方式:IP过滤.内容过滤和DNS劫持.这些过滤的前提就是浏览者"浏览"动作的相关IP报文均能被拦截者截获和分析.这一前提对于ISP来说是天然成立的. 先简单介绍一下一次浏览网页的技术流程.用户在终端

使用朴素贝叶斯分类器过滤垃圾邮件

1.从文本中构建词向量 将每个文本用python分割成单词,构建成词向量,这里首先需要一个语料库,为了简化我们直接从所给文本中抽出所有出现的单词构成一个词库. 2.利用词向量计算概率p(x|y) When we attempt to classify a document, we multiply a lot of probabilities together to get the probability that a document belongs to a given class. Thi

Struts2 拦截器过滤方法

1.struts.xml属性 excludeMethods参数指定拦截器拒绝拦截的方法列表,多个用英文逗号隔开 includeMethods参数指定拦截器需要拦截的方法列表,多个用英文逗号隔开 2.方法拦截器代码 MethodFilterInterceptor抽象类重写了AbstractInterceptor类中的Intercept()方法,还提供了doIntercept(ActionInvocation paramActionInvocation)方法 3.效果 输入地址 http://loc

springmvc3 拦截器,过滤ajax请求,判断用户登录,拦截规则设置

web.xml设置:(/拦截所有请求) <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name&