欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何使用python进行自动网上考试

程序员文章站 2022-03-10 11:45:25
前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者: HIS Hacker PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 背景说明 在github上发现一个古 ......

 

如何使用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),发现华医网是直接把原答案放在试题的网页中

如何使用python进行自动网上考试

 

所以其实在答题界面,用chrome的f12进行inspect,也能找到正确答案。

 

如何使用python进行自动网上考试

 

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)

如何使用python进行自动网上考试

 

二、模拟登录华医网

根据旧的py脚本,以前的华医网登录不需要验证码,现在有了图片验证码,登录变得麻烦了。还是改成手动复制fiddler抓到的cookie吧

三、session会话保持

华医网登录之后使用session进行对话,获取考卷、提交考试、获取成绩都会刷新cookie,而且只有最新的cookie能进行下次对话。

所以这里需要用requests.session()保持会话,而且起始的cookie必须是最新的一个cookie

 

如何使用python进行自动网上考试

 

运行结果

如果全部考完,可以在网页中看到可以申请证书。

more

华医网很多bug的,如没有完成考试也可以直接申请证书,在考试结果页面,浏览器状态输入代码就可以。

使用流程(代码实现)

 

如何使用python进行自动网上考试

 

2020年最新python教程:

如果你处于想学python或者正在学习python,python的教程不少了吧,但是是最新的吗?

说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的python教程。

如何使用python进行自动网上考试

 

 

如何使用python进行自动网上考试

 

 

如何使用python进行自动网上考试

 

 

如何使用python进行自动网上考试

 

 

以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!

获取方式,私信小编 “ 资料 ”,即可免费获取哦!