0%

zjut2016级实习讲座抢票

使用nonebot+酷q和问卷星抢票脚本进行一次很有意思的尝试

学校向2016级学生开设了16选8的讲座,每次的票数是固定的,需要填写问卷星问卷来抢。
1.每次讲座信息发布在早上9:30左右
2.填写信息固定为姓名、学号、联系方式

本来没必要写一个抢票脚本,但最近一次的抢票失败让我觉得有必要进行下有趣的尝试,想着九点半要抢票,但因为一些事情错过了两分钟,再填写就发现没有名额了,非常难受。

明确基本步骤:
1.实时获取群里发布的链接
2.自动post信息,并返回提交成功与否的结果

以前操作qq和wx都是用python qqbot和wxpy这两个库,但因为qqbot是基于webqq的协议,而腾讯在今年年初调整了业务,关闭了webqq,自然也就没有api可以满足我们的需求了,需要另寻它法。
这里使用酷q和nonebot库进行群消息的收集
酷q官网
https://cqp.cc/
nonebot官网
https://none.rclab.tk/
nonebot可以直接通过pip下载

1
pip install nonebot

在登录酷q后,运行nonebot,发现nonebot正常工作(关于nonebot的使用可以参考官网的开发文档,非常详细)

当向qq发送一条信息,控制台会回显发送的信息

但nonebot似乎是专为交互式机器人设计,接口都用于实现命令反馈,没有直接可以返回聊天信息的接口,所以我在这里定位到nonebot源码里的parse_command函数,进行了一些修改,从而将问卷星问卷的问卷号写入文件,代码的健壮性不高,仅仅针对群里发的这种格式

写入成功

良好的开端是成功的一半,嗯,我们现在已经完成了二分之一的工作了
有了问卷号,接下来就是post数据的过程,26号中午,wyk大佬问我对抢票有没有兴趣,我这时已经完成了获取链接的步骤,而他正巧也找到了抢票的脚本,并进行修改,在不使用cookies的情况下使用验证码识别自动化提交数据,我们俩一拍即合,最终完成了自动化抢票,想来也只用了半天的时间。
测试一下效率,发现基本上都在几秒钟内完成填写

最终的代码发布在
https://github.com/lockcy/zjut2016lecture