首先说明一下,这个刷票器太简单了,所以功能也非常的不强大,只是定时请求某个页面罢了,但是对一些简单的投票,还是可以应付的。
先说一下思路。
在线投票系统,一般的网站上都是无记名的投票,防刷票无非是用IP,cookie等来区分用户是否已经重复投票,这种很容易解决。
禁用cookie,然后换IP就行了,像用adsl拨号上网的都是动态分配IP,断线再上线IP就变了,就可以再投。当然,这是比较笨的方法,最好是搜索足够的代理服务器,通过代理来请求页面。
而我这次碰到的这个投票系统,竟然连IP也不判断,也不加cookie,只是当用户点击投票后关闭窗口。我只需找到投票的请求页面,后面带个参数,一直请求它就行了(疯狂按F5),呵呵。
我当然不会这么做,把键盘按坏了,岂不是亏大了,不如写个代码让它自动请求。但写程序还要编译执行,太麻烦,首先想到用JavaScript来请求就行了。用setInterval定时Ajax请求这个页面就行了,可是考虑到Ajax不能跨域,就想到了用Jquery的$.getScript;但这个东西能不能跨域请求还不清楚,没有试过,但是我知道如果html页面在本地执行,就可以去请求任何网站的页面。
灵机一动,我干吗不用最简单的方法呢,用iframe,然后定时修改它的src值,即便每次赋的值都是一样的,但只要赋src值,Iframe就会重新调用页面一次,哈哈。
很快就写好了,代码如下。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery.js"></script>
<title>Jquery刷票器</title>
<style type="text/css">
<!--
div {
padding: 10px;
border: 1px solid #999999;
margin-top: 10px;
margin-right: 0px;
margin-bottom: 10px;
margin-left: 0px;
}
body {
font-size: 14px;
}
#tbPath {
width: 80%;
}
#tbTime {
width: 80px;
}
#btnEnter {
letter-spacing: 1em;
}
-->
</style>
</head>
<body>
<div>
地址:
<input name="tbPath" type="text" id="tbPath" value="http://www.baidu.com"/>
<br/>
间隔:
<input name="tbTime" type="text" id="tbTime" value="1000" />
毫秒<br/>
<input type="button" name="btnEnter" id="btnEnter" value="确定" />
</div>
<iframe src="" width="100%" height="300" scrolling="auto" id="vote"></iframe>
</body>
</html>
<script type="text/javascript">
$(
function()
{
//确定按钮的事件
$("#btnEnter").click(enterEvent);
}
)
//变量
var number=1000;
var path="";
//确定按钮的事件
function enterEvent()
{
var tbPath=$("#tbPath");
var tbTime=$("#tbTime");
path=tbPath.val();
number=tbTime.val();
//定时调用
setInterval("getUrl()",number);
}
function getUrl()
{
$("#vote").attr("src",path);
//$.getScript(path);
}
</script>
上面代码中用到了Jquery。
把钟红色的字复制下来,保存成网页就行了,但不忘记Jquery的框架包。
需要说明一下,虽然设定时间间隔可以设为1毫秒,但实际上,Iframe并不会那么快的请求,而$.getScript不同,它真的可以每1毫秒请求一次,伤心的是,那个投票站,在被我刷了一会儿后,就打不开了,我真的不是有意的。