防自动注册、垃圾信息插件合集 | ||||||||||||||||||
作者 五味堂主 查看 312 发表时间 2007/3/26 19:08 【论坛浏览】 | ||||||||||||||||||
. 暴力注册在各大论坛遍地开花的同时,Discuz! 相关插件的发布和讨论也异常地活跃。开卷工作室在如火如荼的论坛清洁保卫战中,也不遗余力地贡献了自己的一份力量。在短短的几个月时间里,我们陆续发布了各种有效遏制暴力注册与发贴的论坛插件,和相应的管理指导手册。至此,可以说我们已经能够用极小的管理付出,来避免这些垃圾信息对我们论坛的侵扰。下面,我们就将这些插件与指导文章罗列如下,并附上相应的简短说明,以方便广大网友检索查找:
本文引用地址:http://MadeinCHN.cn/thread-4-15219-1-1.htm 论坛社区反广告指导手册 论坛社区反广告指导手册 . 根据2006年7月CNNIC发布的《中国互联网络发展状况统计报告》显示,43.2%的中国网民经常使用论坛/BBS/讨论组。由于受关注的程度提高了,于是论坛社区受到广告、不良信息等网络流氓行为的侵扰也就尤其地严重,甚至成为了一块污染重地。虽然完全杜绝这些网络流氓行为是不大可能的,尚且在恶意广告和不良信息的性质界定和尺度上大家也是有自己不同的标准。但我们还是能够透过一定的技术和管理手段,来有效控制网络流氓行为对论坛社区的侵扰。 下面就以著名的论坛软件 Discuz! 为例,给大家提供一些管理指导和建议(注:这些功能都能通过论坛后台进行设置,每项措施后面的星号为推荐级别,五星为最高)。 ============================================= 一、注册限制措施 注册验证码 (★★★★★) 好处:可以有效限制自动注册的现象,但要求所生成的验证码具有一定的抗软件识别能力。 不足:如果验证码的字形过于正规,某些自动注册软件还是可以通过对验证码图片的文字识别来突破这一限制的。而字形过度变形或干扰过度的验证码图片同样也会给注册者的识别带来难度。所以,一个好的注册码防范措施应该采用特殊字体,而非正规字体来生成注册码,同时加入一定的干扰元素,但要确保注册的会员能够清晰辨认并识别图片中的字形。而如果能够实现汉字生成注册码,并且对文字进行一定的不规则倾斜旋转调整,那么这样就几乎可以阻挡任何非人工注册的行为了。 邮箱验证(★★★☆☆) 好处:能够有效杜绝自动注册软件的侵扰,因为使用自动注册软件的目的就是在于迅速地大量注册 ID ,并利用这些账户 ID 来发布信息。而如果想要获得邮箱验证的通过,那就必须透过人工对论坛发送的验证邮件进行账户验证,这就给发布不良信息的人增加了时间成本,也就失去了使用自动注册软件的意义。 不足:在为自动注册设置障碍的同时,这项措施也成为了正常注册的一道门槛,由此我们必定会因为这项措施失去一小部分的潜在用户。同时,基于论坛社区所在的服务器的技术故障以及程序自身设置及故障,可能会在某一时段造成无法对注册用户发送验证邮件的现象,从而对论坛正常运作带来不利影响。 人工审核新用户注册(★★☆☆☆) 好处:基本上可以防范自动注册软件的注册,因为这些软件注册的用户名一般都是随机生成的没有任何意义的混乱字符串。 不足:不排除有些用户名也是一些看似毫无意义的字符串,同时,人工审核毕竟有一定的局限性,例如管理人员的工作量,工作时间等。由于这些局限性,可能会为论坛的正常管理带来负担,为论坛的正常运作带来不利影响。试想,当一个新会员刚注册却不能马上通过,这已经会流失一部分会员了。而如果再加上管理人员因为其它事情耽搁了审核,那样损失就会更进一步扩大。 同一邮箱限制(★★★☆☆) 好处:可以进一步限制重复注册的现象,以期获得更高的安全系数。 不足:虽然重复注册可能会被用于重复发布广告与不良信息,但论坛设区里的马甲现象也是互联网一种独特的风景与文化,杜绝了重复注册,在一定程度上会影响论坛的人气。 同一 IP 注册间隔限制(★★☆☆☆) 好处:同样可以较为有效地阻止自动注册的流氓行为,可以防范某一时段内大量的重复注册。 不足:什么事情都有其两面性,同一 IP 注册时间间隔的限制既限制了大量的重复注册,但同时也会限制正常的注册。例如在一个校园网内,一个网吧里,每台电脑均共用一个 IP 地址,这样其实也限制了这类网络用户的注册。 IP 段限制(★☆☆☆☆) 如果你的论坛是一个只面向于局域网内用户,或特定地区用户的,就可以考虑采用 IP 段限制注册或访问。这样,在所设置的 IP 段之外的访问者就无法进入你的论坛注册或者访问了,从而最大限度地避免了外部干扰。这一措施的推荐级别只有一星,指的是其适用范围只适合于特殊的极少数区域论坛,而并非因为其效果不佳。 ============================================= 二、发贴限制措施 新会员发贴时限(★★★☆☆) 好处:设置刚注册进来的新会员在一定的时限内不能发帖,这是比较有效的一个防范 AD 和不良信息的手段。因为要求一个自动注册进来的 ID 在一定的时间内回访你的论坛,这在技术上是非常难实现的一件事。即使是人工注册进来的,这样的限制也给他带来了操作上的难度。 不足:即使这项措施效果较理想,也比较多人采用。但是非常遗憾的是,自动回访似乎已经有自动注册软件可以实现了,虽然回访并发帖的成功率稍微会有所下降,且执行效率也不高,但也打破了这一措施铜墙铁壁的完美形象。同时,启用新会员发贴时限后,这对论坛正常信息交流也存在着非常不利的影响,论坛也会因此有流失少数会员的可能。 新会员发帖审核(★★★★☆) 好处:设定初始级别的新会员的发帖与回复均需要管理人员的审核,才能正式发布。这样可以有效阻止广告及不良信息的侵入,达到一夫当关万夫莫开的效果。而当会员积分达到更高级别时,便不再需要发帖审核了。 不足:与新会员注册审核一样,新帖审核同样要增加管理人员的工作负担,同样也会受到不能及时审核通过而造成的不利影响。 发贴验证码(★★☆☆☆) 好处:可以进一步限制自动发贴的可能,加入注册验证码不能阻止自动注册,那么发贴验证码或许可以成为第二道防线。因为该自动注册发帖软件不一定还具备有发帖再次进行验证码识别的功能。 不足:如果说上面的假设是一厢情愿的想法,其实也不为过。毕竟能够突破注册识别,要突破发帖验证识别就不会有什么技术障碍,那只是想不想得到的问题。同时,一个论坛在正常运作时正常发帖的比例一定是远大于发布不良信息的比例的。为了这小部分人而让大多数人改变发贴习惯,降低发帖效率,这样的代价也非常的不划算。 发帖时间间隔限制(★★★☆☆) 好处:这样能够降低自动发贴以及恶意灌水的发帖频率,毕竟正常的发帖时间间隔一般不会太短,一般两次发贴之间一分钟的时间间隔还算合理,而低于30秒钟的发帖间隔,其非法性的可能会大大增加。所以在管理人员发现这些非法发贴之前,这项措施可以有效减少这类帖子的数量。 不足:对于会员的正常发帖,特别是发布连载或系列图片时,这项限制多少还是会让人觉得不快的。因为有些人期望作品的连贯性,而在他等待时间限制的间隔里,可能就有别的会员跟帖回复了。 发帖时间段限制(★★★☆☆) 好处:设定管理人员不在线时不允许会员发不新帖,或者所发布的内容均需要管理人员审核。这样可以有效弥补论坛的管理空缺,避免不良企图与管理人员玩猫抓老鼠的游戏,从而赢得一定的信息曝光度。 不足:如果是设置在特定时间内不允许发贴,这自然可以节省系统资源,但却阻碍了论坛正常的信息交流。而不管是特定时段内禁止发帖还是审核发帖,这多少会对论坛的发展带来不利影响。因为这将不同作息时间的人群阻挡在了门外,所以如果你的论坛不仅仅是面向国内用户,那么不建议采用此项措施。 ============================================= 组合方案
信息安全为重的方案 措施:邮箱验证新会员、同一邮箱限制、新会员发帖审核、发帖时间间隔限制(1分钟)、发帖时间段限制 说明:邮箱验证新会员虽然效率低一些,但比较安全。虽然可能会失去部分会员,但如果你的论坛却是很有价值,那么你得到的新会员,将会比失去的那部分更有价值。因为越为主动的注册行为,证明了注册者对论坛的兴趣越大。而失去的那部分,可能是准备发布广告的人,以及对你的论坛没有不会有太大作用的用户。而新会员的发贴审核,将会有效阻止不良信息的出现,同时在审核新帖的过程中,如果发现发布不良信息的行为,我们还可以在后台对其进行禁止访问的处罚。要实现新会员发帖审核,首先需要对论坛里的所有公开栏目进行“发帖回复均需要审核”的设置,然后再设置论坛最低级别的普通用户组发帖回复均需审核。而更高级的所有用户组均设置为无需审核。前面设置了新会员发帖审核,那么为何后面还要设置发帖时间段限制呢?因为前面的只是针对初级会员组的限制,而发帖时间段的限制却是针对所有会员的限制。也就是说,如果设置凌晨零点至早上八点所有新帖均需要审核的话,那么论坛的所有会员(管理员组可设置为例外)在这一时段内的发帖均需要管理人员审核通过之后,才能够被所有人浏览。 论坛人气与安全并重 措施:注册验证码、新会员发帖审核、发帖时间间隔限制(30秒) 说明:注册验证码只对防范自动注册起作用,对人工注册进来发广告的人是不起作用的。所以在发贴时增加新人帖子审核,这就形成了完美组合。发现发布 AD 和不良信息者,再对其进行禁止发言的处罚。这样的措施组合对新会员注册的限制是最少的,所以不会影响论坛人气。同时对于发布广告者进行禁言,而非禁止访问的处置,也多少可以利用他们的回访,为论坛贡献点IP,呵呵。 系统资源与安全并重 措施:人工审核新用户注册、同一邮箱限制、同一 IP 注册间隔限制、新会员发帖审核、发帖时间间隔限制(1分钟)、发贴验证码、发帖时间段限制 说明:应该说这是最为严厉的限制措施了,目的在于保证论坛信息安全的前提下尽量节省论坛资源的占用。人工审核新会员,并把不符合审核条件的 ID 清除掉,同一邮箱、同一 IP 限制,都可避免大量重复注册现象。审核新会员发帖时,若发现发布广告与不良信息者,也当即删除其 ID,同时还可以考虑禁止其 IP ,以避免此人再次注册(不过现在多数人都是通过 ADSL 拨号上网,都不是固定 IP,所以禁止 IP 的用处也就不是非常大了)。 本文引用地址:http://MadeinCHN.cn/thread-38-9478-1-1.htm 前两天我们开卷工作室向大家详细介绍了 Discuz! 论坛防范广告及不良信息的管理方案(详见《论坛社区反广告指导手册》)。采取了这些防范措施之后,那些无孔不入的垃圾信息一般是不会再出现在你的论坛前台了。不过,要是真遇到大量发布广告的情况,即使论坛前台看不见这些帖子,但在后台需要审核成百上千个重复的垃圾帖子,也实在是为管理人员增添了不少麻烦。 鉴于这种情况,我们开卷工作室便又进一步跟进,专门为此而编写了一个防范重复发贴的插件。以前在 DZ 官方论坛里好像也有人发布过类似插件,印象中那个好像挺占系统资源的。其实这个功能并不复杂,同时兼顾程序效率的问题,也就可以很容易实现了,所以我们就自己写了一个。 名称:开卷工作室限制重复发贴 For Discuz! All Version 安装难度:极易 适用版本:Discuz!所有版本 作者:KaijuanStudio 技术支持:MadeinCHN.cn 发布站点:中国制造论坛 安装步骤: 核心修改 打开 include\newthread.inc.php 查找: 代码:[Copy to clipboard] if($subject == '' || $message == '') { showmessage('post_sm_isnull'); } 在后面一行添加: 代码:[Copy to clipboard]//Refuse repeated post. Code by KaijuanStudio if($repeated == 1) { $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE authorid='$discuz_uid' AND subject='$subject'"); if($db->num_rows($query)) { $repeat = $db->fetch_array($query); showmessage('post_repeated', 'index.php'); } } elseif ($repeated == 2) { $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE subject='$subject'"); if($db->num_rows($query)) { $repeat = $db->fetch_array($query); showmessage('post_repeated', 'index.php'); } } elseif ($repeated == 3) { $query = $db->query("SELECT tid, authorid, subject, message FROM {$tablepre}posts WHERE first='1' AND subject='$subject'"); if($db->num_rows($query)) { $repeat = $db->fetch_array($query); if($repeat['authorid'] == $discuz_uid) { showmessage('post_repeated', 'index.php'); } function SubString($str, $start, $len = 0xFFFFFFFF) { if($start < 0) { $start = strlen($str) + $start; } if($len < 0) { $len = strlen($str) - $start + $len; } $tmp = ''; $result = ''; $strlen = strlen($str); $begin = 0; $subLen = 0; for($i = 0; $i < $start + $len && $i < $strlen; $i++) { if($i < $start) { if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1]) >= 161 && ord($str[$i+1]) <= 254) $i++; } else { $begin=$i; for(; $i<$start+$len && $i<$strlen; $i++) { if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1])>=161 && ord($str[$i+1])<=254) $i++; } return substr($str,$begin,$i-$begin); } } } if(strlen($message) > 60) { if(SubString($message, -100) == SubString($repeat['message'], -100) || SubString($message, 50, 100) == SubString($repeat['message'], 50, 100)) { showmessage('post_repeated', 'index.php'); } } else { if($message == SubString($repeat['message'], 0, 60)) { showmessage('post_repeated', 'index.php'); } } } } //Refuse repeated post. Code End 添加提示信息 打开:templates\default\messages.lang.php 查找: 代码:[Copy to clipboard] 'post_net_price_iszero' => '您的主题售价扣除积分交易税后为 0,请返回修改。', 在后面一行添加: 代码:[Copy to clipboard] 'post_repeated' => '您所发布的主题已存在:《$repeat[subject]》请勿重复发布。', 添加设置 打开:config.inc.php 在最后添加一段: 代码:[Copy to clipboard] $repeated = 0; //设置防范重复发贴的级别,0=关闭,1=防范相同ID发布相同标题的新主题,2=防范发布相同标题的新主题,3=防范发布相同标题且内容部分相同的新主题 您可根据自己的需要,随时更改 $repeated 的数值,以关闭或开启限制重复发贴不同的防范级别。 完成! 上传更新修改的三个文件。 回帖才可发新主题 年初的时候,一个朋友突发奇想,说想通过限制那些不会帖的人发布新主题,以达到活跃论坛交流气氛的目的。因为他的论坛是一个文学论坛,很多人都只为了展示自己的作品,发布完自己的文章就走掉了,也不和别人交流探讨。久而久之,论坛里就有很多没人回复的“光棍帖子”。我也觉得这是个不错的创意,于是就帮忙完成了这个插件。昨天看见有朋友说,也希望能有这么个插件,用来防范那些暴力软件来论坛捣乱。因为这些暴力软件一到论坛里就毫不客气地乱发一通,把你所有论坛都全部发满垃圾信息。而如果需要回复若干帖子之后才能发布新主题的话,就目前而言,应该是能够起到防范的作用的。想想这的确也是一个不错的办法,于是今天就整理了一下,给大家发布了这个插件。 插件说明:论坛管理人员发贴不受此插件限制。本插件提供两种限制模式,一为每回复3个帖子就可以发一个新主题,也就是说回复数可以累加。例如某个会员回复了30个帖子,那么他就能发布10个新主题。另一种是回复数不累加,也就是说每次发布新主题之后,这个会员的回复数都将被清零。下次需要发新主题时,他最少还得再回3个帖子。 程序默认设置为需要回复3个帖子才能发布新主题,你也可以根据自己需要修改这一数值。而如果你需要关闭这一限制功能时,把这一数值设置为0就可以了。同时,文章最后还提供了反安装的方法,方便不再需要此插件的朋友进行反安装。 名称:开卷工作室回帖才可发新主题 For Discuz! All Version 安装难度:易 适用版本:Discuz!所有版本 作者:KaijuanStudio 技术支持:MadeinCHN.cn 发布站点:中国制造论坛 安装步骤: 升级数据库 代码:[Copy to clipboard]ALTER TABLE `cdb_members` ADD `replynum` mediumint(8) NOT NULL 添加提示信息 打开:templates\default\messages.lang.php 查找: 代码:[Copy to clipboard]'post_hide_nopermission' 在其前面一行添加: 代码:[Copy to clipboard] 'post_noreply' => '对不起,您新回复的帖子不足 $countre 个,不能发新帖,请返回。', 修改 newreply.inc.php 打开:include\newreply.inc.php 查找: 代码:[Copy to clipboard]if($modnewreplies) { 在前面一行添加: 代码:[Copy to clipboard]//take count of reply by KaijuanStudio if($countre && !$adminid) { $db->query("UPDATE {$tablepre}members SET replynum=replynum+1 WHERE uid='$discuz_uid'", 'UNBUFFERED'); } //take count of reply End 修改 newthread.inc.php 打开:include\newthread.inc.php 查找: 代码:[Copy to clipboard]$discuz_action = 11; 在下面添加: 代码:[Copy to clipboard]//take count of reply by KaijuanStudio if($countre && !$adminid) { $query = $db->query("SELECT replynum FROM {$tablepre}members WHERE uid='$discuz_uid'"); if($db->result($query, 0) < $countre) { showmessage('post_noreply'); } } //take count of reply End 继续查找: 代码:[Copy to clipboard]if($modnewthreads) { 在前面一行添加: *注:以下为回复数可累加的修改代码 代码:[Copy to clipboard]//take count of reply by KaijuanStudio if($countre && !$adminid) { $db->query("UPDATE {$tablepre}members SET replynum=replynum-$countre WHERE uid='$discuz_uid'", 'UNBUFFERED'); } //take count of reply End *注:以下为回复数不累加的修改代码 代码:[Copy to clipboard]//take count of reply by KaijuanStudio if($countre && !$adminid) { $db->query("UPDATE {$tablepre}members SET replynum='0' WHERE uid='$discuz_uid'", 'UNBUFFERED'); } //take count of reply End 添加设置 打开:config.inc.php 在最后添加一段: 代码:[Copy to clipboard] $countre = 3; //设置回复才可发帖的回复数,0=关闭,默认为3,即:需要回复3个帖子才能发新帖。 完成! 反安装方法: 数据库反安装: 代码:[Copy to clipboard]ALTER TABLE `cdb_members` DROP `replynum` 对照上面提供的安装方法,删除各文件所增加的代码。 顺便提供一种模式------每个新注册的会员必须回贴三个才能发主题,以后不受影响。 去掉这段代码: //take count of reply by KaijuanStudio if($countre && !$adminid) { $db->query("UPDATE {$tablepre}members SET replynum=replynum-$countre WHERE uid='$discuz_uid'", 'UNBUFFERED'); } //take count of reply End 防暴力注册之随机注册变量 在《生成唯一随机字符串的函数》一文中,我们已经介绍了本插件所使用到的关键技术,即:产生以随机字符串为名的变量。这个插件的原创者,是 DZ 论坛上的一个朋友,由于一下搜索不到那个帖子,所以叫不出名字来。我们今天发布的就是在那个插件创意的基础上,进行改良的作品。通过这几天的使用效果来看,这个插件目前能够 100% 地防范暴力注册的现象,偶尔还有进来发广告的,那都是些通过手工注册进来的极少数。自然这些也在我们的管理与功能插件的控制范围之内。详细的防范办法与相关插件,我们都已发布于中国制造论坛里,而且陆续还会有新的相关插件出来。废话不多说了,下面就进入今天的正题: 名称:防暴力注册之随机注册变量 难度:简单 作者:KaijuanStudio 技术支持:MadeinCHN.cn 适用版本:Discuz! 所有版本 发布站点:中国制造论坛 演示地址: http://madeinchn.cn/register.php 效果说明: 使用本插件后,用户注册需要勾选“我要注册为会员”的确认选项,否则不能通过注册。由于这一选项设定的是一个随机变量,所以能够防范暴力注册软件的识别。 修改步骤: 修改 register.php: 找到: 代码:[Copy to clipboard]$fromuid = $_DCOOKIE['promotion'] && $creditspolicy['promotion_register'] ? intval($_DCOOKIE['promotion']) : 0; 在下面一行添加: 代码:[Copy to clipboard]//random function by KaijuanStudio $cache = './forumdata/cache/KS2007r2dci.txt';//注:请务必把这个 txt 文件名改成另一个无意义的名字 @$cont = file_get_contents(DISCUZ_ROOT.$cache); if(!$cont) { $cont = randoms(9); $fp = @fopen($cache, 'w'); if($fp) { fwrite($fp, $cont); fclose($fp); } } function randoms($leng){ $edh = '0123456789abcdefghijklmnopqrstuvwxyz'; return 'k'.substr(str_shuffle($edh),0,($leng)); } //random function end 找到: 代码:[Copy to clipboard]include template('register'); 在上面一行添加: 代码:[Copy to clipboard]//random function by KaijuanStudio $randcode = ' | ||||||||||||||||||
确认注册 | 我要注册为会员 |
序号 | 评论者 | 共有评论 0 【论坛浏览】 【发表评论】 | 评论时间 |
当前无任何评论,或评论已被禁止显示 | |||
共有评论数 0 每页显示 10
|