u校园刷题(自动填写答案)

您所在的位置:网站首页 u校园网课视听说答案 u校园刷题(自动填写答案)

u校园刷题(自动填写答案)

2024-07-15 23:32| 来源: 网络整理| 查看: 265

实现步骤 安装油猴插件(谷歌浏览器)) u校园脚本 显示答案

安装油猴插件(谷歌浏览器))

点击下方链接下载(油猴插件(要解压),u校园脚本(不用解压)) 链接: https://pan.baidu.com/s/1BAEXbeKaa_ti55BWIovJ0Q 提取码: jppq 下载后解压到你能找到一个文件夹中,方便一会儿的使用。 下载完成后,打开谷歌浏览器,输入 chrome://extensions/ 打开开发者模式 点击“加载已压缩程序”,选择刚才解压缩的文件夹,就安装完成了。 安装完成后会出现如下标志。

u校园脚本

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400// ==UserScript== // @name         Uer/U校园网课答案显示/U校园答案自动填入 // @namespace    MrDgbot // @version      1.7 // @description  [全自动填入答案【可关闭】【随机延迟】(未适配的请联系)][窗口显示答案][支持长篇阅读、修复视听说][不支持单元测试]【禁止对源码进行修改,发布,禁止抄袭任意代码】 // @author       askar882;Democrazy;MrDgbot // @compatible   Chrome // @match        *://ucontent.unipus.cn/_pc_default/pc.html?* // @grant        none // @run-at       document-start // @require      http://cdn.staticfile.org/jquery/3.4.1/jquery.min.js // ==/UserScript== (function () {     'use strict';       let userset = {         hasInput: true,       //是否开启自动答题,如果设置为false,         //每道题之间的答题间隔 [单位:毫秒]         //无需延迟设置min和max为0即可         //代表(随机1-3秒)    建议2-5秒         min:1000,         max:3000,       }     const wrapperId = "answerWrapper"     const titleId = "answerTitle"     const contentId = "answerContent"     const innerText = html => {         let div = document.createElement('div')         div.innerHTML = html         if (div.firstChild) {             return div.firstChild.innerText         } else {             return null;         }     }     const inputValue = (dom, st) => {         if (/input/i.test(dom.tagName)) {             var setValue = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;             setValue.call(dom, st);             var e = new Event('input', { bubbles: true });             dom.dispatchEvent(e);         } else {             let evt = new InputEvent('input', {                 inputType: 'insertText',                 data: st,                 dataTransfer: null,                 isComposing: false             });             dom.value = st;             dom.dispatchEvent(evt);         }     }     const knownQuestionKeys = [         "questions:shortanswer",         "shortanswer:shortanswer",         "questions:scoopquestions",         "questions:sequence",         "questions:questions",         "questions:textmatch",         "questions:bankedcloze",         "questions:scoopselection"     ]     let Timer = function (func) {         let hasLoaded = false;         return function (selector, answers) {           if (!userset.hasInput) {                 return;             }             if (hasLoaded) {                 return;             }             let cnt = 15;             let handler = window.setInterval(() => {                 hasLoaded = true;                 if (!(cnt--)) {                     window.clearInterval(handler);                     location.reload(true);                     alert("自动答题失败!");                 }                 hasLoaded = func(selector, answers, handler);             }, 1000);         }     };     let inputAnswers = Timer((selector, answers, handler) => {             if (!userset.hasInput) {                 return;             }         let inputs = document.querySelectorAll(selector);         let hasLoaded = true;         if (inputs.length) {             window.clearInterval(handler);             hasLoaded = false;             for (let i = 0; i < inputs.length; i++) {                 window.setTimeout(() => {                     if (/(input)|(textarea)/i.test(inputs[i].tagName) && !inputs[i].value) { setTimeout(function(){                         inputs[i].click();                         inputs[i].focus();                         answers[i] = answers[i].replace('\n','');                         if(answers[i].indexOf(" | ") != -1){                             answers[i] = answers[i].split(" | ");                             answers[i] = answers[i][0];                            }                         inputValue(inputs[i], answers[i]);                         inputs[i].blur(); },Math.floor(Math.random() * (userset.max - userset.min + 1)) + userset.min);                     }                 }, i * 500 + Math.random() * 300);             }         }         return hasLoaded;     });     let selectAnswers = Timer((selector, answers, handler) => {             if (!userset.hasInput) {                 return;             }             var xi;             for (xi = 0; xi < selector.length; xi++){             let lists = document.querySelectorAll(selector[xi]);             if (lists.length != 0) {                 break;            }          }         let lists = document.querySelectorAll(selector[xi]);         let hasLoaded = true;         if (lists.length) {             window.clearInterval(handler);             hasLoaded = false;             for (let i = 0; i < lists.length; i++) {                 window.setTimeout(() => {                     let inputs = lists[i].querySelectorAll('input[type="radio"]');                     console.log(inputs)                     for (let j = 0; j < inputs.length; j++) {                         if (inputs[j].value === answers[i].toUpperCase() || inputs[j].value === answers[i].toLowerCase()) {                             setTimeout(function(){                               inputs[j].click();                              },Math.floor(Math.random() * (userset.max - userset.min + 1)) + userset.min);                         }                     }                 }, i * 500 + Math.random() * 300);             }         }         return hasLoaded;     });     const answerResolvers = [         json => {             console.log('answerResolvers' + 0);             let answer = "";             let answers = [];             json.questions.forEach(question => {                 let text = `\n${innerText(question.analysis.html)}`                 answer += text;                 answers.push(innerText(question.analysis.html).replace('?', '').replace(/[\d]+?\./, '').trim());             });             inputAnswers('div.questions textarea', answers);             return answer         },         json => {             let answer = ""             let as = [];             let as2 = [];             var iii;             console.log('answerResolvers' + 1);             if (!innerText(json.analysis.html)) {                 console.log("1")                 for (iii = 0; iii < json.questions.length; iii++) {                 answer = json.questions[iii];                 if (typeof answer === "string") {                     answer = JSON.parse(answer);                 }                 answer = answer.analysis.html                 answer = innerText(answer);                 as2.push("\n"+answer)                 as.push(answer.replace('?', '').replace(/[\d]+?\./, '').trim())               }                console.log(as)               inputAnswers('div.questions textarea', as);               return as2;             } else {                 console.log("2")                 answer = innerText(json.analysis.html);             }             inputAnswers('#mainLrRight textarea', [answer]);             return answer;         },         json => {             console.log('answerResolvers' + 2);             let answer = [];             let answers = [];             var as = "";             json.questions.forEach(question => {                 as = `\n${innerText(question.content.html)} ${question.answers.join(" | ")}`                 //    answer += `\n${ innerText(question.content.html) } ${ question.answers.join(" | ") }`                 //answer.push("answer:")                 answer.push(as)                 answers.push(question.answers[0]);             });             console.log("XX",answers)             console.log(answer)             inputAnswers('div#root div.questions input', answers);             return answer         },         json => {             console.log('answerResolvers' + 3);             return json.questions.map(question => question.answer).join(", ")         },         json => {            console.log('answerResolvers' + 4);             //console.log(json.questions.map(question => question.answers))             let answers = json.questions.map(question => question.answers[0]);             if(answers[0].length > 1){                 inputAnswers('div#root div.questions input', answers);             }else{                 selectAnswers(['#main-top ul','#mainLrRight ul'], answers);             }             return answers.join(", ")             },         json => {             console.log('answerResolvers' + 5);             let answers = json.questions.map(question => question.answer);             inputAnswers('#mainLrRight input',answers);             return answers.join(", ")         },         json => {             console.log('answerResolvers' + 6);             return json.questions.map(question => question.answer).join(", ")         },         json => {             console.log('answerResolvers' + 7);             var si;             let answers = json.questions.map(question => question.answers[0]);             for (si = 0;si < answers.length; si++){              var numa;              var as;              var numb;              numa = th(answers[si])              as = innerText(json.questions[si].options[numa-1].content.html);              numb = si+1              answers[si] = "\n"+numb+". "+as;             }            // inputAnswers('div#root div.questions input', answers);             return answers.join(", ");         }     ]     const specialQuestions = [         /^content_\d:questions$/,     ]     const specialscoopquestions = [         /^content_\d:scoopquestions$/,     ]     const specialAnswerResolvers = [         json => {             let answer = ""             let resolver = answerResolvers[knownQuestionKeys.indexOf("questions:questions")]             console.log(resolver)             answer = Object.keys(json).sort().map((key, index) => (index + 1) + ". " + resolver(json[key])).join('\n')             console.log(answer)             return answer+"\n[该选择题需手动换页,谢谢配合]!"         },     ]     const showAnswer = json => {         let answer = "No answer found"         let isQuestion = true         if (json != null && json.hasOwnProperty("content")) {             let contentJson = JSON.parse(json.content)             console.log("%c%s", "color: red; font-size: 16px;", JSON.stringify(contentJson, '', 2))             let keys = Object.keys(contentJson)             let key = keys[0]             let keyIndex = knownQuestionKeys.indexOf(key)             if (keyIndex !== -1) {                 answer = answerResolvers[keyIndex](contentJson[key])                 console.log("answer=" + answer);             } else {                 let specialKeyIndex = -1                 specialQuestions.forEach((pattern, index) => {                     if (pattern.test(key)) {                         specialKeyIndex = index                     }                 })                 if (specialKeyIndex == -1) {                     console.log(contentJson)                     specialscoopquestions.forEach((pattern, index) => {                     if (pattern.test(key)) {                         specialKeyIndex = index                     }                 })                 }                 if (specialKeyIndex !== -1) {                     console.log(contentJson)                     answer = specialAnswerResolvers[specialKeyIndex](contentJson)                 } else {                     answer = "Not a question\n" + JSON.stringify(contentJson, '', 2)                     isQuestion = false                 }             }         }         let title = "参考答案"         let wrapperElem = document.getElementById(wrapperId) ? document.getElementById(wrapperId) : document.createElement("div");         let titleElem = document.getElementById(titleId) ? document.getElementById(titleId) : document.createElement("div");         let contentElem = document.getElementById(contentId) ? document.getElementById(contentId) : document.createElement("div");         let br = document.createElement("br")         let tuiguang = document.createElement("a")         tuiguang.setAttribute("href","http://wpa.qq.com/msgrd?v=3&uin=41737035&site=qq&menu=yes")         tuiguang.setAttribute("target","_blank")         tuiguang.text = "查题机器人??"         if (!isQuestion) {             return         }         wrapperElem.setAttribute("id", wrapperId)         titleElem.setAttribute("id", titleId)         contentElem.setAttribute("id", contentId)         wrapperElem.setAttribute("style",             "top: 100px; left: 100px; margin: 0 auto; z-index: 1024; border-radius: 1em;"             + " box-shadow: 0 11px 15px -7px rgba(0,0,0,.2), 0 24px 38px 3px rgba(0,0,0,.14), 0 9px 46px 8px rgba(0,0,0,.12);"             + " position: absolute; background: #fff; width: 250px; max-height: 400px; min-height: 200px;")         titleElem.setAttribute("style", "background: inherit; height: 25px; margin-top: 10px; text-align: center; font-size: x-large")         contentElem.setAttribute("style", "margin: 10px; color: orange; font-size: medium; overflow-y: auto; max-height: 375px")         titleElem.innerText = title         contentElem.innerText = answer         makeDraggable(titleElem)         wrapperElem.appendChild(titleElem)         contentElem.appendChild(br)         contentElem.appendChild(tuiguang)         wrapperElem.appendChild(contentElem)         document.body.appendChild(wrapperElem)     }     const real_fetch = window.fetch     window.fetch = (url, init = null) => real_fetch(url, init).then(response => {         if (/.*\/course\/api\/content\//.test(url)) {             let res = response.clone()             res.json().then(showAnswer)         }         return response     })     function makeDraggable(elem) {         document.mouseState = 'up'         elem.mouseState = 'up'         elem.lastMousePosY = null         elem.lastMousePosX = null         elem.proposedNewPosY = parseInt(elem.style.top, 10)         elem.proposedNewPosX = parseInt(elem.style.left, 10)         document.onmousedown = _ => {             document.mouseState = 'down'         }         document.onmouseup = _ => {             document.mouseState = 'up'             elem.mouseState = 'up'         }         elem.onmousedown = e => {             elem.lastMousePosY = e.pageY             elem.lastMousePosX = e.pageX             elem.mouseState = 'down'             document.mouseState = 'down'             document.onselectstart = e => {                 e.preventDefault()                 return false             }         }         elem.onmouseup = e => {             elem.mouseState = 'up'             document.mouseState = 'up'             document.onselectstart = null         }         const getAtInt = (obj, attrib) => parseInt(obj.style[attrib], 10)         document.onmousemove = e => {             if ((document.mouseState === 'down') && (elem.mouseState === 'down')) {                 elem.proposedNewPosY = getAtInt(elem.parentElement, 'top') + e.pageY - elem.lastMousePosY                 elem.proposedNewPosX = getAtInt(elem.parentElement, 'left') + e.pageX - elem.lastMousePosX                 if (elem.proposedNewPosY < 0) {                     elem.parentElement.style.top = "0px"                 } else if (elem.proposedNewPosY > window.innerHeight - getAtInt(elem.parentElement, 'height')) {                     elem.parentElement.style.top = window.innerHeight - getAtInt(elem.parentElement, 'height') + 'px'                 } else {                     elem.parentElement.style.top = elem.proposedNewPosY + 'px'                 }                 if (elem.proposedNewPosX < 0) {                     elem.parentElement.style.left = "0px"                 } else if (elem.proposedNewPosX > window.innerWidth - getAtInt(elem.parentElement, 'width')) {                     elem.parentElement.style.left = window.innerWidth - getAtInt(elem.parentElement, 'width') + 'px'                 } else {                     elem.parentElement.style.left = elem.proposedNewPosX + 'px'                 }                 elem.lastMousePosY = e.pageY                 elem.lastMousePosX = e.pageX             }         }     }     function th(s){    return s.split("").map(function(o){       return o.toUpperCase().charCodeAt()-64;    }).join(""); } })();

将代码插入到油猴插件即可。

显示答案

上面网盘的u校园压缩包,点击添加。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3