我用python写过一个,不到50行代码。
当然我们那个没验证码,登录成功就可以选课,所以难度很小。
原理很简单,首先模拟登录,然后想办法保持登陆状态去访问选课页面(我这里用的是requests.Session),找到选课按钮表单提交的url,把需要提交的数据发出去(比方说课程编号,你的学号这些,他要什么你就给什么),然后循环检查页面的状态,(有没有选课成功后的标志,比方说页面的标题变成了“我的课程”这种),没有成功就继续重复。
说一下技术上的几个问题吧
1.模拟登陆requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题。
你需要找到教务网登录按钮提交的地址
把你的学号和密码弄到一个字典里发出去,然后就登录成功了
2.找到选课页面,分析选课页面可以发现,选课页面的url一般是一个前缀加课程序号加乱七八糟的东西,所以你需要手动输入课程序号等等然后拼接url,再访问。
3.访问成功了以后同理,再寻找选课按钮提交的地址,再把需要POST的数据全部放在一个字典里,发出去,检查页面状态,没有成功继续循环。
大概就是这样,不过建议你还是不要大肆宣传,要低调使用,因为这个访问频率太高,很可能搞崩教务处的服务器。还有我也不确定你们学校的教务处开发水平怎么样,如果可以到检测你是不是用了抢课软件,那就悲剧了....