简易的投票系统以及js刷票思路和方法

早就听说有什么刷票脚本,微博投票等等相关的投票都有某些人去刷票。

试一下吧,兴许自己也会刷票呢?捣鼓了几个小时,终于有所眉目。

(1)投票系统

要刷票,就得先有个投票界面。

当然,可以直接去各个投票网站就行,不过这里还是自己弄个投票页面,方便自己。

页面大致如下 或者 查看演示

照理,界面很简洁,但也基本有了投票的基本功能。

原始规则是:只能投一次票,然后提示成功,然后按钮不可用。

都是原生JS,DOM操作不灵活的可以借此练练手。当然,用jq将会很便捷。

html/css部分

<!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">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<head>
<title>投票系统 & js脚本简单刷票</title>
<style type="text/css">

  *{padding: 0;margin: 0;}
  #wrap{margin: 0 auto; width:600px; text-align: center;}
  .person{position: relative; margin: 20px; float: left;}
  .person h4,
  .person p,
  .person button{margin-bottom: 5px;}
  .person h4{color: blue;}
  .person span{color: red;}
  .person button:hover{cursor: pointer; font-weight: bold;}
  .clear{clear: both;}
</style>

</head>
<body>

<div id="wrap">
<h3>给你的小伙伴投上一票吧</h3>
  <div class="person">
    <h4>one</h4>
    <p>总票数: <span>0</span> 票</p>
    <button>给它投票</button>
  </div>
  <div class="person">
    <h4>two</h4>
    <p>总票数: <span>0</span> 票</p>
    <button>给它投票</button>
  </div>
  <div class="person">
    <h4>three</h4>
    <p>总票数: <span>0</span> 票</p>
    <button>给它投票</button>
  </div>
  <div class="person">
    <h4>four</h4>
    <p>总票数: <span>0</span> 票</p>
    <button>给它投票</button>
  </div>
  <div class="clear"></div>
</div>

js部分

<script type="text/javascript">
function getElemensByClassName(className){  // 通过class获取
  var classArr = new Array();
  var tags = document.getElementsByTagName("*"); //获取所有节点
  for(var item in tags){
    if(tags[item].nodeType == 1){
    if(tags[item].getAttribute("class") == className){
      classArr.push(tags[item]); //收集class匹配的节点
    }
  }
}
  return classArr;
}

function delete_FF(element){  // 在FireFox中删除子节点为空的元素
  var childs = element.childNodes;
  for(var i=0;i<childs.length;i++){
    var pattern = /\s/; //模式匹配,内容为空
    if(childs[i].nodeName == "#text" && pattern.test(childs[i].nodeValue)){  //处理
      //alert(childs[i].nodeName);
      element.removeChild(childs[i]); //删除FF中获取的空节点
    }
  }
}

window.onload = function(){
  var persons = getElemensByClassName("person");
//  alert(persons);
  for(var item in persons){  //遍历所有person,为它们绑定投票事件
    (function(_item){    //匿名函数传入item, 防止因作用域问题导致item总为最后一个
    delete_FF(persons[_item]); //出去FF中空行代表的子节点
    persons[_item].setAttribute("id","person"+(parseInt(_item)+1)); //赋上id

    var childs = persons[_item].childNodes;
    for(var i = 0;i<childs.length;i++){
      //alert(childs[i].nodeName);
      if(childs[i].nodeName == "BUTTON"){  //点击按钮投票
        var oButton = childs[i];
      }
      if(childs[i].nodeName == "P"){  //投票结果更新
        var oP = childs[i];
        var oSpan = oP.getElementsByTagName("span")[0];
      }
    }
    if(oButton != null){
    oButton.onclick = function(){  //事件绑定
      var num = oSpan.innerHTML; //获取票数
      oSpan.innerHTML = (++num); //票数更新
                    // 这时一般我们可能就需要把这个票数num传送给服务器保存,更新时也是和服务器中的num同步
      this.setAttribute("disabled","true"); // 一般只能投票一次的吧
      alert("投票成功,谢谢您的支持");
    };
  }
})(item); // 传入各项person
  }
};
</script>

注释应该比较清晰了,一个简单的投票页面。

(2)刷票脚本实现

刷票脚本,意思就是通过脚本实现投票,怎么实现投票?

通过上面的代码我们知道一般投票就是点击“投票”,从而数据得到处理。

前端有一个票数统计num,后端也有一个票数统计num,它们是同步的,我们无需理会后端的num,因为前端和后端是同步的。

click事件触发时候,js自然会将num同步好。我们要刷票,其实就是触发click事件就行了。

而且,投票系统是别人的页面,我们也无权修改,我们能做的,其实也就是通过js模拟事件的发生。

那自己写好脚本了,该怎么用?

一般就是使用控制台模式,比如FireFox Chrome的控制台,把自己写的脚本放进去,它自会解析执行,处理页面数据。

比如这里的FireBug的控制台里头,左边就是信息展示,右边可以输入js代码。

或者用chrome的控制台也可以,在里边输入js回车执行就好

如果还没使用过这些东西的童鞋可以去搜一下相关知识。

那就写一个简单的刷票脚本吧

首先,我们按照正规方式,假设投票页面不是我们写的,我们要怎么刷票?

我们必然要找出投票的关键点。

用审查元素找一下吧,一般就是那个投票按钮。

点击那个,然后把鼠标移动到投票页面的按钮试试?在页面中搜寻其他标签信息,比如id class等等,方便等会用到。

好,确定好相关信息,id 标签类型等等。

现在,我想给two刷票,每两秒钟就给他投一次。我的目的是让two的总票数要保持大于three的(当然,随你怎么想)

那就开始写代码吧,习惯了jquery,在控制台中也可以直接使用。

或者再旧版本一点的不支持jquery的话,就在代码里边加上:

javascript:(function(url) {
  var s = document.createElement('script');
  s.src = url;
  (document.getElementsByTagName('head')[0] ||
    document.getElementsByTagName('body')[0]).appendChild(s);
})('http://code.jquery.com/jquery-2.1.3.js');

正式开始

1.写一个通用刷票函数

function brushVotes(){  //刷票函数
var t = setInterval(function(){
 var three_num = $("#person3>p>span").text(); //three票数
 var two_num  = $("#person2>p>span").text();  // two票数
 console.info(two_num+" "+three_num);

 if(two_num - three_num < 5){  //要保持领先5票的优势
  $("#person2>button").click().attr("disabled",false); //触发投票的事件click,投完后记得把投票权限拿回来
 }
 if(two_num - three_num == 5){ //5票领先了就此打住
  clearInterval(t);
 }

},2000);
}

使用一个定时器,每两秒执行一次投票事件。领先5票后就暂停。

2.调用刷票函数

初始调用一次,点击运行时,脚本自然就执行了。

然后监听three票数的改变,作出绑定处理。

普通的change事件只有那些表单相关的标签元素才能支持的。我们当然可以把票数中的span改为input标签,让它拥有onchange事件。

但页面是别人的,我们改不了。

所以找啊找,终于找到检测其他诸如div span 等标签内容改变的方法。如果想深入理解这种方法 welcome

brushVotes(); // 刷票
$("#person3>p>span").bind('DOMNodeInserted', function(e) { //three改变则 触发
 brushVotes(); //继续刷票
});

这样一来,three票数改变了,就会自动触发继续刷票。

完整脚本

javascript:(function(url) {
  var s = document.createElement('script');
  s.src = url;
  (document.getElementsByTagName('head')[0] ||
    document.getElementsByTagName('body')[0]).appendChild(s);
})('http://code.jquery.com/jquery-2.1.3.js');

brushVotes(); // 刷票
$("#person3>p>span").bind('DOMNodeInserted', function(e) { //three改变则 触发
 brushVotes(); //继续刷票
});

function brushVotes(){  //刷票函数
var t = setInterval(function(){
 var three_num = $("#person3>p>span").text(); //three票数
 var two_num  = $("#person2>p>span").text();  // two票数
 console.info(two_num+" "+three_num);

 if(two_num - three_num < 5){  //要保持领先5票的优势
  $("#person2>button").click().attr("disabled",false); //触发投票的事件click,投完后记得把投票权限拿回来
 }
 if(two_num - three_num == 5){ //5票领先了就此打住
  clearInterval(t);
 }

},2000);
}

最后,模拟一下

1.进入投票页面,调出Firebug,在控制台右边代码输入区键入完整代码

2.然后先点击左上角的运行,先让two从零开始刷到5. 比three领先5票

这样一直alert到5次

3.然后,模拟性的有人给three投了一票,点击three的按钮

4.检测到three票数有变化了,two继续刷票

5. 最后,刷到6票又暂停了

------------------------------------------------------------------------------------------------------

这就是简单的刷票脚本实现。

通过这个最主要的是要学会怎么使用自己的脚本去操作别人的页面。当然,这和所谓的脚本注入不是一回事..

我们做的只是模拟正常页面的事件,人工的去触发它们。

通过这种机制,不仅可以进行投票系统的刷票,也可以进行暴力验证登录啊..但遇到验证码就亏大发了,也可以所谓的火车票抢票脚本啊..不过那应该涉及到更多知识了。

(0)

相关推荐

  • js脚本编写简单刷票投票系统

    本文实例为大家分享了js刷票投票系统的具体代码,供大家参考,具体内容如下 <!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"> <meta h

  • JSP生成jpeg图片用于投票

    一.前言 本文原作者为Tony Wang ,该文章涉及到文件的读写和jpg图片的自动生成.利用jsp+servlet的技术,jsp调用servlet生成图片. 二.首文件index.jsp如下: <%-- Author: Tony Wang E-mail: lucky_tony@163.net Date: 2001-01-01 如果对程序有什么疑问,可以和我联系, 另外程序如果有什么bug,麻烦指出!! --%><%@ page contentType="text/html;c

  • 基于js实现投票的实例代码

    本文实例讲述了JavaScript实现三种投票方式的实现方法,分享给大家供大家参考.具体如下: 一.js柱状投票图 效果图: 实现代码: <!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

  • 原生JS实现在线问卷调查投票特效

    效果图: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS+CSS实现投票效果</title> <link rel="stylesheet" href="http://hovertree.com/texiao/js/24/style.css"

  • 使用js写的一个简易的投票

    大家直接自己看吧,请多多指教,这个是几个月前写的,现在全部整理一下. 复制代码 代码如下: <!doctype html> <html> <head> <meta charset="utf-8" > <title></title> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/j

  • JSP实现的简单Web投票程序代码

    本文实例讲述了JSP实现的简单Web投票程序.分享给大家供大家参考.具体如下: 这里使用文本文件作为数据存储的投票系统. 1. vote.java: package vote; import java.io.*; import java.util.*; public class vote { public String filePath = ""; public int n; private File voteFile; private BufferedReader fileRead;

  • 9个JavaScript评级/投票插件

    所以,越来越多的门户网站也开始加入评级或投票功能,这里是9个优秀的JavaScript实现的评级投票插件和教材,方便你二次开发和使用. jQuery Start Rating Prototype Starbox Prototype Livepipe Control.Rating Mootool Rabid Rating Favourite rating with jQuery and Ajax How to build a star ratings jQuery Plugin Reddit st

  • 简易的投票系统以及js刷票思路和方法

    早就听说有什么刷票脚本,微博投票等等相关的投票都有某些人去刷票. 试一下吧,兴许自己也会刷票呢?捣鼓了几个小时,终于有所眉目. (1)投票系统 要刷票,就得先有个投票界面. 当然,可以直接去各个投票网站就行,不过这里还是自己弄个投票页面,方便自己. 页面大致如下 或者 查看演示 照理,界面很简洁,但也基本有了投票的基本功能. 原始规则是:只能投一次票,然后提示成功,然后按钮不可用. 都是原生JS,DOM操作不灵活的可以借此练练手.当然,用jq将会很便捷. html/css部分 <!DOCTYPE

  • PHP投票系统防刷票判断流程分析

    近期,我做了一个娱乐门户的投票系统,也是被刷票搞的焦头烂额,一切可用的方法都用了.但都不是太理想,最终,琢磨出来了下面的方法,我做成了流程图与大家分享.看不懂流程的也不要钻牛角了,本人也不做太多无聊的解释,当然,这个流程只是一个大体的过程,中间还有很多的判断,主要运用的还是session.因为什么验证码什么的,那你别用在互联网投票系统中来吧,没有人去验证,一看就烦了.还是那句话,我的WEB开发笔记中写的全是一些简单的思想性的东西,如果想完善,可以自己扩展.本人没有时间解释.以下的流程图中,一定要

  • 网站防止被刷票的一些思路与方法

    1. IP限制 这是使用的最多,也是最广泛,不可少的刷票限制.而且由于专题都没有用户模块,使得这个方法,几乎成了唯一可行的手段.该方式,通过获取访问游客的IP地址,来限制其在一段时间内所能使用的票数.当然,正常访问页面投票的游客,肯定都能很好的被这个手段所限制,但是,各种投票的活动和专题,以及丰厚的奖品,使得一些人想方设法的想要进行刷票. ADSL用户,可以通过断线重拨来更换IP地址. 使用代理访问的用户,我们也无法获得其真实的IP地址. 还有我们未知的刷票工具. 以上都是我们没有办法克服的难题

  • php投票系统之增加与删除投票(管理员篇)

    关于投票系统怎么样怎么样的引言就不多说,这不是毕业设计,主要说一下使用php实现投票系统,与其他普通系统一样,分为两部分,一个是管理员部分,一个是普通用户部分. 关于投票系统的管理部分,非常之简单,提供两部分的功能,增加投票与删除投票 关键在于设计好数据库的表,拟定于这样存一个投票,voteparent表存这个投票的标题.描述是否被删除,votechildren表存这个投票的子选项与投票数 一.基本目标 首先投票系统是这样的: 三个链接,点进去能够直接进行相关功能的操作,本文主写管理员部分,普通

  • php redis实现文章发布系统(用户投票系统)

    本文实例为大家分享了php实现文章发布系统.用户投票系统的具体代码,供大家参考,具体内容如下 /** * @data 文章发布 * 文章详情散列表中递增ID,讲文章发布者ID写入投票用户集合中,设置投票时间为一周 * 讲文章内容写入文章散列中,讲文章写入文章评分有序集合和文章发布有序集合中 * @author Lorne * @date 2017-03-03 */ public function post_article($user){ $VOTE_SCORE = 24; $redis = $t

  • PHP实现简易用户登录系统

    PHP简易用户登录系统,供大家参考,具体内容如下 最近刚刚看到PHP连接数据库的实例,于是做了一个简易的用户系统 直接上代码 连接数据库:connect.php <?php $servername = "localhost"; $username = "formbd"; $password = "formbd"; $dbname = "form"; // 创建连接 $conn = new mysqli($serverna

  • C语言实现投票系统

    本文实例为大家分享了C语言实现投票系统的具体代码,供大家参考,具体内容如下 问题: 某个班级有3个候选人,有6个同学参与投票,而且只能投一个人,要求编写统计选票的程序.先输入候选人名字,再输入同学所投的候选人名字,最后根据每位候选人的得票数排序 思路: 先定义一个学生结构体 stduent,结构体中包含姓名,票数. 同时声明结构数组stu[N - 1],里面存放候选人信息 输入候选人的姓名,开始投票.如果输入的字符串和候选人的姓名一样,就累加. 之后,用冒泡排序.最后输出排完序票数. 个人感觉我

  • PHP实战之投票系统的实现

    目录 一.实现代码 1.sql 2.html 3.admin.php(增删改查投票的页面)密码:admi 4.index.php投票的页面 二.效果图 一.实现代码 1.sql -- phpMyAdmin SQL Dump -- version 4.5.1 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2022-03-28 05:42:05 -- 服务器版本:10.1.13-MariaDB -- PH

  • PHP+MySQL实现的简单投票系统实例

    本文实例讲述了PHP+MySQL实现的简单投票系统.分享给大家供大家参考,具体如下: <html> <head><title>手机系统调查问卷</title> <style type="text/css"> <!-- span{ width:600px; height:100px; background-color:write; postion:relative; border:1px #cccccc solid; }

随机推荐