天天看点

【小型系统】简单的刷票系统(突破IP限制进行投票)

一、前言  

  相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票。投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了,不能重复投票。这时候,我们可能会想,能不能突破ip地址的限制进行刷票呢?有了这样的想法,那就去做吧,下面我将介绍我这个简单的刷票系统,仅供有需求的园友们参考。

二、系统设计

  系统主要实现的是突破IP限制进行刷票,其中,由IP采集模块负责从互联网上爬取代理IP,放入阻塞队列,该任务会定期执行。之后由投票模块从阻塞队列中获取IP,并进行设置,然后进行投票。系统流程图如下:

【小型系统】简单的刷票系统(突破IP限制进行投票)

三、系统技术

  系统使用HttpClient + JSoup + 多线程来完成刷票,HttpClient用于进行投票,JSoup用于解析页面,多线程技术用于分离任务,使得分工更加明确。使用到了生产者消费者模式,该模式直接使用BlockingQueue来实现。

四、系统介绍

  系统主要分为三个模块:

  ① IP采集模块

  ② 投票模块

  ③ IP信息模块

  其中,IP采集模块主要是从互联网爬取IP代理信息,并将该信息放入阻塞队列,这样就可以伪造IP,进行多次投票。

  其中,投票模块从IP采集模块放入阻塞队列取出IP信息,并设置代理,找到投票入口地址,然后进行投票操作。

  其中,IP信息模块主要是对爬取的IP信息进行了封装,方便其他模块进行操作。

  4.1 IP采集模块

  IP采集模块流程图如下

【小型系统】简单的刷票系统(突破IP限制进行投票)

  几点说明:

  1.系统使用的代理IP站点URL为http://www.kuaidaili.com/,www.xicidaili.com。

  2.提取IP信息为提取单条IP信息,并判断历史IP表是否已经存在,若存在,表示之前已经加入过此IP信息,则直接丢弃,反之,则加入队列并加入历史IP表。

  3.此任务会定期开启,如一个小时爬取一次代理IP。

  4.2 投票模块

  投票模块流程图如下

【小型系统】简单的刷票系统(突破IP限制进行投票)

  1.投票网站http://www.hnxdf.com/vote/,我们选取的第一位进行投票,分析出投票的入口为http://www.hnxdf.com/vote/iRadio_vote.asp?VoTeid=215。

  2.根据IP采集模块放入队列的IP信息进行设置,然后进行投票。

  4.3 IP信息模块

  此模块主要对从网站爬取的IP信息进行了封装,方便其他模块进行操作。

五、系统代码框架

  系统的整个代码框架如下

【小型系统】简单的刷票系统(突破IP限制进行投票)

  其中,bean包的IpInfo封装了爬取的IP信息。

  其中,entrance包的Vote为系统的入口。

  其中,thread包的IPCollectTask为爬取代理IP任务,VoteThread为进行投票线程。

六、系统代码

  1.IpInfo.java

【小型系统】简单的刷票系统(突破IP限制进行投票)
【小型系统】简单的刷票系统(突破IP限制进行投票)

View Code

  2.Vote.java

【小型系统】简单的刷票系统(突破IP限制进行投票)
【小型系统】简单的刷票系统(突破IP限制进行投票)

  3.IPCollectTask.java

【小型系统】简单的刷票系统(突破IP限制进行投票)
【小型系统】简单的刷票系统(突破IP限制进行投票)

  4.VoteThread.java

【小型系统】简单的刷票系统(突破IP限制进行投票)
【小型系统】简单的刷票系统(突破IP限制进行投票)

七、系统总结

  此系统很简单,想清楚思路之后很快就能够写出代码,系统运行时,由于代理IP站点提供的免费IP质量不是太高,有效的IP地址还是很少,所有效果不是特别理想,此系统功能也很简单,但是各位园友可以在此基础上去发挥自己的想象力,定制属于自己的投票系统。

八、总结

  至此,整个系统分析就已经完成了,其中,图也画得不是太规范,还请各位园友海涵。也谢谢各位园友观看。

  ps:整个工程(包含必要的jar文件)已经上传到GitHub上,欢迎各位园友访问:https://github.com/leesf/TicketBrushSystem

  

PS:如果您觉得阅读本文对您有帮助,请点一下<b>“推荐”</b>按钮,您的<b>“推荐”</b>,将会是我不竭的动力!

作者:<b>leesf</b>    <b>掌控之中,才会成功;掌控之外,注定失败。</b>

出处:http://www.cnblogs.com/leesf456/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

如果觉得本文对您有帮助,您可以请我喝杯咖啡!

【小型系统】简单的刷票系统(突破IP限制进行投票)
【小型系统】简单的刷票系统(突破IP限制进行投票)