编辑点评:
某省水利专业技术人员在线学习系统自动学习程序是一款浙江省水利人员在线学习系统助手,就是网上的供在线继续教育学习,可以帮助在线自主学习,可以后台运行,不影响其它工作。
分析说明
让看看某省的水利专业技术人员在线学习可不可以自动学习,今天有空分析了一下:
先分享下我分析网站流程和思路,工具我一般用Fiddler,简单强大,像这种学习类的网站 ,通常都是登录网站、显示课程列表、点开后课程详情、然后是学习课程、考试这样一个流程。
这些流程当中,一般又数登录、学习和考试会有些难度,这个具体情况具体分析。
网站登录:一般会有验证码,这个不难,读出图片然后照着提交就可以,如果要做批量自动登录则还需要弄验证码识别。另外还有参数数据加密,通常的只是会用md5加密一下密码,难一点的就需要分析JS了。
课程学习:通常的大概有几种情况
简单一点的网站,学习时定时保存一个进度或者是已学时间,如果达到需要学习的要求时间则返回学习完成。
复杂一点的会中途间隔一段时间会弹出提示要求保存,否则学习无效。
再有就是禁止多个课程同时学习的,服务器通常使用一个公共变量来保存在学课程的ID,再结合服务端计时而非客户端计时,这样就使得多个课程同时学习和秒学都无法实现,但我们可以制作一个只需要登录就自动学习的程序,登录之后什么都不用管。
考试部分:这个嘛主要就是分为能在页面找到答案和不能在页面找到答案的,有的网站的测试直接可以在页面上找到答案,通常是会有一个隐藏的标记在某个选项上,当然这个是需要分析源码才看得到,正常在页面上是不可能看到的。至于没有答案的测试,一般网站会提供模拟或练习,可以从这里面想办法得到答案。
具体到网友发来的这个网站,我们来分析一下,今天主要分享一下自动学习部分:
登录部分说明
登录部分,我通常喜欢先用错误的账号和密码测试一下看看返回消息,然后使用正确的账号密码登录再查看返回消息,方便后面写代码时判断,这个网站只是把密码简单进行了一下md5加密.
接着就是按照学习流程走一走,打开在学课程列表,点开一个课程进行学习
这个网站随机7-13分钟分弹出一个窗口,并且需要在2分钟内确认,如果不确认,则不计时,不继续学习。
走了一遍学习的流程后,我们来看看Fiddler的请求记录:
1、checkUser.action 检查登录的账号和密码
2、learnerIndex.action打开学习中心
3、learningPlan.action在学课程列表
4、beginLearning.action?bianhao=1162458打开一个具体课程进行学习
5、setBeginTime.action设置开始学习时间
6、saveTime.action保存学习时间
蓝色的是获取热门推荐和用户留言等一些不重要的请求。
我们重点来看第5、6,设置开始时间和保存学习进度这两条请求:
设置开始时间的几个参数都比较好理解:bianhao(课程编号)、watchTime(观看时间)、firstTime(是否初次观看,每次打开第一次,是为1,非为0)、setVersion(可以理解为一个控制标记,初次请求为空,请求会返回一个标记,用于下一次请示,变化的)
通过分析发现watchTime就是7-13之间的随机数,那么我们可以自己将时间固定为1分钟或两分钟,方便查看学习效果。
再看保存时间这个请求
保存时,正是用到了先前返回的setVersion参数值。
开始学习计时后,如果直接立即提示保存计时,则网站会提示保存失败,返回的数据里还有提示“高手啊!”~~
所以此网站暂时未找到学习方法,需在设置的观看时间后再提交保存。
整个流程还是比较简单的。分析完成,下面来实现一个这个流程。使用E语言简单实现:
源代码分享
源码在图上,就不放下载了,放一个编译好的exe,如果刚好需要学习可以下载测试,不需要就不用下载,毕竟E语言的程序容易引起报毒误会。
热门评论
最新评论