欢迎访问
这里是荆棘的私人博客
螓首蛾眉
记一次英语节投票活动

轩然大佬给的方法,仅整理成文进行分享

学校组织了这么个活动

https://upyun.jsun.limecho.net/2020/12/image-11-1024x536.png!/format/webp/lossless/true

但是我又没有什么七大姑八大姨的,怎么得奖呢?
答案是——刷票

首先可以看到这个网站的判断机制是本地的Session

https://upyun.jsun.limecho.net/2020/12/image-12.png!/format/webp/lossless/true

那么最暴力的办法就是打开浏览器无痕模式,重复投票
那么现在问题来了,能不能做到自动化

简单抓包后可以发现这两个Data值至关重要

https://upyun.jsun.limecho.net/2020/12/image-13.png!/format/webp/lossless/true

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

https://upyun.jsun.limecho.net/2020/12/image-14.png!/format/webp/lossless/true

想要脚本?您在想桃子!


12月14号更新

https://upyun.jsun.limecho.net/2020/12/image-15.png!/format/webp/lossless/true

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)

附上源码下载地址

赞赏

发表评论

textsms
account_circle
email

螓首蛾眉

记一次英语节投票活动
 轩然大佬给的方法,仅整理成文进行分享 学校组织了这么个活动 但是我又没有什么七大姑八大姨的,怎么得奖呢?答案是——刷票 首先可以看到这个网站的判断机制是本地的Sessio…
扫描二维码继续阅读
2020-12-22