登陆
浏览模式: 标准 | 列表 Tag: spam

Sablog-X防范垃圾广告只需简单设置

其实现在很少发现有Sablog-X的用户反映有广告信息,因为系统默认已经开启spam机制,而且内置了很多垃圾广告、国家禁止内容、政治人物名字的垃圾关键词,因此一般情况是不会出现这类垃圾信息了。

但是我偶尔也会收到一些垃圾信息,会包含很多网址来宣传产品的。其实只要再设置两个地方,就会过滤掉更多的垃圾广告信息。

因为Sablog-X的评论是不支持UBB代码和HTML代码,因此在系统设置中的“垃圾词语特征”处加入“,[url,<a href”就可以过滤掉很多那些垃圾广告。然后再把“评论中允许出现的链接次数”设置为1或者2,那可以过滤的东西又更多了。

个人认为,其实Sablog-X的防御垃圾信息做得挺不错的。关键看怎么设置。

Tags: 垃圾, spam, 广告

如果Trackback只有一天有效

如果朋友的文章写了有几天了。我才看到。想发个trackback过去,怎么办呢?发不了?

我看到很多BLOG都是1天Trackback就失效。那还开这个功能做什么啊??

Tags: 垃圾, spam, trackback

恍然大悟,原来统计不准是这个原因

我曾经郁闷了几天。为什么检查这么严格的统计。每天会有这么大的访问量呢?而在本机无论怎么刷新都不涨呢?

今天在清理的1W多条Trackback spam的时候,想是不是要搞个黑名单了?每天都有几千上万的Trackback Spam,过滤了95%以上。但是还是有几百条显示了。

但是一看IP。都是不一样的。我突然想到。trackback.php文件调用了include/common.php这个核心文件。而统计的过程就是在这个核心文件里。假设IP都不一样。那发过来多少trackback,计数器就会加多少,所以大家每天看我的访问量,就知道我收到多少Trackback Spam了,这样的话,如果在统计操作的过程中,加入判断,如果是来自trackback.php文件访问的。那就不加总访问量和当日访问量。毕竟是非人工访问,那就肯定精确多了。

Tags: 统计, spam, 垃圾, trackbacks

防垃圾实战!哈哈

我公开了SaBlog-X的Trackbak防范spam机制以后,经过我再次改良,再次又证明此套方案的优秀性!哈哈。炫耀一下。

只收了一条。其他全部拦截!不管IP是不是一样。用代理还是分布式都全部拿下。哈哈。

图片附件:
tbspam.gif

大小: 44.12 K
尺寸: 500 x 463
浏览: 1026 次
点击打开新窗口浏览全图

Tags: trackback, spam

Sablog-X采用的Trackback Spam防范机制

我这个模板是适合800分辨率的。所以看代码可能来这里看比较直观一点。
http://www.4ngel.net/blog/angel/archives/?article-118.html

目前来说,防范trackback垃圾已经迫在眉睫,因为到现在为止。很多BLOG只做了一些评论的过滤,要防范评论垃圾信息很简单,但是防范Trackback spam却不能象评论那样,因为Trackback来自其他的BLOG,所以很多内容都是不可以确定的,比如按照其他链接出现次数,和垃圾词汇进行过滤,是不可能的,不然我收集一些网站,或者是骂点人。都有可能不能通过别人的BLOG检查。所以我根据Trackback Spam的特征,想出了一套比较可行的办法。采用分数制度,给接收来的Trackback数据,进行评分操作。最后决定数据处理办法。懒得组织语言说了。贴出我和BO-BLOG作者BOB的部分聊天记录。

用户:所有分组(QQ好友)

==================================================
消息组:我的好友(92)
==================================================
消息类型:聊天记录
==================================================

--------------------------------------------------
消息对象:Bob(22112197)
--------------------------------------------------
2006-04-10 15:22:51 Small!A
在?
 
2006-04-10 15:23:17 Small!A
我想到一个比较有意思的防范track的办法。讨论一下。  

2006-04-10 20:22:24 Bob
什么好主意啊?

2006-04-10 20:23:57 Bob
说来听听呀

2006-04-10 20:24:45 Small!A
我不知道。只是有一个打分数的想法。

2006-04-10 20:24:52 Small!A
不知道有用不。

2006-04-10 20:24:29 Bob
嗯,打分法

2006-04-10 20:24:41 Bob
不过怎么操作呢

2006-04-10 20:25:37 Bob
好像很高深呀...


2006-04-10 20:28:51 Small!A
定义一个初始分数。
我是这样来的。
$point = 0;
发送完整的trackback里面不是有url吗?
直接读取这个url的源代码进行分析。读取失败。减1分。
如果可以在原代码里找到提交url。加一分。
找到标题加一分,找到摘要加一分,就是通过对比。
综合起来的分数。可能是负的,可能是正的。

如果是负的。就表示是垃圾。

2006-04-10 20:29:09 Small!A
具体我在实验。不知道有效果不。。

2006-04-10 20:29:15 Bob
不错的思路3481D2

2006-04-10 20:29:34 Bob
关键词可以考虑进去否?

2006-04-10 20:29:46 Bob
我今天在地铁上冒出来一个想法

2006-04-10 20:31:10 Small!A
还有可以设置过滤强度。比如计算结果是0。则表示基本正常。大于零,正常。如果-1。我表示为弱。设置为隐藏。到后台审核。如果得到-2甚至更少的分数。就表示在我设置的强

度过滤范围内。就直接不予处理。

2006-04-10 20:32:23 Small!A
我想过了。关键词和HTTP出现次数。都不行。不同于评论。不能用评论的办法。我发的文章。刚巧你禁止内容内的某个词。或者我是推荐一些好网站。超过你设置的HTTP次数。那

不是没办法PING你?

2006-04-10 20:32:20 Bob
我今天想到一个。。。可以建立一个trackback回访制度。

2006-04-10 20:32:29 Bob
让我整理一下思路。。。

2006-04-10 20:33:11 Small!A
好的。等你组织语言。呵呵。

2006-04-10 20:35:04 Bob
比如,A发送给B一个trackback,B在检查之后发现A是来自从来没有发送过trackback给他的一个地址。于是,A的TB暂时不显示。B的管理员通过A的tb之后,B自动向A发送一个确认

密码串。今后A再次向B发送TB时,自动附上这个密码串。B验证这个密码的正确性,再检查A是否在曾经允许过的列表内。两者都正确后即刻显示。。。

2006-04-10 20:35:39 Bob
[表情]有点bt的想法

2006-04-10 20:37:59 Small!A
这个相当于几次握手了?我感觉不是很舒服。是我不会再给你发了。
我的看法是在我们这边单方面处理。如果双方都要处理的话。你没办法确定对方的BLOG系统跟你是否统一标准。涉及到处理我估计会麻烦不少。。。

2006-04-10 20:38:04 Bob
嗯,麻烦就在于要在现有的标准上

2006-04-10 20:38:21 Bob
而trackback的标准本来就不考虑spam

2006-04-10 20:38:50 Bob
分数这个可以试试看效果的。。。

2006-04-10 20:39:03 Bob
有没有可能建立一套分数的评分规范。。。

2006-04-10 20:39:47 Small!A
所以我想先试试我的想法是否可行。

2006-04-10 20:39:23 Bob
尽量为越来越多的程序采用

2006-04-10 20:40:16 Small!A
不知道。所以我如果可以有效防范。我们再谈谈如何统一吧。。

2006-04-10 20:40:22 Bob
有没有测试的工具C7B305

2006-04-10 20:40:36 Bob
俺来发几个垃圾信息轰炸一下

2006-04-10 20:41:24 Small!A
如果能找到测试工具倒不错。我晚上先手工测试一下。

2006-04-10 21:14:19 Small!A
我给你段代码。你==

2006-04-10 21:13:58 Bob
hao〕

2006-04-10 21:17:00 Small!A
放你的WEB上。给我地址。

2006-04-10 21:17:13 Small!A
然后我发送TRACK看看。分数是多少。

2006-04-10 21:27:12 Small!A
1分。

2006-04-10 21:26:42 Bob
正常了

2006-04-10 21:27:27 Small!A
恩。我是这样想的。如果是软件发送。。

2006-04-10 21:27:35 Small!A
我组织一下语言。。==

2006-04-10 21:27:37 Small!A
哈哈

2006-04-10 21:27:12 Bob
嘿嘿,我把发送时候的标题改掉

2006-04-10 21:27:18 Bob
让他找不到

2006-04-10 21:28:18 Bob
$point:0 [:D]

2006-04-10 21:31:26 Small!A
如果他是软件发送。那么他就只有一个地址
他要发送的话。必须提供
$articleid
$title
$excerpt
$url
$blog_name

这5个必须的。对吧?

我们的tb.php文件。就去抓取他的url的内容。看看内容里是不是包含了他提交的title等这些数据。如果包含。则说明他可能是正常发送。

也就是说。他要正常发送。就要提供正确的数据。只要正确的数据。才加分。否则减分。分数过低。直接CUT掉!

2006-04-10 21:31:21 Bob
我懂了

2006-04-10 21:32:08 Small!A
即使他伪造,也要伪造出正确并且实际存在的。能访问到的。

2006-04-10 21:31:36 Bob
他为了伪造发送,必须提供一个可以访问

2006-04-10 21:31:38 Bob

2006-04-10 21:32:15 Small!A
恩。

2006-04-10 21:32:22 Small!A
我的思路就是这样。你有没有更好的办法?

2006-04-10 21:32:01 Bob
暂时没有

2006-04-10 21:32:39 Small!A
当然我想仅仅这些判断。估计不够。还多想一点。

2006-04-10 21:32:44 Small!A
你认为这个办法可行不?

2006-04-10 21:32:12 Bob
不过如果他的地址的确能访问呢?

2006-04-10 21:32:25 Bob
这好像就是他发spam的目的啊

2006-04-10 21:33:09 Bob
不过,效果肯定会有的

2006-04-10 21:34:20 Small!A
所以我们在后台设置一个防范强度。
[图片]
分数在某个范围属于强?某个范围输入弱。可以根据判断是隐藏该引用。还是直接不处理该引用。

2006-04-10 21:35:37 Bob
good

2006-04-10 21:36:13 Small!A
可以根据范围判断是隐藏该引用。还是直接不处理该引用。 分数特别低或者最低。就可以不处理了。这个范围就是防范等级咯。

2006-04-10 21:36:08 Bob
改天我要把trackback部分重写一下。现在我的tb没有隐藏这个熟悉

2006-04-10 21:36:12 Bob
属性

2006-04-10 21:37:00 Small!A
我的也没有。要加字段了。呵呵。

2006-04-10 21:36:41 Bob
我的倒不必

2006-04-10 21:36:55 Bob
本来就和评论共用了一个表

2006-04-10 21:37:29 Small!A
你通过什么判断属性?

2006-04-10 21:37:56 Small!A
哦。明白。加个type判断是什么对吧?

2006-04-10 21:37:31 Bob
0= 公开评论 1=隐藏评论 2=垃圾嫌疑的公开评论 3=垃圾嫌疑隐藏评论 4=tb

2006-04-10 21:37:44 Bob
看来要用到 5

相信大家看了应该都知道是怎么防御这个Trackback Spam了。具体代码是怎么实现的呢?下面就是目前sablog-x所使用的代码:

// 检查Spam

// 定义发送来的此条Trackback初始分数

$point 0;

$options['tb_spam_level'] = in_array($options['tb_spam_level'], array('strong''weak''never')) ? $options['tb_spam_level'] : 'weak';

if (
$options['audit_trackback']) {

     
//如果人工审核

     
$visible '0';

} elseif (
$options['tb_spam_level'] != 'never') {

     
$source_content '';

     if (!empty(
$url)) {

          
$source_content fopen_url($url);

          
$this_server str_replace(array('www.''http://'), ''$_SERVER['HTTP_HOST']);

          
//获取接受来的url原代码和本服务器的hostname

     
}

     if (empty(
$source_content)) {

          
//没有获得原代码就-1分

          
$point -= 1;

     } else {

          if (
strpos(strtolower($source_content), strtolower($this_server)) !== FALSE) {

               
//对比链接,如果原代码中包含本站的hostname就+1分,这个未必成立

               
$point += 1;

          }

          if (
strpos(strtolower($source_content), strtolower($title)) !== FALSE) {

               
//对比标题,如果原代码中包含发送来的title就+1分,这个基本可以成立

               
$point += 1;

          }

          if (
strpos(strtolower($source_content), strtolower($excerpt)) !== FALSE) {

               
//对比内容,如果原代码中包含发送来的excerpt就+1分,这个由于标签或者其他原因,未必成立

               
$point += 1;

          }

     }

     
$interval = ($options['tb_spam_level'] == 'strong') ? '30' '60';

     
//根据防范强度设置时间间隔,强的话在30内发现有同一IP发送。弱的话就是60秒内发现有同一IP发送.

     
$query $DB->query("SELECT trackbackid FROM ".$db_prefix."trackbacks WHERE ipaddress='".getip()."' AND dateline+".$interval.">='".time()."'");

     
$tatol $DB->num_rows($query);

     
//在单位时间内发送的次数

     
if ($tatol 0) {

          
//如果发现在单位时间内同一IP发送次数大于0就扣一分,人工有这么快发送trackback的吗?

          
$point -= 1;

     }



     
$query $DB->query("SELECT trackbackid FROM ".$db_prefix."trackbacks WHERE REPLACE(LCASE(url),'www.','')='".str_replace('www.','',strtolower($url))."'");

     
$tatol $DB->num_rows($query);

     
//对比数据库中的url和接收来的

     
if ($tatol 0) {

          
//如果发现有相同,扣一分。

          
$point -= 1;

     }



     if (
$options['tb_spam_level'] == 'strong') {

          
//高强度防范

          
$query $DB->query("SELECT title,ipaddress,articleid FROM ".$db_prefix."trackbacks WHERE ipaddress='".getip()."' OR articleid='".$articleid."'");

          
//搜索数据库内发送此trackback来本站的IP和文章ID

          
while ($trackback $DB->fetch_array($query)) {

               if (
$trackback['title'] == $title && $trackback['ipaddress'] == getip()) {

                    
//如果数据库内的title和接收来的title一样,IP也一样,视为重复发送。就减1分。

                    
$point -= 1;

               }

               if (
$trackback['ipaddress'] == getip() && $trackback['articleid'] == $articleid) {

                    
//如果数据库内的articleid和接收来的articleid一样,IP也一样,视为重复发送。就减1分。

                    
$point -= 1;

               }

          }

          
// 防范强:最终分数少于1分就CUT!

          
$visible = (($point 1) ? '0' '1');

     } else {

          
// 防范弱:最终分数少于0分才CUT!

          
$visible = (($point 0) ? '0' '1');

     }

} else {

     
$visible '1';

}

// 检查Spam完毕

上次和O-BLOG作者风色提起过,可是不经常看他上QQ,目前通过大量测试。。已经证实可以起到防御的作用。希望有各位看了我的文章,可以提出自己的看法,互相交流。继续共同提高。呵呵。

要拍砖的,尽管来,没有刺激,哪有膨胀,没有压力,哪有动力,没有反馈,哪有更好?


18日中午想到的,还可以多加一条判断就是拿接收到的$url参数和数据库内的对比,如果存在了,再扣一分!

Tags: sablog-x, trackback, spam

Total:712Next ›