JavaScript——易班优课YOOC课群在线测试自动答题解决方案(一)答案获取
基本概念
易班优课YOOC:优课YOOC”是易班网于2016年4月研发并推出的基于Social Learning的理念而开发的在线学习平台。
官方网站:https://www.yooc.me/
问题分析
考试信息
题目ID
答案隐藏脚本
解决方案
注:本脚本基于考试详情页面
例:https://www.yooc.me/group/16x263/exam/11067x/detail
获取题目DOM
利用AJAX重新请求页面,绕开答案隐藏脚本。
var xmlhttp = new XMLHttpRequest();//获取对象xmlhttp.onreadystatechange = function(){//设置回调函数if(xmlhttp.readyState == 4){//这里的4是请求的状态码,代表请求已经完成if(xmlhttp.status == 200 || xmlhttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取console.log(xmlhttp);var x=parseToDOM(xmlhttp.responseText)var html=document.createElement("html");html.innerHTML=xmlhttp.responseTextconsole.log(html)var question=html.getElementsByClassName('question-board')console.log(question)}}}
xmlhttp.open("GET",document.URL);xmlhttp.send();//GET请
题目DOM转数组
var question_arr=[]question.forEach(q=>{question_arr.push({id:q.id,question:q.outerHTML})})
封装数据包
var data={group:groupId,exam:examId,questions:question_arr}
上传数据库
var posthttp = new XMLHttpRequest();//获取对象posthttp.onreadystatechange = function(){//设置回调函数if(posthttp.readyState == 4)//这里的4是请求的状态码,代表请求已经完成if(posthttp.status == 200 || posthttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取var result = posthttp.responseText;//这里获取的是响应文本,也可以获得响应xml或JSONconsole.log(result)}}posthttp.open("POST","https://www.xxxx.top/MyZSTU/exams");posthttp.setRequestHeader("Content-Type","application/json");posthttp.setRequestHeader("Content-Security-Policy","upgrade-insecure-requests");posthttp.send(JSON.stringify(data));//POST请求
完整代码
var xmlhttp = new XMLHttpRequest();//获取对象xmlhttp.onreadystatechange = function(){//设置回调函数if(xmlhttp.readyState == 4){//这里的4是请求的状态码,代表请求已经完成if(xmlhttp.status == 200 || xmlhttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取console.log(xmlhttp);//创建DOMvar html=document.createElement("html");html.innerHTML=xmlhttp.responseTextconsole.log(html)var group=document.getElementById('group-data')var groupId=group.getAttribute("data-group-id")var examId=group.getAttribute("data-exam-id")var question=Array.from(html.getElementsByClassName('question-board'))console.log(question)//答案转换var question_arr=[]question.forEach(q=>{question_arr.push({id:q.id,question:q.outerHTML})})//数据封装var data={group:groupId,exam:examId,questions:question_arr}console.log(data)//上传服务器var posthttp = new XMLHttpRequest();//获取对象posthttp.onreadystatechange = function(){//设置回调函数if(posthttp.readyState == 4)//这里的4是请求的状态码,代表请求已经完成if(posthttp.status == 200 || posthttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取var result = posthttp.responseText;//这里获取的是响应文本,也可以获得响应xml或JSONconsole.log(result)}}posthttp.open("POST","https://www.sxxxxng.top/MyZSTU/exxaamaass");//JSON Headerposthttp.setRequestHeader("Content-Type","application/json");posthttp.setRequestHeader("Content-Security-Policy","upgrade-insecure-requests");//解析为JSONposthttp.send(JSON.stringify(data));//POST请求}}}
xmlhttp.open("GET",document.URL);xmlhttp.send();//GET请求
参考文章
https://blog.csdn.net/zzh_97580460/article/details/99934372
https://blog.csdn.net/weixin_43272781/article/details/105774421
http://caibaojian.com/javascript/107.html
JavaScript——易班优课YOOC课群在线测试自动答题解决方案(一)答案获取相关推荐
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(四)答案显示
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...
- Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(三)答案查询
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 问题分析 Maven & ...
- Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(二)答案储存
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 问题分析 前端数据 Maven <!--Spring Boot Web--><depende ...
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十九)强制重做
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...
- JavaScript + Thymeleaf + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十八)模板脚本
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...
- JavaScript + Tampermonkey——易班优课YOOC课群在线测试自动答题解决方案(十七)复合型解决方案油猴脚本
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十六)利用PC端和移动端BUG
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十五)整合升级+引入jQuery
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十三)自动答题
前文 JavaScript--易班优课YOOC课群在线测试自动答题解决方案(一)答案获取 Spring Boot--易班优课YOOC课群在线测试自动答题解决方案(二)答案储存 Spring Boot- ...
最新文章
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 1.)(python/c/c++版)(笔记)
- 精致全景图 | 程序是如何运行起来的
- HDU 2602.Bone Collector-动态规划0-1背包
- C# DataTable的詳細用法
- Jar包冲突解决方法 Unknown lifecycle phase mvn Eclipse中执行maven命令
- WPF编程学习 —— 样式
- nurbs曲线拟合程序_基于NURBS曲线拟合的shx字体优化
- Chrome内核浏览器离线加装扩展的方法 IE Tab_v11.2.1.1
- python是爬虫的意思吗_python跟爬虫的区别
- 打印后台处理程序服务怎么开启
- 计算机语言与语法,编程语言中语法和语义有什么区别?
- PT100测量温度电路设计原理解析
- linux的c文件报错for,linux c 编译错误 conflicting types for 的解决办法
- 自媒体人必不可少的多平台同步、一文多发小助手
- Ubuntu(18.04)不能上网解决办法
- 万年历的Java代码
- IDEA新建项目需要新建好文件夹
- WIN10阻止OA附件打开
- 这个面试题有点意思哦
- 买的天猫转让网店怎么取名
热门文章
- CG笔记之一——透视投影
- php记录读取数据类型,数据读取 · ThinkPHP 3.2.3开发手册 · 看云
- 电脑功耗测试软件_聊一款“躺着都中枪”的笔记本电脑
- combus通讯_Vue兄弟组件通信Bus传值--小案例
- 7 MyBatis映射文件中的拼接符
- css列表格式属性,css list-style-type属性笔记
- java程序中可以有几个构造方法_java中多个构造方法可以相互引用么?
- 10 windows 启动虚拟机报错_Windows 系统如何安装 Docker
- nvidia-smi:Failed to initialize NVML: Driver/library version mismatch
- 期末考试前的预习,科目:化工设备与反应器(1)