对网络投票刷票的研究以及感悟

最近貌似让网络投票的童鞋有点多,于是不带任何恶意的想法去研究了如何刷票的方法,网络上修改http请求字段的方法对于今天遇到的情况是不可取的。于是只剩下一条路:设置代理ip进行刷票,维护免费代理ip的列表,即使是200条,半个小时可以刷一次,自动化的脚本一天也能刷不少票。开发网络投票系统的程序员如何防范这种刷票方式呢?个人拍拍脑袋想出来的方式,也许不太对,但是提供了一些思路:

1)投票时需要提交验证码;

2)使用实名认证投票;

3)另一个是验证IP,如果IP来自国外的,就过滤掉吧(许多代理IP来自国外)。

通过本人所说刷票的方式,这证明了网络投票其实有多不靠谱,可能存在虚假的结果,所以对待网络投票的结果也不要太在意。可是仔细想想,许多投票不也是靠自己的关系圈么,自己认识的人越多,关系圈越广,那么得到票数也就越多,也是人为的去刷票啊,这种结果和自己真正的能力实力究竟有多大的关系呢?当然,中国人自古的思维是靠关系圈生活,堂而皇之的认为,在天朝这个公平性缺失的国度,人脉比能力更重要。既然人脉比能力更重要,那么弄科研的会去努力经营自己的关系圈?他还有多少时间去专心科研?大家都去维护自己的人脉,高朋满座,歌舞升平,吃喝玩乐,那推动社会进步的动力何在?这不能不说这是社会的悲哀。本人不是反对适度的人为交往,而是对现今存在的思想比较反感。

声明:该程序仅作研究之用(提供原形),不用于非法用途。即使是为自己的女神投票,俺也不会这样做哦,毕竟,有失公平(PS:这个社会最需要维护的就是公平),作为希望成为维护网络安全的圣斗士,拯救世界的程序猿,咱的目的是防范刷票的人,设计出更加优秀的投票系统,营造公平的网络环境,让投机分子无机可乘。至于现实中的公平性问题,术业有专攻,就留给人文社会学科的工作者来解决吧。

import urllib .request
import urllib .parse
from urllib .error import HTTPError
def shuapiao ():
 
    url = http://www.0851baby.com/Vote/VoteAdd “
    data = urllib . parse. urlencode ({ ‘detailId’ :242 , ‘voteId’ :1 })
    data = data . encode( “utf-8″ )
    proxy = urllib. request .ProxyHandler ({“http” : “http://111.13.55.3:22 })
    opener = urllib . request .build_opener (proxy )
    urllib .request . install_opener (opener )
    re = urllib . request .Request (url )
    re .add_header ( “Accept” ,“application/json, text/javascript, */*; q=0.01″)
    re .add_header ( “origin” ,“Origin: http://www.0851baby.com )
    re .add_header ( “X-Requested-With” ,” XMLHttpRequest” )
    re .add_header ( “User-Agent” , “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; MyIE9; BTRS123646; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)” )
    re .add_header ( “Content-Type” ,“application/x-www-form-urlencoded” )
    re. add_header (“Referer” , “http://www.0851baby.com/VotePage/VoteDetail/242 “)
    re .add_header ( “Accept-Encoding” , “gzip, deflate” )
  
    re .add_header ( “Accept-Language” , “zh-CN,zh;q=0.8″ )
    re .add_header ( “Connection” , “Keep-Alive” )
    try :
        req  = urllib .request .urlopen ( re, data )
    except HTTPError as e:
        content = e. read ()
        print ( content )
  
if __name__ == “__main__” :
    shuapiao ()