轩然大佬给的方法,仅整理成文进行分享
学校组织了这么个活动

但是我又没有什么七大姑八大姨的,怎么得奖呢?
答案是——刷票
首先可以看到这个网站的判断机制是本地的Session

那么最暴力的办法就是打开浏览器无痕模式,重复投票
那么现在问题来了,能不能做到自动化?
简单抓包后可以发现这两个Data值至关重要

那么简单地用Python写个小脚本就完事了
(混淆年级参数是由于一次只能投三票,所以在给定的年级随机抽取班级投票,就不会影响到刷票班级的名次了)

想要脚本?您在想桃子!
12月14号更新

12月15号更新
写代码的时候忘记截图了,幸亏在学校胡老师那里问到了网站源码。简要写下教程
首先是班级代码查找,其实每个班级的html标签里面自带了一个for的参数其实也可以在投票的时候抓包记录
<label for="@("xx"+item.id)"> @Html.Raw(item.xxname+" "+item.shenhe.ToString())</label>
使用强大的BeautifulSoup爬虫,可以非常简单地获取
soup1=BeautifulSoup(req_get.text,"html5lib") lable_list = soup1.find_all('label') for label in lable_list: print(label.get('for')[2:5],end=" ")
但是碍于投票机制是一次只能投三个班级,并且不能重复,于是就有了混淆年级选项。
原理很简单,就是在选定年级获取两个班级投票,这样平均分给一个年级就不会影响刷票班级了
if confuse=="1": vote_id2=random.randrange(134,137) vote_id3=random.randrange(vote_id2+1,141) elif confuse=="2": vote_id2=random.randrange(142,145) vote_id3=random.randrange(vote_id2+1,149) elif confuse=="3": vote_id2=random.randrange(150,153) vote_id3=random.randrange(vote_id2+1,157)
最麻烦的是Token,第一天误以为是藏在Cookies里面,找了好久,最后请教了轩然大佬,原来是隐藏在一个input标签里
好家伙,其实是这句话
<input type="hidden" value="@hd.huodongid" name="hdid" />
继续爬虫
tmp_token = soup2.input.get('value')
最后Post一下,一次投票就完成了
post_data = (('__RequestVerificationToken',tmp_token),('hdid','8'),('xxs',int(vote_id1)),('xxs',vote_id2),('xxs',vote_id3)) res_post = ses.post("http://42.192.199.237/mng/Author/Toupiao/8",data=post_data)
附上源码下载地址
发表评论