很长时间不更新了,写了个“海大学分助手”
最近因为课业关系,用VC比较频繁。昨天选课时发现原来学分和绩点的计算是那么的复杂耗时。
不过发扬DIY精神,用程序解决问题。
一时兴起,开始研究学校教务系统,写了个“学分助手”。希望能对同学们有所帮助。
编写时间仓促,Bug在所难免,请谅解。

计算绩点使用的是INI文件来识别课程是否为学位课。预置计算机科学与技术系的学位课程设置。其它的需要手动更改。课程代码=0/1(0:非学位课,可不添加1:学位课)
程序下载:/Files/sundic/HaiDaXueFenZhuShou.rar

学校的教务系统还真是复杂。用VisualSniffer监听,得到的数据包复杂的要死。
登陆Request除了要WebUserNo、PassWord和Agnomen外,居然还要包括Session和Cookie的ID。POST请求最后还需加上Session时间(似乎是 -_-!)
不过验证码这个还好获得,查看教务系统源文件就能发现,验证码地址是ACTIONLOGON.APPPROCESS?mode=3。
登陆请求包发送目的是...mode=4。
不过真的需要发送如此复杂的动态数据包么?难道就没有用地址组合的方法来登陆?
有的。通过MODE值来寻找发现用数据包的最后一行的3个必要变量替换网址中的mode=N即可实现登陆到查询中心。
只要用户登陆成功不管登陆的哪个页面,服务器的Session就会保持对该程序的信息保存。然后我就可以通过查询成绩的地址来获取成绩的HTML源文件。
下面就是分析源文件,并编写为一个分析器即可。
通过编程,学会了CInternetSession的基本操作。不过对于如何发送复杂HTTP数据包还是不清楚,希望大家指点。
应该是打开目的地址的80端口,然后发送吧。但是数据头和编码方式怎么发送?另外就是cookie的ID以及Session的时间对照XY怎么获得?
还是要慢慢学习啊。