手机版

简单投票系统和js票务的思路和方法

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

早就听说有一些剧本刷票,比如微博投票之类的,也有人去刷票。

试试看。也许你可以自己刷票?经过几个小时的努力,我终于有所收获。

(一)投票制度

刷票首先要有投票界面。

当然,你可以直接去每个投票网站,但在这里你可以获得一个投票页面,以方便自己。

页面大致如下或查看演示

界面原则上很简单,但基本具备投票的基本功能。

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

都是原生JS。如果DOM操作不灵活,可以借此机会练练手。当然,使用jq会非常方便。

Html/css部分

!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www . w3 . org/TR/XHTML 1/DTD/XHTML 1-Transitional . DTD ' html xmlns=' http://www . w3 . org/1999/XHTML ' meta http-equiv=' Content-Type ' Content=' text/html;投票系统Charset=utf-8'/headtitle js脚本简单刷票/title style type=' text/CSS ' * { padding : 0;margin : 0;} # wrap { margin: 0 auto宽度width:600px文本对齐:中心;} .person{position:相对;margin: 20px向左浮动:} .人h4,人p,person按钮{ margin-bottom : 5px;} .人h4{color:蓝色;} .person span { color: red} .person button : hover { cursor :指针;font-weight:粗体;} .清除{clear:两者;}/style/headsdydiv id=' wrap ' H3投票给你的小朋友/H3 div class=' person' h4one/H4托特选票:span0/span选票/p button投票给它/button/div class=' person ' h4two/H4托特选票:span0/span选票/p button投票给它/button/div div class=' person ' h4four/H4托特选票:span0/span

脚本类型=' text/JavaScript '函数getelemensbyclassname(class name){//通过类获取varclasserr=new array();var tags=document . getelementsbytagname(' * ');//获取(var item in tags) {if (tags [item])的所有节点。nodetype==1) {if (tags [item])。getattribute(' class ')==class name){ class sarr。push(标记[项目]);//收集类匹配的节点}}}返回classerr}函数delete_FF(element){ //删除FireFox中子节点为空的元素var childs=element.childNodesfor(var I=0;ichil ds . length;I){ var pattern=/\ s/;//模式匹配,内容为空if (children [I])。nodename==' # text ' pattern . test(children[I])。node value)){//正在处理//alert(子级[I]。nodename);element . remove child(childs[I]);//删除在FF } } } window . onload=function(){ var persons=getelemensbyclassname(' person ')中获取的空节点;//警戒(人员);For(var item in persons){ //遍历所有人员并为其绑定投票事件(function(_item){ //匿名函数传入item,防止item因作用域问题始终是最后一个delete _ FF(persons[_ item]);//前往子节点persons [_ item]。FF中空行表示的setattribute ('id ',' person '(par sent(_ item)1));//分配id var children=persons [_ item]。childnodesfor(var I=0;ichil ds . length;i ){ //alert(childs[i]。nodeName);如果(查尔兹[我]。nodename==' button '){//点击按钮投票var oButton=childs[I];} if (childs [I]。node name==' 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的setattribute ('disabled ',' true ');//一般只能投一次票。alert(‘投票成功,感谢支持’);};}})(项);//传入人员} };/脚本注释应该清晰,一个简单的投票页面。

(2)刷票脚本的实现

刷剧本就是通过剧本投票。怎么投票?

通过上面的代码,我们知道一般的投票是点击“投票”,这样数据就可以处理了。

前端有票数num,后端也有票数num,都是同步的。我们不需要关注后端的num,因为前端和后端是同步的。

当点击事件被触发时,js自然会同步num。我们需要刷卡,这实际上只是为了触发点击事件。

而且投票系统是别人的页面,我们无权修改。我们能做的就是通过js来模拟这个事件。

然后自己写剧本,怎么用?

通常,您使用控制台模式,如FireFox Chrome控制台,并在其中放置自己的脚本。它将解析、执行和处理页面数据。

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

或者你可以使用chrome的控制台,只需输入js就可以进入并执行它

如果童鞋没有用过这些东西,可以搜索相关知识。

然后写一个简单的刷票脚本

首先我们按照正常的方式,假设没有写投票页面,怎么刷票?

我们必须找出投票的要点。

用review元素查找它,通常是投票按钮。

点击那个,然后把鼠标移到投票页面的按钮上试试?在页面中搜索其他标签信息,例如id类,这将用于方便。

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

现在,我想刷两张票,每两秒钟投他一票。我的目标是保持两个人的总票数大于三个人(当然,想你想要的)

开始写代码,习惯jquery,直接在控制台使用。

或者,如果旧版本不支持jquery,请添加:

javascript:(函数(URL){ var s=document . createelement(' script ');s.src=url(document . getelementsbytagname(' head ')[0]| | document . getelementsbytagname(' body ')[0])。appendChild})(' http://code . jquery.com/jquery-2 . 1 . 3 . js ');

正式开始

1.写一个刷票的通用函数

function brush选票(){ //brush选票function var t=set interval(function(){ var three _ num=$(' # person 3ps pan ')。text();//三票vartwo _ num=$(' # person 2 pan ')。text();//两票console . info(two _ num ' ' three _ num);If(two_num-three_num 5){ //保持领先5票的优势$ ('# person2button ')。单击()。attr ('disabled ',false);//触发投票的事件点击,记得投票后拿回投票权}如果(two_num-three_num==5){ //5票领先,那么停止clearInterval(t);} },2000);}使用计时器每两秒钟执行一次投票事件。领先5票后暂停。

2.调用刷票功能

一旦您最初调用它,单击运行,脚本将自然执行。

然后听三票的变化,做绑定处理。

普通的变更事件只能由与表单相关的标签元素支持。当然,我们可以更改投票中输入标签的跨度,这样它就有了onchange事件。

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

所以,经过搜索,我终于找到了检测div span等其他标签变化的方法。如果你想深入了解这个方法,欢迎

brush ROOTs();//刷票$ ('#人3ps pan ')。bind(' DOM node insert ',函数(e){//三次修改,它触发brush lows();//继续刷票});这样,如果三票数量发生变化,就会自动触发继续刷票。

完整的脚本

javascript:(函数(URL){ var s=document . createelement(' script ');s.src=url(document . getelementsbytagname(' head ')[0]| | document . getelementsbytagname(' body ')[0])。appendChild})(' http://code . jquery.com/jquery-2 . 1 . 3 . js ');brush ROOTs();//刷票$ ('#人3ps pan ')。bind(' DOM node insert ',函数(e){//三次修改,它触发brush lows();//继续刷票});function brush选票(){ //brush选票function var t=set interval(function(){ var three _ num=$(' # person 3ps pan ')。text();//三票vartwo _ num=$(' # person 2 pan ')。text();//两票console . info(two _ num ' ' three _ num);If(two_num-three_num 5){ //保持领先5票的优势$ ('# person2button ')。单击()。attr ('disabled ',false);//触发投票的事件点击,记得投票后拿回投票权}如果(two_num-three_num==5){ //5票领先,那么停止clearInterval(t);} },2000);}最后模拟一下

1.进入投票页面,调用Firebug,在控制台右侧的代码输入区输入完整的代码

2.然后先点击左上角的Run,让两把刷子从头刷到5。以5票领先三名。

这已经提醒了5次了

3.然后,一个模拟人投了三票,并点击了三个按钮

4.检测到三票数量发生变化,二票继续刷票

5.最后,在6票之后,它被暂停

-

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

最重要的是学会如何用自己的脚本去操作别人的页面。当然,这和所谓的脚本注入是不一样的.

我们所做的就是模拟普通页面上的事件,并手动触发它们。

通过这个机制,你不仅可以在投票系统刷票,还可以暴力验证登录.但是遇到验证码会损失很多,还可以使用所谓的火车票抢票脚本.但是这需要更多的知识。

版权声明:简单投票系统和js票务的思路和方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。