动网论坛防止群发的解决方法

来源:互联网 发布:用友u8物理数据备份 编辑:程序博客网 时间:2024/05/01 03:10

目前,很多的群发软件,大行其道,到处群发,特别是使用动网论坛的朋友,每天群发的垃圾广告非常之多,删都删到手软。更有甚者,群发的都是些违法信息。对此,使用动网论坛的朋友可能都深恶痛绝。

但有什么办法呢,改验证码图片方式?似乎作用不大,验证码对有些能识别的软件来讲形同虚设,没点用处。

群发软件针对使用某程序系统的网站,能够进行大批量的群发,无非是提交表单POST参数及地址基本上都一样,唯一不同的仅仅是域名。针对这种情况,可以适当修改下表单中字段项的name属性,或是页面表单提交到的名称,基本上就可以屏蔽某些群发软件。

但是如果群发软件具备自动获取表单中的字段项名称及提交地址的功能,怎么改没用,这个功能从技术上来讲,实现并不复杂。

知道了群发的一些基础知识,我们很容易想到解决方法。比如:如果表单中每次要提交的表单项都不同,群发软件就没办法处理了,其实不是没办法,只是相对复杂了些(先要抓取表单页,并进行表单项分析),他们不会仅仅为了你一个网站,而修改程序的。

我的解决方法是:表单的提交地址通过JS输出,增加一个随机参数名及其随机值,这个参数值及其名称在提交处理页进行验证,注意,JS所在的位置并不在表单内部,一般可加在表单验证的JS里面。经测试,该方法非常适用。

下面是针对动网论坛做点一些程序及其模板上的修改:

1、修改POST.asp页面:

先在代码的最下边加入2个随机函数:

Function getRnd( max , min )
Dim i
randomize
i = Int((max - min + 1) * Rnd + min)
getRnd = i
End Function

Function getRndChar( num )
Dim chars,ret,tmp,numIndex,i
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
For i=0 To num
 Randomize
 numIndex = Int((36 - 1 + 1) * Rnd + 1)
 tmp = Mid(CHARS , numIndex , 1 )
 ret = ret & tmp
Next
getRndChar = ret
End Function

再在该文件的188行左右,插入下面的代码:

'替换随机的注册参数
  session("regRndChars") = getRndChar( 6 )
  session("reg_b") = getRnd(9999,1000)
  session("reg_c") = getRnd(100 , 10 )
  TempStr=Replace(TempStr,"{$rndparam}",session("regRndChars"))
  TempStr=Replace(TempStr,"{$value1}",session("reg_b"))
  TempStr=Replace(TempStr,"{$value2}",session("reg_c"))

2、修改savepost.asp文件:

在该文件47行插入:

Dim regNums
regNums = session("reg_b") * session("reg_c")
If Request(session("regRndChars")) = "" or Request(session("regRndChars"))<>CStr(regNums) Then
 Response.write "发帖失败!"
 Response.end
End If

3、修改dispbbs.asp  873行下面,加入:

'替换随机的参数
 session("regRndChars") = getRndChar( 6 )
 session("reg_b") = getRnd(9999,1000)
 session("reg_c") = getRnd(100 , 10 )
 sTemplate=Replace(sTemplate,"{rndparam}",session("regRndChars"))
 sTemplate=Replace(sTemplate,"{value1}",session("reg_b"))
 sTemplate=Replace(sTemplate,"{value2}",session("reg_c"))

4、修改模板文件:

分页面模板(page_post):template.html(0)29行左右改成

function PostSubmit(frm,e){
 //随机参数
 var a = '{$rndparam}';
 var b= {$value1},c={$value2};
 frm.action += '&' + a + '=' + (b*c);
 var Post=new DvSavePost(frm,e,'{$ispostnew}'=='1'?'full':'fastre',{$maxtitlelength},{$maxconlength});
 gid('submit').disabled=true;
 if ('function'==typeof checkPay){Post.isok=checkPay()}
 gid('body').value=dvtextarea.save();
 Post.chk_topic(gid('topic'));
 Post.chk_flash();
 Post.chk_content(gid('body'));
 if (frm.topicmode&&frm.selecttmode){Post.chk_topicmode(frm.topicmode,frm.selecttmode);}
 if(!(Post.send())){gid('submit').disabled=false;}
}

分页面模板(page_dispbbs) :template.html(0) 210行左右,改成

function FastReplySubmit(frm,e){
 gid('body').value=dvtextarea.save();
 gid('submit').disabled=true;
 //随机参数
 var a = '{rndparam}';
 var b= {value1},c={value2};
 frm.action += '&' + a + '=' + (b*c);
 var FastRE=new DvSavePost(frm,e,'fastre');
 FastRE.chk_topic(gid('topic'));
 FastRE.chk_content(gid('body'));
 if(!FastRE.send()){
  gid('submit').disabled=false;
 }
}

原创粉丝点击