微信投票指南-教你如何微信投票点赞投票网络投票群方法 微信投票指南-教你如何微信投票点赞投票网络投票群方法

微信投票指南
教你如何微信投票点赞投票网络投票群方法

qq群可以投票微信吗 干货


一、前言相信大家平时肯定会收到朋友发来的链接,打开一看,哦qq群可以投票微信吗,需要投票。投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈qq群可以投票微信吗,您的IP(***.***.***.***)已经投过票了,不能重复投票。这时候,我们可能会想,能不能突破ip地址的限制进行刷票呢?有了这样的想法,那就去做吧,下面我将介绍我这个简单的刷票系统,仅供有需求的园友们参考。二、系统设计系统主要实现的是突破IP限制进行刷票,其中,由IP采集模块负责从互联网上爬取代理IP,放入阻塞队列,该任务会定期执行。之后由投票模块从阻塞队列中获取IP,并进行设置,然后进行投票。系统流程图如下:三、系统技术系统使用HttpClient+JSoup+多线程来完成刷票,HttpClient用于进行投票,JSoup用于解析页面,多线程技术用于分离任务,使得分工更加明确。使用到了生产者消费者模式,该模式直接使用BlockingQueue来实现。四、系统介绍系统主要分为三个模块:①IP采集模块②投票模块③IP信息模块其中,IP采集模块主要是从互联网爬取IP代理信息,并将该信息放入阻塞队列,这样就可以伪造IP,进行多次投票。其中,投票模块从IP采集模块放入阻塞队列取出IP信息,并设置代理,找到投票入口地址,然后进行投票操作。其中,IP信息模块主要是对爬取的IP信息进行了封装,方便其他模块进行操作。4.1IP采集模块IP采集模块流程图如下几点说明:1.系统使用的代理IP站点URL为http://www.kuaidaili.com/,www.xicidaili.com。2.提取IP信息为提取单条IP信息,并判断历史IP表是否已经存在,若存在,表示之前已经加入过此IP信息,则直接丢弃,反之,则加入队列并加入历史IP表。3.此任务会定期开启,如一个小时爬取一次代理IP。4.2投票模块投票模块流程图如下几点说明:1.投票网站http://www.hnxdf.com/vote/,我们选取的第一位进行投票,分析出投票的入口为http://www.hnxdf.com/vote/iRadio_vote.asp?VoTeid=215。2.根据IP采集模块放入队列的IP信息进行设置,然后进行投票。4.3IP信息模块此模块主要对从网站爬取的IP信息进行了封装,方便其他模块进行操作。五、系统代码框架系统的整个代码框架如下其中,bean包的IpInfo封装了爬取的IP信息。其中,entrance包的Vote为系统的入口。其中,thread包的IPCollectTask为爬取代理IP任务,VoteThread为进行投票线程。六、系统代码1.IpInfo.javapackagecom.hust.grid.leesf.bean;publicclassIpInfo{publicIpInfo(StringipAddress,intport,Stringlocation,StringanonymousType,Stringtype,StringconfirmTime){this(ipAddress,port,location,anonymousType,type,confirmTime,null,null);}publicIpInfo(StringipAddress,intport,Stringlocation,StringanonymousType,Stringtype,StringconfirmTime,StringgetPostSupport,StringresponseSpeed){this.ipAddress=ipAddress;this.port=port;this.location=location;this.anonymousType=anonymousType;this.type=type;this.confirmTime=confirmTime;this.getPostSupport=getPostSupport;this.responseSpeed=responseSpeed;}publicStringgetIpAddress(){returnipAddress;}publicvoidsetIpAddress(StringipAddress){this.ipAddress=ipAddress;}publicintgetPort(){returnport;}publicvoidsetPort(intport){this.port=port;}publicStringgetLocation(){returnlocation;}publicvoidsetLocation(Stringlocation){this.location=location;}publicStringgetAnonymousType(){returnanonymousType;}publicvoidsetAnonymousType(StringanonymousType){this.anonymousType=anonymousType;}publicStringgetType(){returntype;}publicvoidsetType(Stringtype){this.type=type;}publicStringgetConfirmTime(){returnconfirmTime;}publicvoidsetConfirmTime(StringconfirmTime){this.confirmTime=confirmTime;}publicStringgetGetPostSupport(){returngetPostSupport;}publicvoidsetGetPostSupport(StringgetPostSupport){this.getPostSupport=getPostSupport;}publicStringgetResponseSpeed(){returnresponseSpeed;}publicvoidsetResponseSpeed(StringresponseSpeed){this.responseSpeed=responseSpeed;}@Overridepublicbooleanequals(Objectanthor){if(this==anthor){returntrue;}if(anthor==null||getClass()!=anthor.getClass()){returnfalse;}IpInfoipInfo=(IpInfo)anthor;return(this.ipAddress.equals(ipInfo.ipAddress)&&this.port==ipInfo.port&&this.location.equals(ipInfo.location)&&this.anonymousType.equals(ipInfo.anonymousType)&&this.type.equals(ipInfo.type)&&this.confirmTime.equals(ipInfo.confirmTime))&&this.getPostSupport.equals(ipInfo.getPostSupport)&&this.responseSpeed.equals(ipInfo.responseSpeed);}@OverridepublicinthashCode(){inthash=5;hash=89*hash+(this.ipAddress!=null?this.ipAddress.hashCode():0);hash=89*hash+this.port;hash=89*hash+(this.location!=null?this.location.hashCode():0);hash=89*hash+(this.anonymousType!=null?this.anonymousType.hashCode():0);hash=89*hash+(this.type!=null?this.type.hashCode():0);hash=89*hash+(this.confirmTime!=null?this.confirmTime.hashCode():0);hash=89*hash+(this.getPostSupport!=null?this.getPostSupport.hashCode():0);hash=89*hash+(this.responseSpeed!=null?this.responseSpeed.hashCode():0);returnhash;}@OverridepublicStringtoString(){return"ipAddress="+ipAddress+",port="+port+",localtion="+location+",anonymousType="+anonymousType+",type="+type+",confirmTime="+confirmTime+",getPostSupport="+getPostSupport+",responseSpeed="+responseSpeed;}privateStringipAddress;privateintport;privateStringlocation;privateStringanonymousType;privateStringtype;privateStringconfirmTime;privateStringgetPostSupport;privateStringresponseSpeed;}2.Vote.javapackagecom.hust.grid.leesf.entrance;importjava.util.Timer;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.LinkedBlockingQueue;importcom.hust.grid.leesf.bean.IpInfo;importcom.hust.grid.leesf.thread.IPCollectTask;importcom.hust.grid.leesf.thread.VoteThread;publicclassVote{privateBlockingQueueipInfoQueue;privateIPCollectTaskipCollectTask;privateVoteThreadvoteThread;publicVote(){ipInfoQueue=newLinkedBlockingQueue();ipCollectTask=newIPCollectTask(ipInfoQueue);voteThread=newVoteThread(ipInfoQueue);}publicvoidvote(){Timertimer=newTimer();longdelay=0;longperiod=1000*60*60;//每一个小时采集一次iptimer.scheduleAtFixedRate(ipCollectTask,delay,period);//开启投票任务voteThread.start();}publicstaticvoidmain(String[]args){Votevote=newVote();vote.vote();}}3.IPCollectTask.javapackagecom.hust.grid.leesf.thread;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjava.util.TimerTask;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.LinkedBlockingQueue;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;importcom.hust.grid.leesf.bean.IpInfo;publicclassIPCollectTaskextendsTimerTask{privateBlockingQueueipInfoQueue;//连接生产者与消费者的阻塞队列privateListhistoryIpLists;//记录已经获取的ip信息publicIPCollectTask(BlockingQueueipInfoQueue){this.ipInfoQueue=ipInfoQueue;this.historyIpLists=newArrayList();}/***获取www.xicidaili.com的ip地址信息*/publicvoidgetXiCiDaiLiIpLists(){Stringurl="http://www.xicidaili.com/";Stringhost="www.xicidaili.com";Documentdoc=getDocumentByUrl(url,host);//解析页面的ip信息parseXiCiDaiLiIpLists(doc);}/***解析页面的ip信息**@paramdoc*/publicvoidparseXiCiDaiLiIpLists(Documentdoc){ElementseleLists=doc.getElementsByTag("tbody");Elementtbody=eleLists.get(0);//获取tbodyElementstrLists=tbody.children();Elementele=null;for(inti=0;iqq群可以投票微信吗,需解析总共多少页StringbaseUrl="http://www.kuaidaili.com/free/inha/";Stringhost="www.kuaidaili.com";Documentdoc=getDocumentByUrl(baseUrl,host);//解析ip信息parseKuaiDaiLiIpLists(doc);ElementlistNav=doc.getElementById("listnav");//获取listnav下的li列表ElementsliLists=listNav.children().get(0).children();//获取含有多少页的子元素ElementpageNumberEle=liLists.get(liLists.size()-2);//解析有多少页intpageNumber=Integer.parseInt(pageNumberEle.text());//拼接成其他页的访问地址for(intindex=1;index

未经允许不得转载:微信投票指南-教你如何微信投票点赞投票网络投票群方法 » qq群可以投票微信吗 干货
分享到: 更多 (0)