找回密码
 注册
X系列官方授权正版
搜索
查看: 6998|回复: 12

[讨论] 防范发帖机相关(火星帖慎入)

[复制链接]
发表于 2010-3-14 07:02:13 | 显示全部楼层 |阅读模式
由于近日小广告猖獗,会员JINNIX建议防范发帖机, 于是我就google乐下,先转几篇探讨一下~~

PHPWIND论坛关于防发帖机的方法
1.启用验证码


 在核心设置->认证码 下面开启“注册认证码功能”



2.邮件激活

在核心设置->注册控制 下面开启“新用户注册需通过email激活用户”



3.禁止同一IP在一定时间内不能注册

 在核心设置->注册控制 下面设定“禁止同一IP在多少时间内不能重复注册”的时限



4.新用户注册需管理员在后台验证通过才能发帖

在核心设置->注册控制 下面开启“新用户注册是否需要管理员在后台验证通过才能发帖”

 此功能可能会使用户的体验不好,慎重使用。



5.论坛防注册机控制

 在核心设置->注册控制 下面设定一些参数,具体的设定方法在http://www.phpwind.net/read-htm-tid-350207.html做了详细的说明。



6. 设置新用户不能发布主题,只能先回复

  至少回复多少贴才升一级进入可发主题贴的等级.自动发贴机目前是不会先回复后发主题贴。


7.妥善处理与会员关系,加强版主管理,建立奖惩制度等等。



8.安装防注册机注册插件

 此帖子中最此插件做了详细的说明,并提供了下载

 http://www.phpwind.net/read-htm- ... A2%B2%E1%BB%FA.html


动网论坛防止发帖机恶意发帖的办法
第一种方法:

将reg.asp文件改成其它文件名如reg_new.asp传到论坛目录下面!

然后将reg.asp文件里的内容改成如下内容

<html>
<body>
<br><br>
<p align="center">要注册成为XXXXXXXXXX论坛的用户,请点击“<ahref="reg_new.asp">下一步</a>”<br><br><br><br><br><br>
这是做是为了防止某些网络营销软件自动注册而影响到论坛的正常运行!
</body>
</html>



这样的话,当用户点击reg.asp的时候,必需要点"下一步"才能注册,而网络营销软件不会探测到reg_new.asp的,因为后台模板的代码里根本没有提到reg_new.asp这个真正的注册用户文件!


第二种方法:

让注册者回答随机问题

显然,这是上个思路的一点改进。至于在效果上是否有区别,还未实践证明。

这里我给出了修改方法。蓝色代码为已存在代码,红色代码是新增加代码。

1. 进入后台,风格界面模板总管理,page_login,template.html(13)

<TR>
<TD class=tablebody1><B>密码问题</B>:<BR>忘记密码的提示问题</TD>


在此两句上面添加如下代码

<TR>
<TD class=tablebody1>
<div style="color:red"><b>反论坛群发必填项:</b></div>
<div>为了防止群发软件的恶意注册,</div>
<div>请回答以下问题</div>
<div style="color:blue;font-size=18px"><b>{$EvilQuesion}<b></div>
</TD>
<TD class=tablebody1><INPUT size=30 name=evilanswer> </TD>
</TR>


2. 打开reg.asp,找到

<!--#include file="inc/md5.asp"-->


在其下添加

<!--#include file="inc/CheckEvil.asp"-->

找到

TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))

在其下添加

Randomize
Session("EvilID")=int(Rnd*QuesionNum)
TempLateStr=Replace(TempLateStr,"{$EvilQuesion}", QuesionArray(Session("EvilID")))

找到

Else
quesion=Request.form("quesion")
End If

在其下添加

If Request.Form("EvilAnswer")="" Then
ErrCodes=ErrCodes+"<li>"+"请填写防恶意注册问题!"
End If

If Not CheckEvil(Request.Form("EvilAnswer")) Then
ErrCodes=ErrCodes+"<li>"+ "防恶意注册问题回答错误,请返回重试。"
End If

3. 增加一个新文件CheckEvil.asp,填写如下代码,并上传到论坛inc目录下,即 /inc/CheckEvil.asp。

<%
Dim QuesionArray(100)
Dim AnswerArray(100)
Dim QuesionNum
QuesionNum=5 '请在这里正确设置问题的总数

Function CheckEvil(Answer)
Dim TrueAnswer
If Session("EvilID")="" Then
CheckEvil=False
Exit Function
End If
TrueAnswer=CStr(AnswerArray(Session("EvilID")))
If Answer=TrueAnswer Then
CheckEvil=true
End If

End Function


QuesionArray(0)="12的平方是多少?(数字)"
AnswerArray(0)="144"
QuesionArray(1)="中国最长的河流叫什么名字?"
AnswerArray(1)="长江"
QuesionArray(2)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(2)="低头思故乡"
QuesionArray(3)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(3)="低头思故乡"
QuesionArray(4)="中国史上唯一的女皇是谁?(提示:武?天)"
AnswerArray(4)="武则天"


%>

DISCUZ论坛关于防发帖机的方法
1:问:如果有注册机器人在Discuz!论坛上批量注册用户怎么办?


  答:以管理员身份登入Discuz!后台,依次 “Discuz! 选项 -->安全控制--> 启用验证码”。将“新用户注册”选项前打勾,可有效防止注册机批量注册。

  另外还可以设置注册限制:“Discuz! 选项-->注册与访问控制-->IP 注册间隔限制(小时) ”在这里设置同一台电脑注册时间的间隔也可有效防止恶意注册。


  2:问:论坛如何防止论坛恶意批量发帖?


  答:以管理员身份登入Discuz!后台,在后台设置防止灌水时间:“Discuz! 选项-->安全控制-->发帖灌水预防”,在这里设置两个帖子发表的时间间隔。


  3:问:如何禁止论坛发表带有敏感字符的帖子?


  答:以管理员身份登入Discuz!后台设置方法:依次进入后台 - 帖子相关 - 词语过滤 在 不良词语 输入框中填写要过滤的字符。在替换为输入框中填写改铭感字符过滤后的替换字符,如 需要过滤 “[文明用语]”为“TMD”则在 不良词语 输入框中填写 “[文明用语]”,在 替换为输入框中填写“TMD”即可。有没有办法让含有某个字符的帖子无法发表呢?可以的。只要在上面选项中的替换为 输入框中填写“{BANNED}”,则将该铭感字符设置为不可发表。


  4:问:如果发广告者在论坛各处发帖,管理员想一次性删除可以吗?


  答:当然可以。以管理员身份登Discuz!后台,选择“论坛维护-->批量删帖”,在“发帖用户名”一项中填写恶意发帖者ID,点击提交后出现该ID所发表的所有文章,全部打勾或有选择性的批量删除即可。
 楼主| 发表于 2010-3-14 07:05:00 | 显示全部楼层
如何防止网站垃圾留言评论的肆略

可能很多自称是SEO高手的“专家”们都有一个同样的“法宝”,那就是疯狂地在其他网站上留下大量的垃圾留言,垃圾评论,以便留下他们的链接。或许这在很久以前可能有用,随着SE的反SPAM的技术不断的升级,现在再这样做简直是自找死路,无疑是给SE一个惩罚你的理由。

    然而,这些高手们依然不知疲倦乐在其中,或机器自动留言,或人肉留言,总之,只要是可以留下一个链接的地方都留下了他们坚强的身影,他们才不管你的网站是什么类型的,走过路过都要进去评论一下。鉴于垃圾猛于虎的严峻形势,飘易博客甚至不得不将评论设置为需要审核才能显示。

    当然,我们也不是完全反对留言评论,WEB2.0需要网站和用户的互动,但要留言至少也要看下别人的文章,有感而发嘛,这是非常正常的交流沟通方式,我们非常欢迎这样的留言和评论。

    当然,我们需要反击,针对机器每秒几十几百的信息发布量,我们也要从技术手段上屏蔽它们。如何具体操作呢?flymorn提供几个可行有效的方法。

    1、判断该发布信息是否有可靠的来路。只要是自然人发布的,那么他一定是通过我们提供给用户的提交页过来的,一定有一个来路;如果是机器发布的,就不会有来路信息。

'判断来路,禁止外部提交
dim server_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if server_v1="" or instr(server_v1,"/add.asp")<=0 or mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<SCRIPT language=JavaScript>alert('来源非法,禁止外部提交!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

注意,上面的/add.asp就是提交页面来源页。当然,机器也可以伪造来路,这就要结合以下方式一起对付了。

    2、验证码。验证码一直是对付机器垃圾留言的一个可行的方法。不同的验证码有不同的对付机器留言的能力,越复杂的验证码,机器越难破解。这需要在考虑用户的感受和对付机器之间选择一个平衡点。关于验证码的使用方法,我就不多说了,谷歌、百度里搜索下就会出现很多介绍。

    3、判断来源提交的时间。如果在提交页停留的时间太短,比如20秒,一般只要是个人,他打字的时间都不必这个少。举例说明,在用户打开页面(如add.asp)的时候,我们记下这个时间,在form提交表单里增加一个隐藏对象,如:
<input name="intime1" type="hidden" value="<%=Now()%>">

    然后,当用户写好留言评论后提交到具体处理页面(如addok.asp)的时候,我们获取当前时间,和add.asp里的这个intime1时间比较,如果这个时间差小于设定的时间,如20秒,则禁止留言,判断为机器。代码可这样写:
If DateDiff("s",request.form("intime1"), Now()) < 20 then
response.write "<SCRIPT language=JavaScript>alert('您的留言速度太快了吧,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

    通过以上三种方法可以屏蔽掉绝大部分的机器垃圾留言评论,如果还有大量的留言的话,那多半是人肉留言了。但是,我们又如何对付人肉留言呢?flymorn也提供方法对付。

    方法很简单,就是通过记录用户的cookies以及IP来限制同一用户发表留言的数量。比如一天24小时内,只允许同一用户发表信息5条。我们可以通过以下方法实现。

<%'当用户每提交一次
if request.cookies("postnum")="" then
response.cookies("postnum")=1
response.cookies("postnum").expires=DateAdd("h", 24, Now())
else
response.cookies("postnum")=request.cookies("postnum")+1
end if
if request.cookies("postnum") > 5 then
response.write "<SCRIPT language=JavaScript>alert('今天留言次数超过限制,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
%>

    通过以上的限制,人工发帖也得到了一定的限制。上面的方法是基于cookies判断,当然用户可以通过浏览器清空COOKIES,但这样增加了他们发垃圾帖子的难度,提高了门槛。我们还可以继续判断发布者的IP,通过同一个IP下发帖限制数量来达到我们的目的。在此,就不再扩展,大家可以自己设计如何判断 IP来限制发帖的方法。如果您对本文讨论的主题有看法或建议,欢迎留下评论,以便我们一起探讨。
回复

使用道具 举报

 楼主| 发表于 2010-3-14 07:06:15 | 显示全部楼层
我和自动发帖机的斗争过程:终于屏蔽垃圾信息了

关于如何屏蔽自动发帖机发帖,我在飘易博客里写过一篇文章《如何防止网站垃圾留言评论的肆略》,在这篇文章里讨论了一些防止机器自动发帖的方法。然而,时至近日,仍然有一些垃圾信息堂而皇之的出现在我眼前,这岂不是公然挑衅么!

    所谓魔高一尺,道高一丈。机器发帖和反机器发帖一直都是场硝烟弥漫的豪华战争。前阵子我从别人手里接过重庆二手网(www.cq2sw.com),然后上传了一套自己编写的asp网站程序,自网站开放之日起,这个垃圾信息就没有消停过,而且这个垃圾发帖的时间都有一定的规律,一般是从上午9点、10 点的时候开始,到下午下班前这段时间,是发帖机发动的时候,看的出来,发帖机的操作者也是一个正常上班的“好**”。

    从发帖机发布的信息来看,操作者也刻意优化了下信息内容,以免信息过于垃圾,直接导致发帖被屏蔽而失败;有时候,我看着这些内容,还真为这些操作者们拍案叫绝,因为连我差点都被这些机器发的帖子给迷惑住了。但是,从连续的几个帖子发布的时间间隔来看,有的竟然是同一秒钟发布出来的!只要你真的是个人在发贴,发一个帖子就打几个汉字怎么着也要几十秒吧。

    很多时候,我不得不佩服这些发帖机的开发者们,有些发帖机的确够强悍,像伪造来路,伪造cookie等对他们来说是小case一桩,而且有的还会自动跟踪你网站的修改,自动调整。牛。

    从地域来看,广东的垃圾信息真是太多了,像广州,深圳,东莞尤其厉害,我站上的大部分垃圾信息都是来自这些区域。看的出来,广东的经济发展的确很拽,但这里您要注意了,这些垃圾帖子的内容绝大部分是关于走私、水货产品什么的,您可以自己联想了,为什么广东会有这么多的垃圾信息了。

    如果你的网站是采用简单防御垃圾信息的方法,可要注意了,看我分解:

    1、采用来路判别 == 失败
    很多网站对于机器发帖的第一步便是验证是否有合适的来路信息,然而稍微懂点程序的人都知道,无论是asp,php还是.net,jsp伪造来路信息是轻而易举。所以这招基本失效。但有总比没有好。有这个验证还是能防范一些低级发帖机的。

    2、采用发帖时间判断 == 失败
    从发布页(如add.asp)获得一个当前系统时间,然后用户提交信息(如提交到addok.asp)时计算用户在这个页面上的停留时间,如果过短,比如小于30秒钟,则判断为机器发帖。这招也失败了,发帖机根本不访问add.asp发布页,它直接post一个当前虚假的时间,使得这个时间远远大于30秒,所以这个方法也失效了。

    3、采用cookie限制发帖次数 == 失败
    程序员们知道,cookie是客户端的信息,也是可以被伪造的。比如,你采用每次发帖成功后,采用程序使得某个cookie的值加1,当这个cookie值累加到N,就拒绝在当天继续发帖。发帖机如何破解这个方法呢?其实很简单,发帖机要做的就是伪造这个cookie,使这个cookie的值永远为1,也就永远不会超过限制了。

    4、使用自身的反垃圾信息过滤系统 == 有作用
    把垃圾信息的关键字屏蔽掉,的确可以有效遏制机器发布恶意的垃圾帖子。但这个方法局限性很大。它只能屏蔽那些信息内容已经包含了恶意关键字的帖子,而对于伪装的帖子不起作用。

    5、同一IP当日发帖数量限制 == 有作用
    采用基于IP的技术防止发帖机器发帖,是有作用的,而且经过了检验。具体方法就是:判断当天发布的帖子里相同IP下所发布的帖子数量,如果这个数量大于一个数值,就限制其继续发帖。

    那有人说了,不能换个IP再发啊,是的,发帖机是可以换IP发布,但是,换一次IP,就意味着它要掉一次线,而一般发帖机是多线程的,它这样做其他进程也同样无法发布了。

    综上所述,防止发帖机发布垃圾信息,不能仅仅采用一种方法,如果把以上的5种方法综合利用,在防止垃圾信息横行的动作上是富有成效的。大家还可以根据第三点把cookie改造称session,这样第三个方法也能起到有效的防范作用;这样,后面三种方法一结合,就可以搭建一个比较强健的反垃圾信息系统了。如果您有其他的想法,欢迎与我交流,请留下您的评论。
回复

使用道具 举报

发表于 2010-3-14 11:41:29 | 显示全部楼层
直接封了发广告的物理IP
回复

使用道具 举报

发表于 2010-3-14 12:16:09 | 显示全部楼层
发帖机什么的最讨厌了。。
回复

使用道具 举报

发表于 2010-3-14 12:28:36 | 显示全部楼层
直接封了发广告的物理IP
S.A.S 发表于 2010-3-14 11:41

强悍.........
回复

使用道具 举报

 楼主| 发表于 2010-3-14 12:53:48 | 显示全部楼层
发帖机什么的最讨厌了。。
neo 发表于 2010-3-14 12:16

嗯嗯,删帖机什么的最友爱乐
回复

使用道具 举报

发表于 2010-3-14 14:12:17 | 显示全部楼层
这是老版本发帖机的功能介绍
“动网论坛自动发帖专用:论坛发帖圣手dvbbs专用版 1.0 (最后更新日期:2006-06-05)

A 适用版本:
动网论坛 v 7.1 以上官方版本适用,如目标论坛如果开启验证码,本软件无效。
另外,本版本顶帖功能无效。
B 主要功能:
1.可自动注册论坛账号,也可由用户输入已注册过的账号。
2 软件设置关闭时自动保存,方便下次打开使用。
3 根据论坛发帖时间限制,调整延时设置,有效应对。
4 http代理设置可以有效防止IP被封。
5 指定版块自动发新帖,论坛所有版块循环发帖,同一版块重复发帖。
6 自由设置论坛发帖上限,达到后自动停止。
7 ......
更多功能请自己下载体会。 ”
回复

使用道具 举报

发表于 2010-3-14 14:18:23 | 显示全部楼层
这里是利用验证回答来封堵发帖机的方法 http://faq.comsenz.com/viewnews-410
另外 在其他论坛发现比较好的办法是让新手做任务 新手设定积分-1分不得发帖 必须上传头像获得10积分后才能获得发帖权限 我认为这种方法比较好的说 因为发帖机的程序再怎么编也不可能自己去上传头像

评分

参与人数 1UCC +10 收起 理由
neo + 10 好主意

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2010-3-14 17:15:44 | 显示全部楼层
Waaaaaa~ good idea[S::o:]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站