教务系统更新后,验证码成了抢课自动化的最大瓶颈.解决验证码的几种办法大致如下:
- 利用网上的各个打码平台,面临的问题是虽然解决了自动化,但是回传速度慢
- 使用pytesseract,面临的问题是成功率不高,验证码是及其恶心的汉字类型
为了解决这个问题,我也在gayhub上阅读了本校其他人开源的抢课代码,大部分都是检测到有课之后,向系统发送抢课请求,再返回给用户验证码手动输入,实现了抢课的半自动化.
我也没什么好的办法完成全自动,不过可以优化半自动化脚本,大大提高抢课的速度和成功率
办法如下:
我们主要关注一下最后一个请求包,里面的参数主要是验证码和一下课程信息,我们可以知道并控制除了验证码之外的请求包内的其他参数,我们要抢的课一般是没有余量的,但是我们仍然可以向系统去申请一个验证码,我们先手动输入验证码,构造完成抢课数据包,再使用这个会话去不断查询课程余量,当课程有余量的时候,通过一个判断去发送我们构造好的数据包,这样我们就比其他脚本节省出了处理验证码的时间.
思路如上,抢课没有开始,脚本也暂时无法写,处理登录跳转借鉴的海旭之前的脚本,先开个坑..不过有可能因为期末最后没法填坑2333