如何使用python进行自动网上考试
前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: his hacker
ps:如有需要python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/a6zvjdun
背景说明
在github上发现一个古老的华医网考试脚本(https://github.com/lhzzzzzz/autoexamofhuayi),是python2写的。它实现了华医网自动登录、自动获取考试编号cwid、自动考试。现在把它翻新一下。
脚本功能
基于已知的考试编号cwid,进行华医网自动考试。
需要用到的工具(开发环境)
1、google chrome;
2、fiddler:用于抓包;
3、pycharm
思路分析
一、答题流程分析
已有现在的javascript脚本(《华医网自动答题脚本》),根据华医网的答题代码,进行自动答题。但这个代码使用的是试错了,反复提交需要消耗时间,不适合批量操作。
根据github现有脚本(https://github.com/lhzzzzzz/autoexamofhuayi),发现华医网是直接把原答案放在试题的网页中
所以其实在答题界面,用chrome的f12进行inspect,也能找到正确答案。
name="gvquestion$ctl03$result" 对应的 value即正确答案的value
通过fiddler抓包可以看到,考试主要包括三个动作:
1、get 考试试题
2、post 考试试题+答案
3、get 考试结果
而其中
post答案提交的data包括以下几部分:
1、__eventtarget 等是 asp.net 相关验证参数:可以从考试界面的网页中用正则表达式提取;其中留空的字段可以不提交
2、hidden1、hidden2、hidden3:表示最前面的课程评价星级,可以不提交;
3、gvquestion$ctl03$question_id、gvquestion$ctl03$result、gvquestion$ctl03$rbl :表示题号、正确选项、考生选项(这里当然是直接提交正确选项的value)
二、模拟登录华医网
根据旧的py脚本,以前的华医网登录不需要验证码,现在有了图片验证码,登录变得麻烦了。还是改成手动复制fiddler抓到的cookie吧
三、session会话保持
华医网登录之后使用session进行对话,获取考卷、提交考试、获取成绩都会刷新cookie,而且只有最新的cookie能进行下次对话。
所以这里需要用requests.session()保持会话,而且起始的cookie必须是最新的一个cookie
运行结果
如果全部考完,可以在网页中看到可以申请证书。
more
华医网很多bug的,如没有完成考试也可以直接申请证书,在考试结果页面,浏览器状态输入代码就可以。
使用流程(代码实现)
2020年最新python教程:
如果你处于想学python或者正在学习python,python的教程不少了吧,但是是最新的吗?
说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的python教程。
以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!