网络人气谁最高 在线投票之我见
一百年前,西学东渐,打开了晚清的国门,西器、西俗和西学渐次东来,中国最早的投票于是在
这个背景下产生了:投票不是选政治领导人,而是选美女。一百年后,各种选秀活动(快男、超女)
大肆流行,通过各种形式的投票来积聚人气,二者如出一辙。
科技在进步,时代在发展。各种投票方式层出不穷:***投票、短信投票、网络投票等等。
现代汉语词典对“投票”是这么解释的:“选举或表决议案的一种方式。将候选人的姓名或对议
案的意见写在票子上,或在预先印好的票子上做出标志,投入票箱。”这种方式小到评选班委,大到
评选国家领导人,都是在知道有多少选民的情况下投票的,能充分体现投票的公平公正。
而对于网络在线投票,由于对投票过程缺少监督机制,不能达到完全公平公正,没有完美解决方
案,只能看需求求最大化效益比。如果投票级别要求很高,并且有条件则可以和公安部的***系统
相连接,投票时必须输入***号(去年联想奥运火炬接力选手选拔就是通过这种方式)。这样就可
以保证一人只投一次票了(这也不是百分之百的公平公正,只能是将重复投票的可能性降低到最低)。
我想对于大多数采用网络形式的投票而言,最重要的也许不是投票结果,而是活动本身,通过网络投
票宣传活动,扩大影响力。
人为重复投票是不可避免,但是这种工作一般对太大价值的投票过程,人们总是很害怕麻烦,不
愿过多的去人为重复投票。因此,最大可能地增加用户希望重新投票的复杂度(越复杂越没有人愿意
多次投票)可以有效防止刷票,从一定程度上体现投票的公正性。
1.IP 限制——每个IP 只能投一票
代码如下(以ASP 为例):
dim VOTERIP,VOTERIP2
定义两个变量VOTERIP、VOTERIP2,用来存储获取的IP 地址
VOTERIP
Request.ServerVariables("REMOTE_ADDR")
获取客户端的
地址,并存储在变量
VOTERIP 中。如果客户端使用代理服务器来访问,那获取的就是代理服务器的
地址,而不是真正的客户端
VOTERIP2
Request.ServerVariables("HTTP_X_FORWARDED_FOR")
透过代理服务器取得客户
端的真实
地址,不过对于支持高级跳转的非透明代理和反向代理,该语句获取的IP 地址仍是代理服务器的IP
If VOTEIP2
"" Then
判断VOTEIP2 的值是否为空,如果客户端没有通过代理服务器来访问,VOTEIP2
的值将是空的
VOTERIP=VOTERIP2
vote.Source="Select * From result Where ip='"&VOTERIP&"'"
从result 表格的ip字段中查询VOTERIP
所在行(在数据库中每一行称作一条记录,每一列称作一个字段)的所有信息
If Not vote.EOF
me age="您已经投过票了,谢谢您的支持。."
如果result 表的ip 字段中存在数据为VOTERIP 的记录
显示已经投过票的信息
(小知识:
非透明代理(传统代理)
:内部网络和外部网络之间的唯一连接是代理服务器,客户端要在浏览器中设置代理
服务器的地址和端口号,客户浏览器在发出连接请求以前,会自动察看浏览器设置的代理地址及代理端口,若设
置了代理端口和代理地址,则将连接请求发送给指定的代理服务器的指定端口。这种方式的一个明显特点是客户
机在连接以前的DNS 查询也由代理服务器去做。
反向代理:普通的Web 代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上
的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个 Web 服
务器。
缺点:①.
对于ADSL 用户可通过断线重拨来变换IP 地址。
对于内网用户(部分校园网、网吧)只有一个公网IP 地址。
对于部分使用代理服务器的主机无法取得其真实IP 地址。
2.Cookies 验证
Cookies 是一种 Web 服务器通过浏览器在访问者的硬盘上存储信息的手段,而将 Cookies
用于Internet 的本意是为了克服HTTP 天生无记录的缺陷。在HTTP 协议下,Cookies 仅仅是一
个文本文件。Cookies 可以让 Web 站点跟踪特定访问者的访问次数,可以告诉在线广告商广告
被点击的次数,还可以让用户在不输入用户名和密码的情况下进入曾经浏览过的一些站点。
在ASP 中,Cookies 通过Re o e 对象的Cookies 集合来创建,并通过Request 对象的
Cookies 集合来读取并向服务器端传递。
以下是使用Cookies 技术防止重复投票的ASP 代码:
If not Request.Cookies(“voteOK”)=1 then
Re o e.Cookies(“voteOK”)=1
如果是第一次投票,则在客户端保存名为“voteOK”值为 1 的
Cookies 使其下次不能投票
连接数据库,使投票数加1 并更新数据库相应的字段
否则在页面中显示已经投过票的信息
Re o e.write ”
您已经投过票了,谢谢您的支持。”
Cookies 默认生命周期起始于它被写入浏览器端的那一刻开始,结束于浏览器关闭时。如果
要设置Cookies 的生存期限,可以使用Re o e.Cookies(name).Exprie 属性。如:
Re o e.Cookies(“voteOK”).Expires=date()+7
其中date()+7 表示Cookies 保存时间为7 天
当生存期限截止时,Cookies 将自动从浏览器端的硬盘上删除。
以下代码功能:如果浏览器阻止Cookies 写入,无法进行投票并直接跳转到另外的网页。
Re o e.Cookies("cook") = "yes"
投票前一页代码,在此页点击投票。
以下是投票页代码
If Request.Cookies("cook")
"yes" Then
re o e.Write
(小知识:Cookies 在硬盘上的保存位置:每一个Web 服务器都会产生一个与其网站相关的 Cookies 文件名称,并
将其存储在客户端的计算机中。通常,如果是使用 Win98/Me 系统,Cookies 文件存放在 C:\Windows\Cookies
文件夹中;如果使用 Win2000/XP 系统,Cookies 存放在 C:\Documents
Settings
中该用户文件夹下的
Cookies 文件夹中。Cookies 文件内容如图2 所示。如果想查看Cookies 的精确内容,可以使用IECookiesView
这个软件(下载地址: http://www.dow ank.cn/uplo
adimages/file_box/dow ank0531%20cookies.rar)如图3)
缺点:①.
如果浏览者禁止服务器在浏览器端写入Cookies,Cookies 无法记录信息。
如果每次投完票后删除Cookies,可以进行重复投票。
Cookies 的安全性能一直是倍受争议的。虽然Cookies 是保存在本机上的,但是其信
息的完全可见性且易于本地编辑性,往往可以引起很多的安全问题。
3.Se ion 验证
Se ion 指的是用户从访问某站点直到离开为止的一段时间内,服务器端分配给用户的一个
存储信息的空间。当我们访问某网站时,服务器会生成一个唯一的 Se ionID,不同用户的
Se ion 存储着各自特定的信息。Se ion 最常见的作用就是存储用户的首选项,例如:我们不
想查看某网页的图片,就可以将该信息存储在Se ion 对象中。
Se ionID 这一数据是用 Cookies 保存到客户端,所以一旦客户端禁用 Cookies,那么
Se ion 也会失效。
当用户在Web 页面之间跳转时,存储在Se ion 对象中的信息将不会丢失,但当浏览器关
闭时,Se ion 变失效了。
如何使用Se ion 来防止重复投票呢?
If Se ion(“voteOK”)
连接数据库,使投票数加1 并更新数据库相应的字段
Se ion(“voteOK”)=1
缺点:①.
对于大型网站,由于 Se ion 占用服务器内存,如果访问量很大,会消耗较多系统
资源。
②. Se ion 保存在客户端主机的内存上,关闭浏览器后,会自动清除。
如果浏览器阻止Cookies 写入,Se ion 将不能发挥作用。
Cookies 和Se ion 的区别:
Se ion 保存在服务器上,关闭浏览器或者Se ion 脚本过期后,即自动清除。而Cookies 保存
在客户端可以自行设置 Cookies 的存在周期,除非设置了临时 Cookies,否则关闭浏览器后
Cookies 信息仍旧保存在客户端的硬盘上。打个比方:Cookies 是家门口存放牛奶或者报纸的箱
子,Se ion 是去宾馆住宿时发的钥匙。
如何将IP、Cookies 和Se ion 结合起来防止重复投票呢?
如果是第一次投票,则在浏览器Cookies 中保存其IP 地址使其下一次不能投票
If Request.Cookies("IPAddre ")
Request.ServerVariables(“REMOTE_ADDR”) Then
If Se ion("voteOK")
连接数据库,使投票数加1 并更新数据库相应的字段
Se ion("voteOK") = 1
Re o e.Cookies("IPAddre ") = Request.ServerVariables(“REMOTE_ADDR”)
Re o e.Cookies("IPAddre ").expires = DateAdd("h", 12, Now())
设置Cookies 有效期为12 小时
即便是将IP 认证、客户端Cookies 验证和服务器Se ion 验证结合起来,也不能很好的防止
刷票,对于非人为的访问和提交数据,需要用到验证码技术,通过生成随机的验证码来限制重复
投票。
4.验证码限制
所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,由人眼识别其中的验证码
信息,输入表单提交网站验证,验证成功后才能使用某项功能(如图4 所示)。
验证码实现流程:服务器端随机生成验证码字符串,保存在内存中,并写入图片,发送给浏
览器端显示,浏览器端输入验证码图片上字符,然后提交服务器端,提交的字符和服务器端保存
的该字符比较是否一致。一致就继续,否则返回提示。
在需要添加验证码的地方添加如下代码:
请输入验证码:
checkcode.a 是生成验证码必需文件
然后在投票提交到的地方(投票必须提交到某个页面或者某段程序处理)加入如下代码:
IF Trim(Request.Form("checkcode"))=Empty
Or Trim(Se ion("checkcode"))
Trim(Request.Form("checkcode")) THEN
Re o e.Write
Re o e.End
到此验证码就添加成功了。
(注:此验证码是使用的是动易验证码系统,相关文件已经打包成“验证码.rar”)
就实际的效果来说,验证码只是增加投票的难度,而不可能完全防止重复投票。
还可以在输入验证码的页面设置网页自动刷新,进一步加大投票难度。代码如下:
之间加入如下代码:
content=”5”表示页面每5 秒钟刷新一次
以上各种限制可以有效的防止重复投票,但并不是百分之百准确。对于其他防止投票的技
巧,这里向大家介绍一下:
5.MAC 地址限制
MAC 地址,也叫物理地址,是厂商生产的网卡的地址。形象的说,MAC 地址就如同我
们的***号码,具有全球唯一性。
在 Windows
98/Me 中,依次单击“开始”→“运行”
→输入“winipcfg”→回车。即可看到
MAC 地址。
在Windows 2000/XP 中,依次单击“开始”→“运行”→输入“CMD”→回车→输入“ipconfig
/all”→回车。即可看到MAC 地址。
获取MAC 地址的方法如下(以ASP 为例):
strIP = Request.ServerVariables("REMOTE_ADDR")
strMac = GetMAC(strIP)
构造获取MAC 地址的GetMAC 函数
Function GetMAC(strIP)
Set net = Server.CreateObject("wscript.network")
Set sh = Server.CreateObject("wscript.shell")
程序需要“WSCRIPT.SHELL”组件,服务器必须可以正
常使用这个组件
TempPath="c:\temp\" '临时目录
sh.run "%com ec% /c tstat -A " & strIP & " > " &TempPath trIP & ".txt",0,true
Set sh = nothing
createobject("scripting.filesystemobject")
服 务 器 必 须 可 以 正 常 使 用
“Scripting.FileSystemObject”组件
Set ts = fso.opentextfile(TempPath trIP & ".txt")
macaddre = null
Do While Not ts.AtEndOfStream
data = ucase(trim(ts.readline))
If i tr(data,"MAC ADDRESS") Then
macaddre = trim( lit(data,"=")(1))
Exit Do
ts.close
Set ts = nothing
fso.deletefile TempPath trIP & ".txt"
Set fso = nothing
GetMAC = macaddre End Function
虽然MAC 地址是固化在网卡的EPROM 中的。Windows 在***的时候,会自动从网卡中读
入MAC 地址,存放在注册表中。虽然网卡中的MAC 地址不易修改,但注册表的存储的MAC
地址却可以修改,这样来说,并不能完全防止重复投票。
6.POST 还是GET ?
POST 和 GET 是网页中表单的两种信息传送方式,用 GET 方法传递后,要传递的参数
会附加在接收结果的URL 后,如果要传递名为“name”,值为“1”的变量,那么在URL 的
最后加上“?name=1”
,多个“变量/值”之间用&连接。而使用POST 方法时要传递的信息
不出现在链接中,而是包含在HTTP 请求的头部中,适于传递较长或者需要保密的内容。
表单标记的格式为:
如果投票页面采用GET 方法,可以用在URL 后面附加变量名和值的方法向投票页面反
复提交数据,从而达到重复投票的目的。而如果投票页面采用POST 方法,而没有严格检查
变量来源(没有限制只接收POST 方法传递的变量),也可以构造一个包含要传递变量的URL
反复刷新,进行重复投票。(如:http://www.***.com.cn/vote/vote.a ?voteid=2
,voteid=2 表
示给第二名选手投票)
由此可知,只要投票页面采用POST 方法,并限制只接收POST 方法传递的变量,就可
以防止以上构造URL 重复投票的方法了。代码如下:
method = request.servervariables("REQUEST_METHOD")
获取页面传递信息的方式:POST or GET
If method
"POST" Then
re o e.Write
如果不是采用POST 方法,则不能投票,弹出“请通过正常方式投
票”的对话框,并跳转至另外的页面
url = request.ServerVariables("HTTP_REFERER")
'获取上页地址
Dim regEx, retVal
Set regEx = New RegExp
regEx.Pattern = "http://www.***.com.cn/vote/index.a "
URL 为投票主页面
regEx.IgnoreCase = True
retVal = regEx.Test(url)
if not retVal then
re o e.Write
只能从投票主页面点击投票,对于通过其他页面或者构造URL 传
递数据投票的方法,弹出“请通过正常方式投票”的对话框,并跳转至另外的页面
连接数据库,使投票数加1 并更新数据库相应的字段
通过构造包含要传递变量的URL 来投票的方法都需要一个前提:投票网站接收结果的URL。
如:http://www.***.com.cn/vote/vote.a 在此基础上构造包含变量的URL(vote.a ?voteid=2)
而投票网站接收结果的URL 是Form 标记中Action 属性的值,如何防止这部分信息泄露呢?
①.对网页源代码进行加密。
②.在网页中加入禁止右键的JS 代码,可防止一部分用户查看源文件。
7.用户信息验证
对某些网站来说,只有注册为本网站的会员并且登录后才可以投票,甚至可以限制新用
户注册X 小时后才可以投票。
这样通过增加投票的复杂程度,既可以防止刷票,又在一定程度上增加了网站流量。
既然技术手段上做不到完全防止重复投票,可以尝试社会工程学。投票系统给投票者一个可以投
很多票的假相,而实际上系统已经在后台区分出来哪些是无效的票,但是不能直接告诉投票者。
(社会工程学:社会工程学(Social
Engineering),一种通过对人的心理弱点、本能反应、好奇心、
信任、贪婪等心理陷阱进行诸如欺骗等手段,取得自身利益的手法。)
综上所述,完全做到防止重复投票在技术上是不可能实现的,或许网络投票本身就是错误的,或
许网络投票“醉翁之意不在酒”——目的是宣传活动、提高网站的点击率。 gt 网络人气谁最高 在线投票之我见(7种方式防止网络刷票).doc
今日免费精品文档
原价:
3.60豆元
0豆元
转帖至
播放器加载中,请稍候...
相关文档
热度:
热度:
热度:
热度:
热度:
热度:
热度:
热度:
热度:
热度:
热度:
热度:
热度:
热度:
该用户其他文档
等级:
分享于 2010-09-01 10:47
文档数据
热度:
浏览:
评论:
文档介绍
面对时下很流行的网络投票,由于对投票过程缺少监督机制,不能达到完全公平公正,如何防止刷票成为技术的关键所在,本文通过:IP限制、Cookies验证、Se ion验证、验证码限制、MAC地址限制、POST还是GET、用户信息验证等7种方式来防止刷票程序。
面对时下很流行的网络投票,由于对投票过程缺少监督机制,不能达到完全公平公正,如何防止刷票成为技术的关键所在,本文通过:IP限制、Cookies验证、Se ion验证、验证码限制、MAC地址限制、POST还是GET、用户信息验证等7种方式来防止刷票程序。
文档分类 -- 文档标签
如要提出意见建议,请到
发帖反馈。
校验码: 请输入左侧字符,
评论的时候,请遵纪守法并注意语言文明,多给文档分享人一些支持。
提交评论
Ctrl+Enter快速提交
评论加载中
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
(必填)
例: http://www.docin.com/p-4490冬天向飞雪许下的愿望终于让我深藏于精美的键盘里,唯有睡梦时才浮现的迷人飞雪仍深藏于心。放飞心绪、抒发情怀,自由的翱翔在网络中。 |
| 查看文章 多进程的VBS脚本编写刷票机
2007年01月21日 星期日
03:06 P.M.
朋友要刷票,我帮他写了个刷票的脚本。但是脚本只能单线程的运行,太慢了,于是我用wmi配合写了个模拟多线程的脚本。(其实是多进程的,呵呵)
----------------CODE------------------------
'created y 千寂孤城
set hell=createobject("wscript.shell")
set http=createobject("Microsoft.XMLHTTP")
'获得"wscript.exe"进程的数量
for each i getobject("winmgmts:\\.\root\cimv2:win32_proce ").i tances_
if .name="wscript.exe" the a=a+1
if a=5 the '默认的5进程,如果不足5个就运行一个自己
shell.ru "wscript.exe """&am wscript.scriptfullname&am """"
else '第六个不参与刷票,用来退出程序
msgbox "按确定退出程序!",,"多进程刷票机 ——By 千寂孤城"
shell.ru "taskkill /F /IM wscript.exe",0
wscript.quit
' 开始刷票
http.ope "POST","http://***/lookover.php?R1=2",false
http.send
-------------------------------------------------------------------
当然你可以不这么麻烦,直接多双击几次就多进程了,Ctrl+Alt+Del呼出任务管理器把wscript.exe全结束了就退出程序了。
所以我写的程序只是一个思路。
| 浏览(
| (1) 最近读者: 网友评论:
发表评论: 内 容: 2011 Baidu
偶太笨了,完全没看明白,能不能说得详细点。。。新手上路, 积分 0, 距离下一级还需 2 积分
消费积分
发表于 2008-2-7 16:15:56
为了方便大家为公会投票,为公会拿到更多的内测帐号(也是为我们)小弟偶特意设计了这款高科技,现代化的投票脚本。有了他,不管你是去上厕所了,还是去吃饭,或者去睡觉,只要你的电脑开着,你就能持续不间断的为公会投票。好了,不罗嗦了,现在开始教程。 1:打开按键精灵,点左上角的新建 2:进入脚本编辑器,点击上方的抓点抓色" 3:把鼠标移动到桌面上的“宽带连接然后同时按下ctrl+alt+1 这样 我们第一个坐标点就设置完成了。:13yctct 4:双击“宽带连接”,把鼠标移动到连接的位置,然后同时按下ctrl+alt+2设置第二个坐标点。(在这里我们默认为你的电脑现在没有连接网络) 5:把鼠标移动到网页上,在我们YOY的投票按键上,设置第三个坐标点,也就是ctrl+alt+3(最好不要让网页把“宽带连接”图标的位置给挡住,有可能会发生冲突。) 6:再次打开宽带连接,把鼠标移动到断开的位置,设置第四个坐标点,ctrl+alt+4 7:设置完了坐标点,关掉“抓点抓色”窗口,回到”脚本编辑器“,开始正式的编辑我们的脚本,首先找到鼠标命令,这里的P1:x=263 y=260就是我们第一个坐标点,单击插入,然后在上面一栏的执行次数,我们设置为2次,再点插入。 8:因为网络不稳定的原因,我们再添加一个每个步骤间所需要延迟的时间,在“其他命令”的第一栏,我们找到延时,个人建议设置为3秒,如果网络状况不好的,可以把时间设置的更长一点。这样方便你的整个脚本更流畅的运行。 9:就这样,一部一部把我们先前设置好的坐标点插入进去,每次鼠标动作后都需要设置延迟时间,最后再投票过后也就是第3个坐标点的最后设置一个Enter也就是回车,以关闭网站弹出来的窗口。这是我做完过后的效果图。(Enter在左边那栏最上面的按键那里设置) 10:在“脚本编辑器”最右边的地方找到脚本循环,单击最右边的键 11:然后勾上第二个选项,确定后回到”脚本编辑器“单击最上面的保存退出。 现在,终于做好了我们的脚本了,先把按键精灵最小化,最好让桌面干净一点,只留下投票窗口就行。 然后按F10,看看,发生了什么。希望大家能多为公会投上几票,让更多的兄弟并肩作战。 投票地址: 按键精灵下载地址:
本帖最后由 永毅0旋律 于 2008-2-7 16:39 编辑
当前离线
注册时间
2008-1-28
最后登录
2011-5-14
在线时间
98 小时
阅读权限
消费积分
发表于 2008-2-7 16:28:07
占个位置慢慢看~~~
当前离线
注册时间
2007-10-2
最后登录
2010-9-19
在线时间
141 小时
阅读权限
消费积分
发表于 2008-2-7 16:33:11
在我们TOG的投票按扭上??你到底是干什么的啊?:27yctct
当前离线
注册时间
2008-1-28
最后登录
2011-5-14
在线时间
98 小时
阅读权限
消费积分
发表于 2008-2-7 16:36:31
我看是UFO~~~~~
当前离线
注册时间
2008-2-7
最后登录
2008-4-20
在线时间
阅读权限
新手上路, 积分 0, 距离下一级还需 2 积分
消费积分
发表于 2008-2-7 17:21:04
:1yct3ct 从我旁边机子的哥们,转来的经验贴。
当前离线
注册时间
2007-6-3
最后登录
2011-4-8
在线时间
621 小时
阅读权限
消费积分
发表于 2008-2-7 18:07:03
:30yctct :30yctct :30yctct 厉害啊....
您需要登录后才可以回帖
发表回复
回帖后跳转到最后一页
) GMT+8, 2011-8-2 12:46
, Proce ed in 0.094544 second(s), 20 queries
Powered by
2001-2011
积分 0, 距离下一级还需