项目博客关于

Killer

2020-07个人项目

一个通用的高校教务系统自动选课应用
源码

项目预览

首页首页验证码识别验证码识别
选课时间选课时间选课志愿选课志愿
开始选课开始选课选课成功选课成功

项目亮点

幕后花絮

Killer 是我做过的第一个正式 APP,也是我开始自学前端的起点。

Killer 这个名称是指,它就像是一个选课杀手一样,帮你选到自己心仪的课程。

最初这个项目,只是一个相对简陋的 Python 脚本,只有我自己一个人使用。

后来,我喜欢上一位法语系的小姑娘,就想着做一个能在她手机上安装和使用的 APP,帮她也选上想要的课程,然后便有了这个项目。

当时我在自己的公众号上,也向同学们宣传过 Killer。后来不知道是哪位小可爱,因为自己没选上课,向学校教务处举报了它,我也差点被学校教务处请去“喝茶”……

从那以后,Killer 就对外终止维护了。

有趣的是被人举报后,学校教务处破天荒的在原来的选课流程上添加了验证码。

由于验证码过于变态(字符又是扭曲变形,又是加入各种干扰线和噪点),很多同学好不容易进到选课页面,却因为验证码填错,错过了选课的机会,这也为学校教务处招来了一片骂声。

这个变化对于 Killer 本身而言,也是一个致命的打击:原来的选课脚本完全失效了。

后来,我根据选课验证码的一些特征,找到了对应的 Java 验证码生成库和近似参数,批量生成了 20000 张带标签的验证码,然后训练了一个简易的 CNN 模型。

模型结构模型结构 验证码数据集验证码数据集

模型训练好之后,我又把模型量化成了,适合在移动端部署的 TensorFlow Lite 格式,实现了在端侧离线识别验证码,最终识别率达到了 90% 以上,远高于人类的平均识别准确率。

后来这段验证码识别技术的研究过程,也被作为选题写进了我的本科毕业论文里,算是一段非常有趣的经历。