超星网课脚本收集

   1     // ==UserScript==
   2     // @name         🐤【超星网课小助手】【支持图片题】视频-章节测试|自动挂机|可多开不占网速|防清进度【用过都说好】
   3     // @namespace    unrival
   4     // @version      1.43
   5     // @description  ▶▶▶上次更新:2022.10.20◀◀◀⚠⚠⚠最近超星更新频繁,强烈建议使用近期更新的最新版脚本,防止出现异常⚠⚠⚠【✅独家题库实时更新】【💻可最小化💻】🆒支持超星视频、文档、答题、自定义正确率、掉线自动登录🤘取消视频文件加载,多开也不占用网速,放心追剧🍊自定义答题正确率,提高学习效率🍆每日功能测试,在发现问题前就解决问题,防清进度,无不良记录 
   6     // @author       unrival
   7     // @run-at       document-end
   8     // @storageName  unrivalxxt
   9     // @match        *://*.chaoxing.com/*
  10     // @match        *://*.edu.cn/*
  11     // @match        *://*.nbdlib.cn/*
  12     // @match        *://*.hnsyu.net/*
  13     // @match        *://*.ac.cn/*
  14     // @icon         http://pan-yz.chaoxing.com/favicon.ico
  15     // @grant        unsafeWindow
  16     // @grant        GM_xmlhttpRequest
  17     // @grant        GM_setValue
  18     // @grant        GM_getValue
  19     // @grant        GM_addValueChangeListener
  20     // @grant        GM_info
  21     // @connect      mooc1-1.chaoxing.com
  22     // @connect      mooc1.chaoxing.com
  23     // @connect      mooc1-2.chaoxing.com
  24     // @connect      passport2-api.chaoxing.com
  25     // @connect      proxy-unrival-agent-api1.xn--6cs.top
  26     // @connect      cx.icodef.com
  27     // @license      GPL-3.0-or-later
  28     // @original-script https://scriptcat.org/script-show-page/336
  29     // @original-author unrival
  30     // @original-license GPL-3.0-or-later
  31     //如果脚本提示添加安全网址,请将脚本提示内容填写到下方区域,一行一个,如果不会,请加群询问
  32      
  33      
  34      
  35     //安全网址请填写在上方空白区域
  36     // ==/UserScript==
  37     (() => {
  38         var token = '', //关注微信公众号:一之哥哥,发送 “token” 领取你的token,填写在两个单引号中间并保存,可以提高答题并发数量。
  39             jumpType = 0, // 0:智能模式,1:遍历模式,2:不跳转,如果智能模式出现无限跳转/不跳转情况,请切换为遍历模式
  40             disableMonitor = 0, // 0:无操作,1:解除多端学习监控,开启此功能后可以多端学习,不会被强制下线。
  41             accuracy = 75, //章节测试正确率百分比,在答题正确率在规定之上并且允许自动提交时才会提交答案
  42             randomDo = 0, //将0改为1,找不到答案的单选、多选、判断就会自动选【B、ABCD、错】,只在规定正确率不为100%时才生效
  43             backGround = 0, //是否对接超星挂机小助手,需要先安装对应脚本
  44             //-----------------------------------------------------------------------------------------------------
  45             autoLogin = 0, //掉线是否自动登录,1为自动登录,需要配置登录信息(仅支持手机号+密码登陆)
  46             phoneNumber = '', //自动登录的手机号,填写在单引号之间。
  47             password = ''; //自动登录的密码,填写在单引号之间。
  48         //-----------------------------------------------------------------------------------------------------
  49      
  50         var audiofile =
  51             'data:audio/ogg;base64,T2dnUwACAAAAAAAAAABwRPFFAAAAAGFtEqwBHgF2b3JiaXMAAAAAAUAfAAAAAAAAUHgAAAAAAACZAU9nZ1MAAAAAAAAAAAAAcETxRQEAAAA7J4IBDP8F////////////tQN2b3JiaXMvAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxNDAxMjIgKFR1cnBha8OkcsOkamlpbikGAAAAJQAAAEVOQ09ERVI9U291bmQgU3R1ZGlvLCBsaWJWb3JiaXMgMS4zLjEbAAAAQUxCVU0gQVJUSVNUPUFkdmVudHVyZSBMYW5kFAAAAEFMQlVNPUFkdmVudHVyZSBMYW5kIQAAAEVOQ09ESU5HIEFQUExJQ0FUSU9OPVNvdW5kIFN0dWRpbxUAAABBUlRJU1Q9QWR2ZW50dXJlIExhbmQjAAAAVElUTEU9RW1wdHkgTG9vcCBGb3IgSlMgUGVyZm9ybWFuY2UBBXZvcmJpcxJCQ1YBAAABAAxSFCElGVNKYwiVUlIpBR1jUFtHHWPUOUYhZBBTiEkZpXtPKpVYSsgRUlgpRR1TTFNJlVKWKUUdYxRTSCFT1jFloXMUS4ZJCSVsTa50FkvomWOWMUYdY85aSp1j1jFFHWNSUkmhcxg6ZiVkFDpGxehifDA6laJCKL7H3lLpLYWKW4q91xpT6y2EGEtpwQhhc+211dxKasUYY4wxxsXiUyiC0JBVAAABAABABAFCQ1YBAAoAAMJQDEVRgNCQVQBABgCAABRFcRTHcRxHkiTLAkJDVgEAQAAAAgAAKI7hKJIjSZJkWZZlWZameZaouaov+64u667t6roOhIasBADIAAAYhiGH3knMkFOQSSYpVcw5CKH1DjnlFGTSUsaYYoxRzpBTDDEFMYbQKYUQ1E45pQwiCENInWTOIEs96OBi5zgQGrIiAIgCAACMQYwhxpBzDEoGIXKOScggRM45KZ2UTEoorbSWSQktldYi55yUTkompbQWUsuklNZCKwUAAAQ4AAAEWAiFhqwIAKIAABCDkFJIKcSUYk4xh5RSjinHkFLMOcWYcowx6CBUzDHIHIRIKcUYc0455iBkDCrmHIQMMgEAAAEOAAABFkKhISsCgDgBAIMkaZqlaaJoaZooeqaoqqIoqqrleabpmaaqeqKpqqaquq6pqq5seZ5peqaoqp4pqqqpqq5rqqrriqpqy6ar2rbpqrbsyrJuu7Ks256qyrapurJuqq5tu7Js664s27rkearqmabreqbpuqrr2rLqurLtmabriqor26bryrLryratyrKua6bpuqKr2q6purLtyq5tu7Ks+6br6rbqyrquyrLu27au+7KtC7vourauyq6uq7Ks67It67Zs20LJ81TVM03X9UzTdVXXtW3VdW1bM03XNV1XlkXVdWXVlXVddWVb90zTdU1XlWXTVWVZlWXddmVXl0XXtW1Vln1ddWVfl23d92VZ133TdXVblWXbV2VZ92Vd94VZt33dU1VbN11X103X1X1b131htm3fF11X11XZ1oVVlnXf1n1lmHWdMLqurqu27OuqLOu+ruvGMOu6MKy6bfyurQvDq+vGseu+rty+j2rbvvDqtjG8um4cu7Abv+37xrGpqm2brqvrpivrumzrvm/runGMrqvrqiz7uurKvm/ruvDrvi8Mo+vquirLurDasq/Lui4Mu64bw2rbwu7aunDMsi4Mt+8rx68LQ9W2heHVdaOr28ZvC8PSN3a+AACAAQcAgAATykChISsCgDgBAAYhCBVjECrGIIQQUgohpFQxBiFjDkrGHJQQSkkhlNIqxiBkjknIHJMQSmiplNBKKKWlUEpLoZTWUmotptRaDKG0FEpprZTSWmopttRSbBVjEDLnpGSOSSiltFZKaSlzTErGoKQOQiqlpNJKSa1lzknJoKPSOUippNJSSam1UEproZTWSkqxpdJKba3FGkppLaTSWkmptdRSba21WiPGIGSMQcmck1JKSamU0lrmnJQOOiqZg5JKKamVklKsmJPSQSglg4xKSaW1kkoroZTWSkqxhVJaa63VmFJLNZSSWkmpxVBKa621GlMrNYVQUgultBZKaa21VmtqLbZQQmuhpBZLKjG1FmNtrcUYSmmtpBJbKanFFluNrbVYU0s1lpJibK3V2EotOdZaa0ot1tJSjK21mFtMucVYaw0ltBZKaa2U0lpKrcXWWq2hlNZKKrGVklpsrdXYWow1lNJiKSm1kEpsrbVYW2w1ppZibLHVWFKLMcZYc0u11ZRai621WEsrNcYYa2415VIAAMCAAwBAgAlloNCQlQBAFAAAYAxjjEFoFHLMOSmNUs45JyVzDkIIKWXOQQghpc45CKW01DkHoZSUQikppRRbKCWl1losAACgwAEAIMAGTYnFAQoNWQkARAEAIMYoxRiExiClGIPQGKMUYxAqpRhzDkKlFGPOQcgYc85BKRljzkEnJYQQQimlhBBCKKWUAgAAChwAAAJs0JRYHKDQkBUBQBQAAGAMYgwxhiB0UjopEYRMSielkRJaCylllkqKJcbMWomtxNhICa2F1jJrJcbSYkatxFhiKgAA7MABAOzAQig0ZCUAkAcAQBijFGPOOWcQYsw5CCE0CDHmHIQQKsaccw5CCBVjzjkHIYTOOecghBBC55xzEEIIoYMQQgillNJBCCGEUkrpIIQQQimldBBCCKGUUgoAACpwAAAIsFFkc4KRoEJDVgIAeQAAgDFKOSclpUYpxiCkFFujFGMQUmqtYgxCSq3FWDEGIaXWYuwgpNRajLV2EFJqLcZaQ0qtxVhrziGl1mKsNdfUWoy15tx7ai3GWnPOuQAA3AUHALADG0U2JxgJKjRkJQCQBwBAIKQUY4w5h5RijDHnnENKMcaYc84pxhhzzjnnFGOMOeecc4wx55xzzjnGmHPOOeecc84556CDkDnnnHPQQeicc845CCF0zjnnHIQQCgAAKnAAAAiwUWRzgpGgQkNWAgDhAACAMZRSSimllFJKqKOUUkoppZRSAiGllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimVUkoppZRSSimllFJKKaUAIN8KBwD/BxtnWEk6KxwNLjRkJQAQDgAAGMMYhIw5JyWlhjEIpXROSkklNYxBKKVzElJKKYPQWmqlpNJSShmElGILIZWUWgqltFZrKam1lFIoKcUaS0qppdYy5ySkklpLrbaYOQelpNZaaq3FEEJKsbXWUmuxdVJSSa211lptLaSUWmstxtZibCWlllprqcXWWkyptRZbSy3G1mJLrcXYYosxxhoLAOBucACASLBxhpWks8LR4EJDVgIAIQEABDJKOeecgxBCCCFSijHnoIMQQgghREox5pyDEEIIIYSMMecghBBCCKGUkDHmHIQQQgghhFI65yCEUEoJpZRSSucchBBCCKWUUkoJIYQQQiillFJKKSGEEEoppZRSSiklhBBCKKWUUkoppYQQQiillFJKKaWUEEIopZRSSimllBJC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',
  52             audioPlayer = new Audio(audiofile),
  53             host = 'http://proxy-unrival-agent-api1.xn--6cs.top/',
  54             rate = GM_getValue('unrivalrate', '1'),
  55             ctUrl = 'https://cx.icodef.com/wyn-nb?v=4',
  56             getQueryVariable = (variable) => {
  57                 let q = _l.search.substring(1),
  58                     v = q.split("&"),
  59                     r = false;
  60                 for (let i = 0, l = v.length; i < l; i++) {
  61                     let p = v[i].split("=");
  62                     p[0] == variable && (r = p[1]);
  63                 }
  64                 return r;
  65             },
  66             getCookie = name => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';').shift(),
  67             isCat = GM_info.scriptHandler == 'ScriptCat',
  68             _w = unsafeWindow,
  69             _d = _w.document,
  70             _l = _w.location,
  71             _p = _l.protocol,
  72             _h = _l.host,
  73             //isEdge = _w.navigator.userAgent.includes("Edg/"),
  74             isFf = _w.navigator.userAgent.includes("Firefox"),
  75             isMobile = _w.navigator.userAgent.includes("Android"),
  76             stop = false,
  77             handleImgs = (s) => {
  78                 imgEs = s.match(/(<img([^>]*)>)/);
  79                 if (imgEs) {
  80                     for (let j = 0, k = imgEs.length; j < k; j++) {
  81                         let urls = imgEs[j].match(
  82                                 /http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+/),
  83                             url;
  84                         if (urls) {
  85                             url = urls[0].replace(/http[s]?:\/\//, '');
  86                             s = s.replaceAll(imgEs[j], url);
  87                         }
  88                     }
  89                 }
  90                 return s;
  91             },
  92             trim = (s) => {
  93                 return handleImgs(s).replaceAll('javascript:void(0);', '').replaceAll("&nbsp;", '').replaceAll(",", ',').replaceAll(
  94                         "。", '.').replaceAll(":", ':').replaceAll(";",
  95                         ';').replaceAll("?", '?').replaceAll("(", '(').replaceAll(")", ')').replaceAll("“", '"')
  96                     .replaceAll("”", '"').replaceAll("!", '!').replaceAll("-", ' ').replace(/(<([^>]+)>)/ig, '')
  97                     .replace(/^\s+/ig, '').replace(/\s+$/ig, '');
  98             },
  99             cVersion = 999,
 100             classId = getQueryVariable('clazzid') || getQueryVariable('clazzId') || getQueryVariable('classid') ||
 101             getQueryVariable('classId'),
 102             courseId = getQueryVariable('courseid') || getQueryVariable('courseId'),
 103             UID = getCookie('_uid') || getCookie('UID'),
 104             FID = getCookie('fid'),
 105             jq;
 106         audioPlayer.loop = true;
 107         _w.audioPlayer = audioPlayer;
 108         _w.confirm = (msg) => {
 109             return true;
 110         }
 111         setInterval(function() {
 112             _w.confirm = (msg) => {
 113                 return true;
 114             }
 115         }, 2000);
 116         if (parseFloat(rate) == parseInt(rate)) {
 117             rate = parseInt(rate);
 118         } else {
 119             rate = parseFloat(rate);
 120         }
 121         try {
 122             _w.top.unrivalReviewMode = GM_getValue('unrivalreview', '0') || '0';
 123             _w.top.unrivalDoWork = GM_getValue('unrivaldowork', '1') || '1';
 124             _w.top.unrivalAutoSubmit = GM_getValue('unrivalautosubmit', '1') || '1';
 125             _w.top.unrivalAutoSave = GM_getValue('unrivalautosave', '0') || '0';
 126         } catch (e) {}
 127         if (_l.href.indexOf("knowledge/cards") > 0) {
 128             let allowBackground = false,
 129                 spans = _d.getElementsByTagName('span');
 130             for (let i = 0, l = spans.length; i < l; i++) {
 131                 if (spans[i].innerHTML.indexOf('章节未开放') != -1) {
 132                     if (_l.href.indexOf("ut=s") != -1) {
 133                         _l.href = _l.href.replace("ut=s", "ut=t").replace(/&cpi=[0-9]{1,10}/, '');
 134                     } else if (_l.href.indexOf("ut=t") != -1) {
 135                         spans[i].innerHTML = '此课程为闯关模式,请回到上一章节完成学习任务!'
 136                         return;
 137                     }
 138                     break;
 139                 }
 140             }
 141             _w.top.unrivalPageRd = String(Math.random());
 142             if (!isFf) {
 143                 try {
 144                     cVersion = parseInt(navigator.userAgent.match(/Chrome\/[0-9]{2,3}./)[0].replace('Chrome/', '')
 145                         .replace('.', ''));
 146                 } catch (e) {}
 147             }
 148             var busyThread = 0,
 149                 getStr = (str, start, end) => {
 150                     let res = str.substring(str.indexOf(start), str.indexOf(end)).replace(start, '');
 151                     return res;
 152                 },
 153                 scripts = _d.getElementsByTagName('script'),
 154                 param = null,
 155                 rt = '0.9';
 156             for (let i = 0, l = scripts.length; i < l; i++) {
 157                 if (scripts[i].innerHTML.indexOf('mArg = "";') != -1 && scripts[i].innerHTML.indexOf(
 158                         '==UserScript==') == -1) {
 159                     param = getStr(scripts[i].innerHTML, 'try{\n    mArg = ', ';\n}catch(e){');
 160                 }
 161             }
 162             if (param == null) {
 163                 return;
 164             }
 165             try {
 166                 vrefer = _d.getElementsByClassName('ans-attach-online ans-insertvideo-online')[0].src;
 167             } catch (e) {
 168                 vrefer = _p + '//' + _h + '/ananas/modules/video/index.html?v=2022-0902-2029';
 169             }
 170             GM_setValue('vrefer', vrefer);
 171             GM_setValue('host', _h);
 172             _d.getElementsByTagName("html")[0].innerHTML = `
 173     <!DOCTYPE html>
 174     <html lang="en">
 175         <head>
 176             <meta charset="UTF-8">
 177             <title>学习通小助手</title>
 178             <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
 179             <link href="https://z.chaoxing.com/yanshi/css/bootstrap.min.css" rel="stylesheet">
 180         </head>
 181         <body>
 182             <div class="row" style="margin: 10px;">
 183                 <div class="col-md-6 col-md-offset-3">
 184                     <div class="header clearfix">
 185                         <h3 class="text-muted" style="margin-top: 20px;margin-bottom: 0;float: left;"><a href="https://scriptcat.org/script-show-page/336" target="view_window">学习通小助手v1.0&ensp;</a></h3><div id="onlineNum"></div>
 186                     </div>
 187                     <hr style="margin-top: 10px;margin-bottom: 20px;">
 188                     <div class="panel panel-info" id="normalQuery">
 189                         <div class="panel-heading">任务配置</div>
 190                         <div class="panel-body">
 191                             <div>
 192                                 <div style="padding: 0;font-size: 20px;float: left;">视频倍速:</div>
 193                                 <div>
 194                                     <input type="number" id="unrivalRate" style="width: 80px;">
 195                                     &ensp;
 196                                     <a id='updateRateButton' class="btn btn-default">保存</a>
 197                                     &nbsp;|&nbsp;
 198                                     <a id='reviewModeButton' class="btn btn-default">复习模式</a>
 199                                     &nbsp;|&nbsp;
 200                                     <a id='videoTimeButton' class="btn btn-default">查看学习进度</a>
 201                                     &nbsp;|&nbsp;
 202                                     <a id='fuckMeModeButton' class="btn btn-default" href="https://scriptcat.org/script-show-page/379" target="view_window">后台挂机</a>
 203                                 </div><br>
 204                                 <div style="padding: 0;font-size: 20px;float: left;">章节测试:</div>
 205                                 <a id='autoDoWorkButton' class="btn btn-default">自动答题</a>&nbsp;|&nbsp;
 206                                 <a id='autoSubmitButton' class="btn btn-default">自动提交</a>&nbsp;|&nbsp;
 207                                 <a id='autoSaveButton' class="btn btn-default">自动保存</a>
 208                             </div>
 209                         </div>
 210                     </div>
 211                     <div class="panel panel-info" id='videoTime' style="display: none;height: 300px;">
 212                         <div class="panel-heading">学习进度</div>
 213                         <div class="panel-body" style="height: 100%;">
 214                             <iframe id="videoTimeContent" src="" frameborder="0" scrolling="auto"
 215                                 style="width: 100%;height: 85%;"></iframe>
 216                         </div>
 217                     </div>
 218                     <div class="panel panel-info">
 219                         <div class="panel-heading">任务列表</div>
 220                         <div class="panel-body" id='joblist'>
 221                         </div>
 222                     </div>
 223                     <div class="panel panel-info">
 224                         <div class="panel-heading">运行日志</div>
 225                         <div class="panel-body">
 226                             <div id="result" style="overflow:auto;line-height: 30px;">
 227                                 <div id="log">
 228                                     <span style="color: red">[00:00:00]如果此提示不消失,说明页面出现了错误,请联系作者</span>
 229                                 </div>
 230                             </div>
 231                         </div>
 232                     </div>
 233                     <div class="panel panel-info" id='workPanel' style="display: none;height: 1000px;">
 234                         <div class="panel-heading">章节测试</div>
 235                         <div class="panel-body" id='workWindow' style="height: 100%;">
 236                             <iframe id="frame_content" name="frame_content" src="" frameborder="0" scrolling="auto"
 237                                 style="width: 100%;height: 95%;"></iframe>
 238                         </div>
 239                     </div>
 240                 </div>
 241             </div>
 242         </body>
 243     </html>
 244     `;
 245             var logs = {
 246                     "logArry": [],
 247                     "addLog": function(str, color = "black") {
 248                         if (this.logArry.length >= 50) {
 249                             this.logArry.splice(0, 1);
 250                         }
 251                         var nowTime = new Date();
 252                         var nowHour = (Array(2).join(0) + nowTime.getHours()).slice(-2);
 253                         var nowMin = (Array(2).join(0) + nowTime.getMinutes()).slice(-2);
 254                         var nowSec = (Array(2).join(0) + nowTime.getSeconds()).slice(-2);
 255                         this.logArry.push("<span style='color: " + color + "'>[" + nowHour + ":" + nowMin + ":" +
 256                             nowSec + "] " + str + "</span>");
 257                         let logStr = "";
 258                         for (let logI = 0, logLen = this.logArry.length; logI < logLen; logI++) {
 259                             logStr += this.logArry[logI] + "<br>";
 260                         }
 261                         _d.getElementById('log').innerHTML = logStr;
 262                         var logElement = _d.getElementById('log');
 263                         logElement.scrollTop = logElement.scrollHeight;
 264                     }
 265                 },
 266                 htmlHook = setInterval(function() {
 267                     if (_d.getElementById('unrivalRate') && _d.getElementById('updateRateButton') && _d
 268                         .getElementById('reviewModeButton') && _d.getElementById('autoDoWorkButton') && _d
 269                         .getElementById('autoSubmitButton') && _d.getElementById('autoSaveButton')) {
 270                         jq = _w.top.$||_w.top.jQuery;
 271                         if (!backGround) {
 272                             _d.getElementById('fuckMeModeButton').style.display = "none";
 273                         }
 274                         allowBackground = Math.round(new Date() / 1000) - parseInt(GM_getValue(
 275                             'unrivalBackgroundVideoEnable',
 276                             '6')) < 15;
 277                         if (allowBackground) {
 278                             _d.getElementById('fuckMeModeButton').setAttribute('href', 'unrivalxxtbackground/');
 279                         }
 280                         clearInterval(htmlHook);
 281                         if (cVersion < 86) {
 282                             logs.addLog(
 283                                 '\u60a8\u7684\u6d4f\u89c8\u5668\u5185\u6838\u8fc7\u8001\uff0c\u8bf7\u66f4\u65b0\u7248\u672c\u6216\u4f7f\u7528\u4e3b\u6d41\u6d4f\u89c8\u5668\uff0c\u63a8\u8350\u003c\u0061\u0020\u0068\u0072\u0065\u0066\u003d\u0022\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0077\u0077\u0077\u002e\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u007a\u0068\u002d\u0063\u006e\u002f\u0065\u0064\u0067\u0065\u0022\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u003d\u0022\u0076\u0069\u0065\u0077\u005f\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u003e\u0065\u0064\u0067\u0065\u6d4f\u89c8\u5668\u003c\u002f\u0061\u003e',
 284                                 'red');
 285                             stop = true;
 286                             return;
 287                         }
 288                         if (isMobile) {
 289                             logs.addLog('手机浏览器不保证能正常运行此脚本', 'orange');
 290                         }
 291                         _d.addEventListener('visibilitychange', function() {
 292                             let isH = _d.hidden;
 293                             if (!isH) {
 294                                 logs.addLog('挂机功能不稳定,不建议长时间最小化窗口', 'orange');
 295                             }
 296                         });
 297                         _d.getElementById('unrivalRate').value = rate;
 298                         _d.getElementById('updateRateButton').onclick = function() {
 299                             let urate = _d.getElementById('unrivalRate').value;
 300                             if (parseFloat(urate) == parseInt(urate)) {
 301                                 urate = parseInt(urate);
 302                             } else {
 303                                 urate = parseFloat(urate);
 304                             }
 305                             GM_setValue('unrivalrate', urate);
 306                             rate = urate;
 307                             if (urate > 0) {
 308                                 logs.addLog('视频倍速已更新为' + urate + '倍,将在3秒内生效', 'green');
 309                             } else {
 310                                 logs.addLog('奇怪的倍速,将会自动跳过视频任务', 'orange');
 311                             }
 312                         }
 313                         _d.getElementById('reviewModeButton').onclick = function() {
 314                             let reviewButton = _d.getElementById('reviewModeButton');
 315                             if (reviewButton.getAttribute('class') == 'btn btn-default') {
 316                                 _d.getElementById('reviewModeButton').setAttribute('class', 'btn btn-success');
 317                                 logs.addLog('复习模式已开启,遇到已完成的视频任务不会跳过', 'green');
 318                                 GM_setValue('unrivalreview', '1');
 319                                 _w.top.unrivalReviewMode = '1';
 320                             } else {
 321                                 _d.getElementById('reviewModeButton').setAttribute('class', 'btn btn-default');
 322                                 logs.addLog('复习模式已关闭,遇到已完成的视频任务会自动跳过', 'green');
 323                                 GM_setValue('unrivalreview', '0');
 324                                 _w.top.unrivalReviewMode = '0';
 325                             }
 326                         }
 327                         _d.getElementById('autoDoWorkButton').onclick = function() {
 328                             let autoDoWorkButton = _d.getElementById('autoDoWorkButton');
 329                             if (autoDoWorkButton.getAttribute('class') == 'btn btn-default') {
 330                                 _d.getElementById('autoDoWorkButton').setAttribute('class', 'btn btn-success');
 331                                 logs.addLog('自动做章节测试已开启,将会自动做章节测试', 'green');
 332                                 GM_setValue('unrivaldowork', '1');
 333                                 _w.top.unrivalDoWork = '1';
 334                             } else {
 335                                 _d.getElementById('autoDoWorkButton').setAttribute('class', 'btn btn-default');
 336                                 logs.addLog('自动做章节测试已关闭,将不会自动做章节测试', 'green');
 337                                 GM_setValue('unrivaldowork', '0');
 338                                 _w.top.unrivalDoWork = '0';
 339                             }
 340                         }
 341                         _d.getElementById('autoSubmitButton').onclick = function() {
 342                             let autoSubmitButton = _d.getElementById('autoSubmitButton');
 343                             if (autoSubmitButton.getAttribute('class') == 'btn btn-default') {
 344                                 _d.getElementById('autoSubmitButton').setAttribute('class', 'btn btn-success');
 345                                 logs.addLog('符合提交标准的章节测试将会自动提交', 'green');
 346                                 GM_setValue('unrivalautosubmit', '1');
 347                                 _w.top.unrivalAutoSubmit = '1';
 348                             } else {
 349                                 _d.getElementById('autoSubmitButton').setAttribute('class', 'btn btn-default');
 350                                 logs.addLog('章节测试将不会自动提交', 'green');
 351                                 GM_setValue('unrivalautosubmit', '0');
 352                                 _w.top.unrivalAutoSubmit = '0';
 353                             }
 354                         }
 355                         _d.getElementById('autoSaveButton').onclick = function() {
 356                             let autoSaveButton = _d.getElementById('autoSaveButton');
 357                             if (autoSaveButton.getAttribute('class') == 'btn btn-default') {
 358                                 _d.getElementById('autoSaveButton').setAttribute('class', 'btn btn-success');
 359                                 logs.addLog('不符合提交标准的章节测试将会自动保存', 'green');
 360                                 GM_setValue('unrivalautosave', '1');
 361                                 _w.top.unrivalAutoSave = '1';
 362                             } else {
 363                                 _d.getElementById('autoSaveButton').setAttribute('class', 'btn btn-default');
 364                                 logs.addLog('不符合提交标准的章节测试将不会自动保存,等待用户自己操作', 'green');
 365                                 GM_setValue('unrivalautosave', '0');
 366                                 _w.top.unrivalAutoSave = '0';
 367                             }
 368                         }
 369                         _d.getElementById('videoTimeButton').onclick = function() {
 370                             _d.getElementById('videoTime').style.display = 'block';
 371                             _d.getElementById('videoTimeContent').src = _p +
 372                                 '//stat2-ans.chaoxing.com/task/s/index?courseid=' + courseId + '&clazzid=' +
 373                                 classId;
 374                         }
 375                     }
 376                 }, 100),
 377                 loopjob = () => {
 378                     if (_w.top.unrivalScriptList.length > 1) {
 379                         logs.addLog('您同时开启了多个刷课脚本,会挂科,会挂科,会挂科,会挂科,会挂科,会挂科,会挂科,会挂科', 'red');
 380                     }
 381                     if (cVersion < 8.6 * 10) {
 382                         logs.addLog(
 383                             '\u60a8\u7684\u6d4f\u89c8\u5668\u5185\u6838\u8fc7\u8001\uff0c\u8bf7\u66f4\u65b0\u7248\u672c\u6216\u4f7f\u7528\u4e3b\u6d41\u6d4f\u89c8\u5668\uff0c\u63a8\u8350\u003c\u0061\u0020\u0068\u0072\u0065\u0066\u003d\u0022\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0077\u0077\u0077\u002e\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u007a\u0068\u002d\u0063\u006e\u002f\u0065\u0064\u0067\u0065\u0022\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u003d\u0022\u0076\u0069\u0065\u0077\u005f\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u003e\u0065\u0064\u0067\u0065\u6d4f\u89c8\u5668\u003c\u002f\u0061\u003e',
 384                             'red');
 385                         stop = true;
 386                         return;
 387                     }
 388                     if (stop) {
 389                         return;
 390                     }
 391                     let missionli = missionList;
 392                     if (missionli == []) {
 393                         setTimeout(loopjob, 500);
 394                         return;
 395                     }
 396                     for (let itemName in missionli) {
 397                         if (missionli[itemName]['running']) {
 398                             setTimeout(loopjob, 500);
 399                             return;
 400                         }
 401                     }
 402                     for (let itemName in missionli) {
 403                         if (!missionli[itemName]['done']) {
 404                             switch (missionli[itemName]['type']) {
 405                                 case 'video':
 406                                     doVideo(missionli[itemName]);
 407                                     break;
 408                                 case 'document':
 409                                     doDocument(missionli[itemName]);
 410                                     break;
 411                                 case 'work':
 412                                     doWork(missionli[itemName]);
 413                                     break;
 414                             }
 415                             setTimeout(loopjob, 500);
 416                             return;
 417                         }
 418                     }
 419                     if (busyThread <= 0) {
 420                         if (jumpType != 2) {
 421                             _w.top.jump = true;
 422                             logs.addLog('所有任务处理完毕,5秒后自动下一章', 'green');
 423                         } else {
 424                             logs.addLog('所有任务处理完毕,用户设置为不跳转,脚本已结束运行,如需自动跳转,请编辑脚本代码参数', 'green');
 425                         }
 426                         clearInterval(loopjob);
 427                     } else {
 428                         setTimeout(loopjob, 500);
 429                     }
 430                 },
 431                 readyCheck = () => {
 432                     setTimeout(function() {
 433                         try {
 434                             if (!isCat) {
 435                                 logs.addLog(
 436                                     '推荐使用<a href="https://docs.scriptcat.org/use/#%E5%AE%89%E8%A3%85%E6%89%A9%E5%B1%95" target="view_window">脚本猫</a>运行此脚本,使用其他脚本管理器不保证能正常运行',
 437                                     'orange');
 438                             }
 439                             if (_w.top.unrivalReviewMode == '1') {
 440                                 logs.addLog('复习模式已开启,遇到已完成的视频任务不会跳过', 'green');
 441                                 _d.getElementById('reviewModeButton').setAttribute('class', ['btn btn-default',
 442                                     'btn btn-success'
 443                                 ][_w.top.unrivalReviewMode]);
 444                             }
 445                             if (_w.top.unrivalDoWork == '1') {
 446                                 logs.addLog('自动做章节测试已开启,将会自动做章节测试', 'green');
 447                                 _d.getElementById('autoDoWorkButton').setAttribute('class', ['btn btn-default',
 448                                     'btn btn-success'
 449                                 ][_w.top.unrivalDoWork]);
 450                             }
 451                             _d.getElementById('autoSubmitButton').setAttribute('class', ['btn btn-default',
 452                                 'btn btn-success'
 453                             ][_w.top.unrivalAutoSubmit]);
 454                             _d.getElementById('autoSaveButton').setAttribute('class', ['btn btn-default',
 455                                 'btn btn-success'
 456                             ][_w.top.unrivalAutoSave]);
 457                         } catch (e) {
 458                             console.log(e);
 459                             readyCheck();
 460                             return;
 461                         }
 462                     }, 500);
 463                 }
 464             readyCheck();
 465             try {
 466                 var pageData = JSON.parse(param);
 467             } catch (e) {
 468                 if (jumpType != 2) {
 469                     _w.top.jump = true;
 470                     logs.addLog('此页无任务,5秒后自动下一章', 'green');
 471                 } else {
 472                     logs.addLog('此页无任务,用户设置为不跳转,脚本已结束运行,如需自动跳转,请编辑脚本代码参数', 'green');
 473                 }
 474                 return;
 475             }
 476             var data = pageData['defaults'],
 477                 jobList = [],
 478                 classId = data['clazzId'],
 479                 chapterId = data['knowledgeid'],
 480                 reportUrl = data['reportUrl'],
 481                 ktoken = data['ktoken'];
 482             UID = UID || data['userid'];
 483             FID = FID || data['fid'];
 484             for (let i = 0, l = pageData['attachments'].length; i < l; i++) {
 485                 let item = pageData['attachments'][i];
 486                 if (item['job'] != true || item['isPassed'] == true) {
 487                     if (_w.top.unrivalReviewMode == '1' && item['type'] == 'video') {
 488                         jobList.push(item);
 489                     }
 490                     continue;
 491                 } else {
 492                     jobList.push(item);
 493                 }
 494             }
 495             var video_getReady = (item) => {
 496                     let statusUrl = _p + '//' + _h + '/ananas/status/' + item['property']['objectid'] + '?k=' +
 497                         FID + '&flag=normal&_dc=' + String(Math.round(new Date())),
 498                         doubleSpeed = item['property']['doublespeed'];
 499                     busyThread += 1;
 500                     GM_xmlhttpRequest({
 501                         method: "get",
 502                         headers: {
 503                             'Host': _h,
 504                             'Referer': vrefer,
 505                             'Sec-Fetch-Site': 'same-origin'
 506                         },
 507                         url: statusUrl,
 508                         onload: function(res) {
 509                             try {
 510                                 busyThread -= 1;
 511                                 let videoInfo = JSON.parse(res.responseText),
 512                                     duration = videoInfo['duration'],
 513                                     dtoken = videoInfo['dtoken'];
 514                                 if (duration == undefined) {
 515                                     _d.getElementById('joblist').innerHTML += `
 516                                 <div class="panel panel-default">
 517                                     <div class="panel-body">
 518                                         ` + '[无效视频]' + item['property']['name'] + `
 519                                     </div>
 520                                 </div>`
 521                                     return;
 522                                 }
 523                                 missionList['m' + item['jobid']] = {
 524                                     'module': item['property']['module'],
 525                                     'type': 'video',
 526                                     'dtoken': dtoken,
 527                                     'duration': duration,
 528                                     'objectId': item['property']['objectid'],
 529                                     'otherInfo': item['otherInfo'],
 530                                     'doublespeed': doubleSpeed,
 531                                     'jobid': item['jobid'],
 532                                     'name': item['property']['name'],
 533                                     'done': false,
 534                                     'running': false
 535                                 };
 536                                 _d.getElementById('joblist').innerHTML += `
 537                                 <div class="panel panel-default">
 538                                     <div class="panel-body">
 539                                         ` + '[视频]' + item['property']['name'] + `
 540                                     </div>
 541                                 </div>`
 542                             } catch (e) {}
 543                         },
 544                         onerror: function(err) {
 545                             console.log(err);
 546                             if (err.error.indexOf('@connect list') >= 0) {
 547                                 logs.addLog('请添加安全网址,将 【 //@connect      ' + _h +
 548                                     ' 】方括号里的内容(不包括方括号)添加到脚本代码内指定位置,否则脚本无法正常运行,如图所示:', 'red');
 549                                 logs.addLog(
 550                                     '<img src="https://pan-yz.chaoxing.com/thumbnail/0,0,0/609a8b79cbd6a91d10c207cf2b5f368d">'
 551                                 );
 552                                 stop = true;
 553                             } else {
 554                                 logs.addLog('获取任务详情失败', 'red');
 555                                 logs.addLog('错误原因:' + err.error, 'red');
 556                             }
 557                         }
 558                     });
 559                 },
 560                 doVideo = (item) => {
 561                     if (rate <= 0) {
 562                         missionList['m' + item['jobid']]['running'] = true;
 563                         logs.addLog('奇怪的倍速,视频已自动跳过', 'orange');
 564                         setTimeout(function() {
 565                             missionList['m' + item['jobid']]['running'] = false;
 566                             missionList['m' + item['jobid']]['done'] = true;
 567                         }, 5000);
 568                         return;
 569                     }
 570                     if (allowBackground && backGround) {
 571                         if (_w.top.document.getElementsByClassName('catalog_points_sa').length > 0 || _w.top.document
 572                             .getElementsByClassName('lock').length > 0) {
 573                             logs.addLog('您已安装超星挂机小助手,但此课程可能为闯关模式,不支持后台挂机,将为您在线完成', 'blue');
 574                         } else {
 575                             item['userid'] = UID;
 576                             item['classId'] = classId;
 577                             item['review'] = [false, true][_w.top.unrivalReviewMode];
 578                             item['reportUrl'] = reportUrl;
 579                             GM_setValue('unrivalBackgroundVideo', item);
 580                             _d.cookie = "videojs_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
 581                             logs.addLog(
 582                                 '您已安装超星挂机小助手,已添加至后台任务,<a href="unrivalxxtbackground/" target="view_window">点我查看后台</a>',
 583                                 'green');
 584                             missionList['m' + item['jobid']]['running'] = true;
 585                             setTimeout(function() {
 586                                 missionList['m' + item['jobid']]['running'] = false;
 587                                 missionList['m' + item['jobid']]['done'] = true;
 588                             }, 5000);
 589                             return;
 590                         }
 591                     }
 592                     let videojs_id = String(parseInt(Math.random() * 9999999));
 593                     _d.cookie = 'videojs_id=' + videojs_id + ';path=/'
 594                     logs.addLog('开始刷视频:' + item['name'] + ',倍速:' + String(rate) + '倍');
 595                     logs.addLog('视频观看信息每60秒上报一次,请耐心等待', 'green');
 596                     logs.addLog('如遇脚本使用异常情况,请检查脚本版本是否为最新版,<a href="https://scriptcat.org/script-show-page/336" target="view_window">点我</a>或<a href="https://greasyfork.org/zh-CN/scripts/441501" target="view_window">点我</a>检查','orange');
 597                     if (disableMonitor) {
 598                         logs.addLog('解除多端学习监控有清除进度风险,请谨慎使用', 'orange');
 599                     }
 600                     let dtype = 'Video';
 601                     if (item['module'].includes('audio')) {
 602                         dtype = 'Audio';
 603                         rt = '';
 604                     }
 605                     let playTime = 0,
 606                         playsTime = 0,
 607                         isdrag = '3',
 608                         times = 0,
 609                         encUrl = '',
 610                         first = true,
 611                         loop = setInterval(function() {
 612                             if (rate <= 0) {
 613                                 clearInterval(loop);
 614                                 logs.addLog('奇怪的倍速,视频已自动跳过', 'orange');
 615                                 setTimeout(function() {
 616                                     missionList['m' + item['jobid']]['running'] = false;
 617                                     missionList['m' + item['jobid']]['done'] = true;
 618                                 }, 5000);
 619                                 return;
 620                             } else if (item['doublespeed'] == 0 && rate > 1 && _w.top.unrivalReviewMode == '0') {
 621                                 rate = 1;
 622                                 logs.addLog('该视频不允许倍速播放,已恢复至一倍速,高倍速会被清空进度挂科,勿存侥幸', 'red');
 623                             }
 624                             playsTime += rate;
 625                             playTime = Math.ceil(playsTime);
 626                             if (times == 0 || times % 60 == 0 || playTime >= item['duration']) {
 627                                 if (first) {
 628                                     playTime = 0;
 629                                 }
 630                                 if (playTime >= item['duration']) {
 631                                     clearInterval(loop);
 632                                     playTime = item['duration'];
 633                                     isdrag = '4';
 634                                 } else if (playTime > 0) {
 635                                     isdrag = '0';
 636                                 }
 637                                 encUrl = host + 'chaoXing/v3/getEnc.php?classid=' + classId +
 638                                     '&playtime=' + playTime + '&duration=' + item['duration'] + '&objectid=' + item[
 639                                         'objectId'] + '&jobid=' + item['jobid'] + '&uid=' + UID;
 640                                 busyThread += 1;
 641                                 let _bold_playTime = playTime;
 642                                 function ecOnload(res) {
 643                                     let enc='';
 644                                     if (res) {
 645                                         enc = res.responseText;
 646                                         if (enc.includes('--#')) {
 647                                             let warnInfo = enc.match(new RegExp('--#(.*?)--#', "ig"))[0]
 648                                                 .replace(/--#/ig, '');
 649                                             logs.addLog(warnInfo, 'red');
 650                                             enc = enc.replace(/--#(.*?)--#/ig, '');
 651                                         }
 652                                         if (enc.indexOf('.stop') >= 0) {
 653                                             clearInterval(loop);
 654                                             stop = true;
 655                                             return;
 656                                         }
 657                                     }
 658                                     if(enc.length!=32){
 659                                         clearInterval(loop);
 660                                         stop = true;
 661                                         return;
 662                                     }
 663                                     let reportsUrl = reportUrl + '/' + item['dtoken'] +
 664                                         '?clazzId=' + classId + '&playingTime=' + _bold_playTime +
 665                                         '&duration=' + item['duration'] + '&clipTime=0_' + item[
 666                                             'duration'] + '&objectId=' + item['objectId'] +
 667                                         '&otherInfo=' + item['otherInfo'] + '&jobid=' + item[
 668                                             'jobid'] + '&userid=' + UID + '&isdrag=' + isdrag +
 669                                         '&view=pc&enc=' + enc + '&rt=' + rt + '&dtype=' + dtype +
 670                                         '&_t=' + String(Math.round(new Date()));
 671                                     GM_xmlhttpRequest({
 672                                         method: "get",
 673                                         headers: {
 674                                             'Host': _h,
 675                                             'Referer': vrefer,
 676                                             'Sec-Fetch-Site': 'same-origin',
 677                                             'Content-Type': 'application/json'
 678                                         },
 679                                         url: reportsUrl,
 680                                         onload: function(res) {
 681                                             try {
 682                                                 let today = new Date(),
 683                                                     todayStr = today.getFullYear() +
 684                                                     'd' + today.getMonth() + 'd' + today
 685                                                     .getDate(),
 686                                                     timelong = GM_getValue(
 687                                                         'unrivaltimelong', {});
 688                                                 if (timelong[UID] == undefined ||
 689                                                     timelong[UID]['today'] != todayStr
 690                                                 ) {
 691                                                     timelong[UID] = {
 692                                                         'time': 0,
 693                                                         'today': todayStr
 694                                                     };
 695                                                 } else {
 696                                                     timelong[UID]['time']++;
 697                                                 }
 698                                                 GM_setValue('unrivaltimelong',
 699                                                     timelong);
 700                                                 busyThread -= 1;
 701                                                 if (timelong[UID]['time'] / 60 > 22 &&
 702                                                     item['doublespeed'] == 0 && _w.top
 703                                                     .unrivalReviewMode == '0') {
 704                                                     clearInterval(loop);
 705                                                     logs.addLog(
 706                                                         '今日学习时间过长,继续学习会导致清空进度,请明天再来',
 707                                                         'red');
 708                                                     setTimeout(function() {
 709                                                         missionList['m' + item[
 710                                                             'jobid']][
 711                                                             'running'
 712                                                         ] = false;
 713                                                         missionList['m' + item[
 714                                                             'jobid']][
 715                                                             'done'
 716                                                         ] = true;
 717                                                     }, 5000);
 718                                                     return;
 719                                                 }
 720                                                 let ispass = JSON.parse(res
 721                                                     .responseText);
 722                                                 first = false;
 723                                                 if (ispass['isPassed'] && _w.top
 724                                                     .unrivalReviewMode == '0') {
 725                                                     logs.addLog('视频任务已完成', 'green');
 726                                                     missionList['m' + item['jobid']][
 727                                                         'running'
 728                                                     ] = false;
 729                                                     missionList['m' + item['jobid']][
 730                                                         'done'
 731                                                     ] = true;
 732                                                     clearInterval(loop);
 733                                                 } else if (isdrag == '4') {
 734                                                     if (_w.top.unrivalReviewMode ==
 735                                                         '1') {
 736                                                         logs.addLog('视频已观看完毕', 'green');
 737                                                     } else {
 738                                                         logs.addLog('视频已观看完毕,但视频任务未完成',
 739                                                             'red');
 740                                                     }
 741                                                     missionList['m' + item['jobid']][
 742                                                         'running'
 743                                                     ] = false;
 744                                                     missionList['m' + item['jobid']][
 745                                                         'done'
 746                                                     ] = true;
 747                                                     try {
 748                                                         clearInterval(loop);
 749                                                     } catch (e) {
 750      
 751                                                     }
 752                                                 } else {
 753                                                     logs.addLog(item['name'] + '已观看' +
 754                                                         _bold_playTime + '秒,剩余大约' +
 755                                                         String(item['duration'] -
 756                                                             _bold_playTime) + '秒');
 757                                                 }
 758                                             } catch (e) {
 759                                                 console.log(e);
 760                                                 if (res.responseText.indexOf('验证码') >=
 761                                                     0) {
 762                                                     logs.addLog('已被超星风控,请<a href="' +
 763                                                         reportsUrl +
 764                                                         '" target="_blank">点我处理</a>,60秒后自动刷新页面',
 765                                                         'red');
 766                                                     missionList['m' + item['jobid']][
 767                                                         'running'
 768                                                     ] = false;
 769                                                     clearInterval(loop);
 770                                                     stop = true;
 771                                                     setTimeout(function() {
 772                                                         _l.reload();
 773                                                     }, 60000);
 774                                                     return;
 775                                                 }
 776                                                 if (rt == '0.9') {
 777                                                     if (first) {
 778                                                         logs.addLog('超星返回错误信息,尝试更换参数',
 779                                                             'orange');
 780                                                         rt = '1';
 781                                                         times = -3;
 782                                                     } else {
 783                                                         logs.addLog('超星返回错误信息,十秒后重试(1)',
 784                                                             'red');
 785                                                         times = -10;
 786                                                     }
 787                                                     return;
 788                                                 } else {
 789                                                     if (first) {
 790                                                         rt = '0.9';
 791                                                     }
 792                                                     logs.addLog('超星返回错误信息,十秒后重试(2)',
 793                                                         'red');
 794                                                     times = -10;
 795                                                     console.log(res.responseText);
 796                                                     return;
 797                                                 }
 798                                             }
 799                                         },
 800                                         onerror: function(err) {
 801                                             console.log(err);
 802                                             if (err.error.indexOf('@connect list') >=
 803                                                 0) {
 804                                                 logs.addLog(
 805                                                     '请添加安全网址,将 【 //@connect      ' +
 806                                                     _h +
 807                                                     ' 】方括号里的内容(不包括方括号)添加到脚本代码内指定位置,否则脚本无法正常运行,如图所示:',
 808                                                     'red');
 809                                                 logs.addLog(
 810                                                     '<img src="https://pan-yz.chaoxing.com/thumbnail/0,0,0/609a8b79cbd6a91d10c207cf2b5f368d">'
 811                                                 );
 812                                                 stop = true;
 813                                             } else {
 814                                                 logs.addLog('观看视频失败', 'red');
 815                                                 logs.addLog('错误原因:' + err.error, 'red');
 816                                             }
 817                                             missionList['m' + item['jobid']][
 818                                                 'running'
 819                                             ] = false;
 820                                             clearInterval(loop);
 821                                         }
 822                                     });
 823                                 };
 824                                 GM_xmlhttpRequest({
 825                                     method: "get",
 826                                     url: encUrl,
 827                                     timeout: 2000,
 828                                     onload: ecOnload,
 829                                     onerror: function(err) {
 830                                         console.log(err);
 831                                         ecOnload(false);
 832                                     },
 833                                     ontimeout: function(err) {
 834                                         console.log(err);
 835                                         ecOnload(false);
 836                                     }
 837                                 });
 838                             }
 839                             times += 1;
 840                         }, 1000);
 841                     missionList['m' + item['jobid']]['running'] = true;
 842                 },
 843                 doDocument = (item) => {
 844                     missionList['m' + item['jobid']]['running'] = true;
 845                     logs.addLog('开始刷文档:' + item['name']);
 846                     setTimeout(function() {
 847                         busyThread += 1;
 848                         GM_xmlhttpRequest({
 849                             method: "get",
 850                             url: _p + '//' + _h + '/ananas/job/document?jobid=' + item['jobid'] +
 851                                 '&knowledgeid=' + chapterId + '&courseid=' + courseId + '&clazzid=' +
 852                                 classId + '&jtoken=' + item['jtoken'],
 853                             onload: function(res) {
 854                                 try {
 855                                     busyThread -= 1;
 856                                     let ispass = JSON.parse(res.responseText);
 857                                     if (ispass['status']) {
 858                                         logs.addLog('文档任务已完成', 'green');
 859                                     } else {
 860                                         logs.addLog('文档已阅读完成,但任务点未完成', 'red');
 861                                     }
 862      
 863                                 } catch (err) {
 864                                     console.log(err);
 865                                     console.log(res.responseText);
 866                                     logs.addLog('解析文档内容失败', 'red');
 867                                 }
 868                                 missionList['m' + item['jobid']]['running'] = false;
 869                                 missionList['m' + item['jobid']]['done'] = true;
 870                             },
 871                             onerror: function(err) {
 872                                 console.log(err);
 873                                 if (err.error.indexOf('@connect list') >= 0) {
 874                                     logs.addLog('请添加安全网址,将 【 //@connect      ' + _h +
 875                                         ' 】方括号里的内容(不包括方括号)添加到脚本代码内指定位置,否则脚本无法正常运行,如图所示:', 'red');
 876                                     logs.addLog(
 877                                         '<img src="https://pan-yz.chaoxing.com/thumbnail/0,0,0/609a8b79cbd6a91d10c207cf2b5f368d">'
 878                                     );
 879                                     stop = true;
 880                                 } else {
 881                                     logs.addLog('阅读文档失败', 'red');
 882                                     logs.addLog('错误原因:' + err.error, 'red');
 883                                 }
 884                                 missionList['m' + item['jobid']]['running'] = false;
 885                                 missionList['m' + item['jobid']]['done'] = true;
 886                             }
 887                         });
 888                     }, parseInt(Math.random() * 2000 + 9000, 10))
 889                 },
 890                 doWork = (item) => {
 891                     missionList['m' + item['jobid']]['running'] = true;
 892                     logs.addLog('开始刷章节测试:' + item['name']);
 893                     logs.addLog('您设置的答题正确率为:' + String(accuracy) + '%,只有在高于此正确率时才会提交测试', 'blue');
 894                     _d.getElementById('workPanel').style.display = 'block';
 895                     _d.getElementById('frame_content').src = _p + '//' + _h + '/work/phone/work?workId=' + item['jobid']
 896                         .replace('work-', '') + '&courseId=' + courseId + '&clazzId=' + classId + '&knowledgeId=' +
 897                         chapterId + '&jobId=' + item['jobid'] + '&enc=' + item['enc'];
 898                     _w.top.unrivalWorkInfo = '';
 899                     _w.top.unrivalDoneWorkId = '';
 900                     setInterval(function() {
 901                         if (_w.top.unrivalWorkInfo != '') {
 902                             logs.addLog(_w.top.unrivalWorkInfo);
 903                             _w.top.unrivalWorkInfo = '';
 904                         }
 905                     }, 100);
 906                     let checkcross = setInterval(function() {
 907                         if (_w.top.unrivalWorkDone == false) {
 908                             clearInterval(checkcross);
 909                             return;
 910                         }
 911                         let ifW = _d.getElementById('frame_content').contentWindow;
 912                         try {
 913                             ifW.location.href;
 914                         } catch (e) {
 915                             console.log(e);
 916                             if (e.message.indexOf('cross-origin') != -1) {
 917                                 clearInterval(checkcross);
 918                                 _w.top.unrivalWorkDone = true;
 919                                 return;
 920                             }
 921                         }
 922                     }, 2000);
 923                     let workDoneInterval = setInterval(function() {
 924                         if (_w.top.unrivalWorkDone) {
 925                             _w.top.unrivalWorkDone = false;
 926                             clearInterval(workDoneInterval);
 927                             _w.top.unrivalDoneWorkId = '';
 928                             _d.getElementById('workPanel').style.display = 'none';
 929                             _d.getElementById('frame_content').src = '';
 930                             setTimeout(function() {
 931                                 missionList['m' + item['jobid']]['running'] = false;
 932                                 missionList['m' + item['jobid']]['done'] = true;
 933                             }, 5000);
 934                         }
 935                     }, 500);
 936                 },
 937                 missionList = [];
 938             if (jobList.length <= 0) {
 939                 if (jumpType != 2) {
 940                     _w.top.jump = true;
 941                     logs.addLog('此页无任务,5秒后自动下一章', 'green');
 942                 } else {
 943                     logs.addLog('此页无任务,用户设置为不跳转,脚本已结束运行,如需自动跳转,请编辑脚本代码参数', 'green');
 944                 }
 945                 return;
 946             }
 947             for (let i = 0, l = jobList.length; i < l; i++) {
 948                 let item = jobList[i];
 949                 if (item['type'] == 'video') {
 950                     video_getReady(item);
 951                 } else if (item['type'] == 'document') {
 952                     missionList['m' + item['jobid']] = {
 953                         'type': 'document',
 954                         'jtoken': item['jtoken'],
 955                         'jobid': item['jobid'],
 956                         'name': item['property']['name'],
 957                         'done': false,
 958                         'running': false
 959                     };
 960                     _d.getElementById('joblist').innerHTML += `
 961                                 <div class="panel panel-default">
 962                                     <div class="panel-body">
 963                                         ` + '[文档]' + item['property']['name'] + `
 964                                     </div>
 965                                 </div>`
 966                 } else if (item['type'] == 'workid' && _w.top.unrivalDoWork == '1') {
 967                     missionList['m' + item['jobid']] = {
 968                         'type': 'work',
 969                         'workid': item['property']['workid'],
 970                         'jobid': item['jobid'],
 971                         'name': item['property']['title'],
 972                         'enc': item['enc'],
 973                         'done': false,
 974                         'running': false
 975                     };
 976                     _d.getElementById('joblist').innerHTML += `
 977                                 <div class="panel panel-default">
 978                                     <div class="panel-body">
 979                                         ` + '[章节测试]' + item['property']['title'] + `
 980                                     </div>
 981                                 </div>`
 982                 } else {
 983                     try {
 984                         let jobName = item['property']['name'];
 985                         if (jobName == undefined) {
 986                             jobName = item['property']['title'];
 987                         }
 988                         _d.getElementById('joblist').innerHTML += `
 989                                 <div class="panel panel-default">
 990                                     <div class="panel-body">
 991                                         ` + '已跳过:' + jobName + `
 992                                     </div>
 993                                 </div>`
 994                     } catch (e) {}
 995                 }
 996             }
 997             loopjob();
 998         } else if (_l.href.indexOf("mycourse/studentstudy") > 0) {
 999             setInterval(function() {
1000                 try {
1001                     _w.jQuery.fn.viewer.Constructor.prototype.show=()=>{};
1002                 } catch (e) {
1003                 }
1004             }, 1000);
1005             try {
1006                 _w.unrivalScriptList.push('Fuck me please');
1007             } catch (e) {
1008                 _w.unrivalScriptList = ['Fuck me please'];
1009             }
1010             function checkOffline() {
1011                 let dleft = _d.getElementsByClassName('left');
1012                 if (dleft.length == 1) {
1013                     let img = dleft[0].getElementsByTagName('img');
1014                     if (img.length == 1) {
1015                         if (img[0].src.indexOf('loading.gif') != -1) {
1016                             return true;
1017                         }
1018                     }
1019                 }
1020                 return false;
1021             }
1022             setInterval(function() {
1023                 if (checkOffline()) {
1024                     setTimeout(function() {
1025                         if (checkOffline()) {
1026                             _l.reload();
1027                         }
1028                     }, 10000)
1029                 }
1030             }, 3000);
1031             _d.addEventListener('visibilitychange', function() {
1032                 if (_d.hidden) {
1033                     audioPlayer.play();
1034                     var timer = setInterval(function() {
1035                         if (c) {
1036                             _d.title = '🙈挂机中';
1037                             c = 0;
1038                         } else {
1039                             _d.title = '🙉挂机中';
1040                             c = 1;
1041                         }
1042                         if (!_d.hidden) {
1043                             clearInterval(timer);
1044                             _d.title = '学生学习页面';
1045                         }
1046                     }, 1300);
1047                 } else {
1048                     audioPlayer.pause();
1049                 }
1050             });
1051             _w.unrivalgetTeacherAjax = _w.getTeacherAjax;
1052             _w.getTeacherAjax = (courseid, classid, cid) => {
1053                 if (cid == getQueryVariable('chapterId')) {
1054                     return;
1055                 }
1056                 _w.top.unrivalPageRd = '';
1057                 _w.unrivalgetTeacherAjax(courseid, classid, cid);
1058             }
1059             if (disableMonitor == 1) {
1060                 _w.appendChild = _w.Element.prototype.appendChild;
1061                 _w.Element.prototype.appendChild = function() {
1062                     try {
1063                         if (arguments[0].src.indexOf('detect.chaoxing.com') > 0) {
1064                             return;
1065                         }
1066                     } catch (e) {}
1067                     _w.appendChild.apply(this, arguments);
1068                 };
1069             }
1070      
1071             _w.jump = false;
1072             setInterval(function() {
1073                 if (getQueryVariable('mooc2') == '1') {
1074                     let tabs = _d.getElementsByClassName('posCatalog_select');
1075                     for (let i = 0, l = tabs.length; i < l; i++) {
1076                         let tabId = tabs[i].getAttribute('id');
1077                         if (tabId.indexOf('cur') >= 0 && tabs[i].getAttribute('class') == 'posCatalog_select') {
1078                             tabs[i].setAttribute('onclick', "getTeacherAjax('" + courseId + "','" + classId +
1079                                 "','" + tabId.replace('cur', '') + "');");
1080                         }
1081                     }
1082                 } else {
1083                     let h4s = _d.getElementsByTagName('h4'),
1084                         h5s = _d.getElementsByTagName('h5');
1085                     for (let i = 0, l = h4s.length; i < l; i++) {
1086                         if (h4s[i].getAttribute('id').indexOf('cur') >= 0) {
1087                             h4s[i].setAttribute('onclick', "getTeacherAjax('" + courseId + "','" + classId +
1088                                 "','" + h4s[i].getAttribute('id').replace('cur', '') + "');");
1089                         }
1090                     }
1091                     for (let i = 0, l = h5s.length; i < l; i++) {
1092                         if (h5s[i].getAttribute('id').indexOf('cur') >= 0) {
1093                             h5s[i].setAttribute('onclick', "getTeacherAjax('" + courseId + "','" + classId +
1094                                 "','" + h5s[i].getAttribute('id').replace('cur', '') + "');");
1095                         }
1096                     }
1097                 }
1098             }, 1000);
1099             setInterval(function() {
1100                 let but = null;
1101                 if (_w.jump) {
1102                     _w.jump = false;
1103                     _w.top.unrivalDoneWorkId = '';
1104                     _w.jjump = (rd) => {
1105                         if (rd != _w.top.unrivalPageRd) {
1106                             return;
1107                         }
1108                         try {
1109                             setTimeout(function() {
1110                                 if (jumpType == 1) {
1111                                     if (getQueryVariable('mooc2') == '1') {
1112                                         but = _d.getElementsByClassName(
1113                                             'jb_btn jb_btn_92 fs14 prev_next next');
1114                                     } else {
1115                                         but = _d.getElementsByClassName('orientationright');
1116                                     }
1117                                     try {
1118                                         setTimeout(function() {
1119                                             if (rd != _w.top.unrivalPageRd) {
1120                                                 return;
1121                                             }
1122                                             but[0].click();
1123                                         }, 2000);
1124                                     } catch (e) {}
1125                                     return;
1126                                 }
1127                                 if (getQueryVariable('mooc2') == '1') {
1128                                     let ul = _d.getElementsByClassName('prev_ul')[0],
1129                                         lis = ul.getElementsByTagName('li');
1130                                     for (let i = 0, l = lis.length; i < l; i++) {
1131                                         if (lis[i].getAttribute('class') == 'active') {
1132                                             if (i + 1 >= l) {
1133                                                 break;
1134                                             } else {
1135                                                 try {
1136                                                     lis[i + 1].click();
1137                                                 } catch (e) {}
1138                                                 return;
1139                                             }
1140                                         }
1141                                     }
1142                                     let tabs = _d.getElementsByClassName('posCatalog_select');
1143                                     for (let i = 0, l = tabs.length; i < l; i++) {
1144                                         if (tabs[i].getAttribute('class') ==
1145                                             'posCatalog_select posCatalog_active') {
1146                                             while (i + 1 < tabs.length) {
1147                                                 let nextTab = tabs[i + 1];
1148                                                 if ((nextTab.innerHTML.includes(
1149                                                             'icon_Completed prevTips') && _w.top
1150                                                         .unrivalReviewMode == '0') || nextTab
1151                                                     .innerHTML.includes(
1152                                                         'catalog_points_er prevTips')) {
1153                                                     i++;
1154                                                     continue;
1155                                                 }
1156                                                 if (nextTab.id.indexOf('cur') < 0) {
1157                                                     i++;
1158                                                     continue;
1159                                                 }
1160                                                 let clickF = setInterval(function() {
1161                                                     if (rd != _w.top.unrivalPageRd) {
1162                                                         clearInterval(clickF);
1163                                                         return;
1164                                                     }
1165                                                     nextTab.click();
1166                                                 }, 2000);
1167                                                 break;
1168                                             }
1169                                             break;
1170                                         }
1171                                     }
1172                                 } else {
1173                                     let div = _d.getElementsByClassName('tabtags')[0],
1174                                         spans = div.getElementsByTagName('span');
1175                                     for (let i = 0, l = spans.length; i < l; i++) {
1176                                         if (spans[i].getAttribute('class').indexOf('currents') >=
1177                                             0) {
1178                                             if (i + 1 == l) {
1179                                                 break;
1180                                             } else {
1181                                                 try {
1182                                                     spans[i + 1].click();
1183                                                 } catch (e) {}
1184                                                 return;
1185                                             }
1186                                         }
1187                                     }
1188                                     let tabs = _d.getElementsByTagName('span'),
1189                                         newTabs = [];
1190                                     for (let i = 0, l = tabs.length; i < l; i++) {
1191                                         if (tabs[i].getAttribute('style') != null && tabs[i]
1192                                             .getAttribute('style').indexOf(
1193                                                 'cursor:pointer;height:18px;') >= 0) {
1194                                             newTabs.push(tabs[i]);
1195                                         }
1196                                     }
1197                                     tabs = newTabs;
1198                                     for (let i = 0, l = tabs.length; i < l; i++) {
1199                                         if (tabs[i].parentNode.getAttribute('class') ==
1200                                             'currents') {
1201                                             while (i + 1 < tabs.length) {
1202                                                 let nextTab = tabs[i + 1].parentNode;
1203                                                 if ((nextTab.innerHTML.includes(
1204                                                             'roundpoint  blue') && _w.top
1205                                                         .unrivalReviewMode == '0') || nextTab
1206                                                     .innerHTML.includes('roundpointStudent  lock')
1207                                                 ) {
1208                                                     i++;
1209                                                     continue;
1210                                                 }
1211                                                 if (nextTab.id.indexOf('cur') < 0) {
1212                                                     i++;
1213                                                     continue;
1214                                                 }
1215                                                 let clickF = setInterval(function() {
1216                                                     if (rd != _w.top.unrivalPageRd) {
1217                                                         clearInterval(clickF);
1218                                                         return;
1219                                                     }
1220                                                     nextTab.click();
1221                                                 }, 2000);
1222                                                 break;
1223                                             }
1224                                             break;
1225                                         }
1226                                     }
1227                                 }
1228                             }, 2000);
1229                         } catch (e) {}
1230                     }
1231                     _w.onReadComplete1();
1232                     setTimeout('jjump("' + _w.top.unrivalPageRd + '")', 2856);
1233                 }
1234             }, 200);
1235         } else if (_l.href.indexOf("work/phone/doHomeWork") > 0) {
1236             var wIdE = _d.getElementById('workLibraryId') || _d.getElementById('oldWorkId'),
1237                 wid = wIdE.value;
1238             _w.top.unrivalWorkDone = false;
1239             _w.aalert = _w.alert;
1240             _w.alert = (msg) => {
1241                 if (msg == '保存成功') {
1242                     _w.top.unrivalDoneWorkId = getQueryVariable('workId');
1243                     return;
1244                 }
1245                 aalert(msg);
1246             }
1247             if (_w.top.unrivalDoneWorkId == getQueryVariable('workId')) {
1248                 _w.top.unrivalWorkDone = true;
1249                 return;
1250             }
1251             _w.confirm = (msg) => {
1252                 return true;
1253             }
1254             var questionList = [],
1255                 questionsElement = _d.getElementsByClassName('Py-mian1'),
1256                 questionNum = questionsElement.length,
1257                 totalQuestionNum = questionNum;
1258             for (let i = 0; i < questionNum; i++) {
1259                 let questionElement = questionsElement[i],
1260                     idElements = questionElement.getElementsByTagName('input'),
1261                     questionId = '0',
1262                     question = questionElement.getElementsByClassName('Py-m1-title fs16')[0].innerHTML;
1263                 question = handleImgs(question).replace(/(<([^>]+)>)/ig, '').replace(/[0-9]{1,3}.\[(.*?)\]/ig, '').replaceAll('\n',
1264                     '').replace(/^\s+/ig, '').replace(/\s+$/ig, '');
1265                 for (let z = 0, k = idElements.length; z < k; z++) {
1266                     try {
1267                         if (idElements[z].getAttribute('name').indexOf('answer') >= 0) {
1268                             questionId = idElements[z].getAttribute('name').replace('type', '');
1269                             break;
1270                         }
1271                     } catch (e) {
1272                         console.log(e);
1273                         continue;
1274                     }
1275                 }
1276                 if (questionId == '0' || question == '') {
1277                     continue;
1278                 }
1279                 typeE = questionElement.getElementsByTagName('input');
1280                 if (typeE == null || typeE == []) {
1281                     continue;
1282                 }
1283                 let typeN = 'fuckme';
1284                 for (let g = 0, h = typeE.length; g < h; g++) {
1285                     if (typeE[g].id == 'answertype' + questionId.replace('answer', '').replace('check', '')) {
1286                         typeN = typeE[g].value;
1287                         break;
1288                     }
1289                 }
1290                 if (['0', '1', '3'].indexOf(typeN) < 0) {
1291                     continue;
1292                 }
1293                 type = {
1294                     '0': '单选题',
1295                     '1': '多选题',
1296                     '3': '判断题'
1297                 } [typeN];
1298                 let optionList = {
1299                     length: 0
1300                 };
1301                 if (['单选题', '多选题'].indexOf(type) >= 0) {
1302                     let answersElements = questionElement.getElementsByClassName('answerList')[0].getElementsByTagName(
1303                         'li');
1304                     for (let x = 0, j = answersElements.length; x < j; x++) {
1305                         let optionE = answersElements[x],
1306                             optionTextE = trim(optionE.innerHTML.replace(/(^\s*)|(\s*$)/g, "")),
1307                             optionText = optionTextE.slice(1).replace(/(^\s*)|(\s*$)/g, ""),
1308                             optionValue = optionTextE.slice(0, 1),
1309                             optionId = optionE.getAttribute('id-param');
1310                         if (optionText == '') {
1311                             break;
1312                         }
1313                         optionList[optionText] = {
1314                             'id': optionId,
1315                             'value': optionValue
1316                         }
1317                         optionList.length++;
1318                     }
1319                     if (answersElements.length != optionList.length) {
1320                         continue;
1321                     }
1322                 }
1323                 questionList.push({
1324                     'question': question,
1325                     'type': type,
1326                     'questionid': questionId,
1327                     'options': optionList
1328                 });
1329             }
1330             var qu = null,
1331                 nowTime = -2000,
1332                 busyThread = questionList.length,
1333                 ctOnload = function(res,quu) {
1334                     busyThread -= 1;
1335                     var ctResult = {
1336                         'code': -1,
1337                         'finalUrl': '',
1338                         'data': '未找到答案'
1339                     };
1340                     if (res) {
1341                         try {
1342                             var responseText = res.responseText,
1343                                 ctResult = JSON.parse(responseText);
1344                         } catch (e) {
1345                             console.log(e);
1346                             if (res.finalUrl.includes('getAnswer.php')) {
1347                                 _w.top.unrivalWorkInfo = '查题错误,服务器连接失败';
1348                                 return;
1349                             }
1350                         }
1351                     }
1352                     try {
1353                         let choiceEs = _d.getElementsByTagName('li');
1354                         if (ctResult['code'] == -1) {
1355                             try{
1356                                 if(ctResult['msg']!==undefined){
1357                                     _w.top.unrivalWorkInfo = ctResult['msg'];
1358                                 }
1359                             }catch(e){}
1360                             busyThread += 1;
1361                             GM_xmlhttpRequest({
1362                                 method: "GET",
1363                                 timeout: 3000,
1364                                 url: host + 'chaoXing/v3/getAnswer.php?tm=' + encodeURIComponent(quu['question']
1365                                     .replace(/(^\s*)|(\s*$)/g, '')) + '&type=' + {
1366                                     '单选题': '0',
1367                                     '多选题': '1',
1368                                     '判断题': '3'
1369                                 } [quu['type']] + '&wid=' + wid + '&courseid=' + courseId,
1370                                 onload: function(res) {
1371                                     ctOnload(res,quu);
1372                                 },
1373                                 onerror: function(err) {
1374                                     _w.top.unrivalWorkInfo = '查题错误,服务器连接失败';
1375                                     console.log(err);
1376                                     busyThread -= 1;
1377                                 },
1378                                 ontimeout: function(err) {
1379                                     _w.top.unrivalWorkInfo = '查题错误,服务器连接失败';
1380                                     console.log(err);
1381                                     busyThread -= 1;
1382                                 }
1383                             });
1384                             return;
1385                         }
1386                         try {
1387                             var result = ctResult['data'];
1388                         } catch (e) {
1389                             _w.top.unrivalWorkInfo = '答案解析失败';
1390                             return;
1391                         }
1392                         _w.top.unrivalWorkInfo = '题目:' + quu['question'] + ':' + result;
1393                         switch (quu['type']) {
1394                             case '判断题':
1395                                 (function() {
1396                                     let answer = 'abaabaaba';
1397                                     if ('正确是对√Tri'.indexOf(result) >= 0) {
1398                                         answer = 'true';
1399                                     } else if ('错误否错×Fwr'.indexOf(result) >= 0) {
1400                                         answer = 'false';
1401                                     }
1402                                     for (let u = 0, k = choiceEs.length; u < k; u++) {
1403                                         if (choiceEs[u].getAttribute('val-param') ==
1404                                             answer && choiceEs[u].getAttribute(
1405                                                 'id-param') == quu['questionid'].replace(
1406                                                 'answer', '')) {
1407                                             choiceEs[u].click();
1408                                             questionNum -= 1;
1409                                             return;
1410                                         }
1411                                     }
1412                                     if (randomDo == 1 && accuracy < 100) {
1413                                         _w.top.unrivalWorkInfo = quu['question'] +
1414                                             ':未找到正确答案,自动选【错】';
1415                                         for (let u = 0, k = choiceEs.length; u <
1416                                             k; u++) {
1417                                             if (choiceEs[u].getElementsByTagName('em')
1418                                                 .length < 1) {
1419                                                 continue;
1420                                             }
1421                                             if (choiceEs[u].getAttribute('val-param') ==
1422                                                 'false' && choiceEs[u].getAttribute(
1423                                                     'id-param') == quu['questionid']
1424                                                 .replace('answer', '')) {
1425                                                 choiceEs[u].click();
1426                                                 return;
1427                                             }
1428                                         }
1429                                     }
1430                                 })();
1431                                 break;
1432                             case '单选题':
1433                                 (function() {
1434                                     let answerData = result;
1435                                     for (let option in quu['options']) {
1436                                         if (trim(option).replace(/\s/ig, '') == trim(answerData).replace(/\s/ig, '') || trim(
1437                                                 option).replace(/\s/ig, '').includes(trim(answerData).replace(/\s/ig, '')) ||
1438                                             trim(answerData).replace(/\s/ig, '').includes(trim(option).replace(/\s/ig, ''))) {
1439                                             for (let y = 0, j = choiceEs.length; y <
1440                                                 j; y++) {
1441                                                 if (choiceEs[y].getElementsByTagName(
1442                                                         'em').length < 1) {
1443                                                     continue;
1444                                                 }
1445                                                 if (choiceEs[y].getElementsByTagName(
1446                                                         'em')[0].getAttribute(
1447                                                         'id-param') == quu['options'][
1448                                                         option
1449                                                     ]['value'] && choiceEs[y]
1450                                                     .getAttribute('id-param') == quu[
1451                                                         'questionid'].replace('answer',
1452                                                         '')) {
1453                                                     if (!choiceEs[y].getAttribute(
1454                                                             'class').includes('cur')) {
1455                                                         choiceEs[y].click();
1456                                                     }
1457                                                     questionNum -= 1;
1458                                                     return;
1459                                                 }
1460                                             }
1461                                         }
1462                                     }
1463                                     if (randomDo == 1 && accuracy < 100) {
1464                                         _w.top.unrivalWorkInfo = quu['question'] +
1465                                             ':未找到正确答案,自动选【B】';
1466                                         for (let y = 0, j = choiceEs.length; y <
1467                                             j; y++) {
1468                                             if (choiceEs[y].getElementsByTagName('em')
1469                                                 .length < 1) {
1470                                                 continue;
1471                                             }
1472                                             if (choiceEs[y].getElementsByTagName('em')[
1473                                                     0].getAttribute('id-param') ==
1474                                                 'B' && choiceEs[y].getAttribute(
1475                                                     'id-param') == quu['questionid']
1476                                                 .replace('answer', '')) {
1477                                                 if (!choiceEs[y].getAttribute('class')
1478                                                     .includes('cur')) {
1479                                                     choiceEs[y].click();
1480                                                 }
1481                                                 return;
1482                                             }
1483                                         }
1484                                     }
1485                                 })();
1486                                 break;
1487                             case '多选题':
1488                                 (function() {
1489                                     let answerData = trim(result).replace(/\s/ig, ''),
1490                                         hasAnswer = false;
1491                                     for (let option in quu['options']) {
1492                                         if (answerData.includes(trim(option).replace(/\s/ig, ''))) {
1493                                             for (let y = 0, j = choiceEs.length; y <
1494                                                 j; y++) {
1495                                                 if (choiceEs[y].getElementsByTagName(
1496                                                         'em').length < 1) {
1497                                                     continue;
1498                                                 }
1499                                                 if (choiceEs[y].getElementsByTagName(
1500                                                         'em')[0].getAttribute(
1501                                                         'id-param') == quu['options'][
1502                                                         option
1503                                                     ]['value'] && choiceEs[y]
1504                                                     .getAttribute('id-param') == quu[
1505                                                         'questionid'].replace('answer',
1506                                                         '')) {
1507                                                     if (!choiceEs[y].getAttribute(
1508                                                             'class').includes('cur')) {
1509                                                         choiceEs[y].click();
1510                                                     }
1511                                                     hasAnswer = true;
1512                                                     break;
1513                                                 }
1514                                             }
1515                                         }
1516                                     }
1517                                     if (hasAnswer) {
1518                                         questionNum -= 1;
1519                                     } else if (randomDo == 1 && accuracy < 100) {
1520                                         _w.top.unrivalWorkInfo = quu['question'] +
1521                                             ':未找到正确答案,自动全选';
1522                                         for (let y = 0, j = choiceEs.length; y <
1523                                             j; y++) {
1524                                             if (choiceEs[y].getElementsByTagName('em')
1525                                                 .length < 1) {
1526                                                 continue;
1527                                             }
1528                                             if (choiceEs[y].getAttribute('id-param') ==
1529                                                 quu['questionid'].replace('answer', '')
1530                                             ) {
1531                                                 if (!choiceEs[y].getAttribute('class')
1532                                                     .includes('cur')) {
1533                                                     choiceEs[y].click();
1534                                                 }
1535                                             }
1536                                         }
1537                                     }
1538                                 })();
1539                                 break;
1540                         }
1541                     } catch (e) {
1542                         console.log(e);
1543                     }
1544                 }
1545             for (let i = 0, l = questionList.length; i < l; i++) {
1546                 nowTime += parseInt(Math.random() * 2000 + 2500, 10);
1547                 setTimeout(function() {
1548                     qu = questionList[i];
1549                     let param = 'question=' + encodeURIComponent(
1550                         qu['question']);
1551                     if (ctUrl.includes('icodef')) {
1552                         param += '&type=' + {
1553                             '单选题': '0',
1554                             '多选题': '1',
1555                             '判断题': '3'
1556                         } [qu['type']] + '&id=' + wid;
1557                     }
1558                     GM_xmlhttpRequest({
1559                         method: "POST",
1560                         headers: {
1561                             'Content-type': 'application/x-www-form-urlencoded',
1562                             'Authorization': token,
1563                         },
1564                         url: ctUrl,
1565                         timeout: 2000,
1566                         data: param,
1567                         onload: function(res) {
1568                             ctOnload(res,qu);
1569                         },
1570                         onerror: function() {
1571                             ctOnload(false,qu);
1572                         },
1573                         ontimeout: function() {
1574                             ctOnload(false,qu);
1575                         }
1576                     });
1577                 }, nowTime);
1578             }
1579             var workInterval = setInterval(function() {
1580                 if (busyThread != 0) {
1581                     return;
1582                 }
1583                 clearInterval(workInterval);
1584                 if (Math.floor((totalQuestionNum - questionNum) / totalQuestionNum) * 100 >= accuracy && _w.top
1585                     .unrivalAutoSubmit == '1') {
1586                     _w.top.unrivalDoneWorkId = getQueryVariable('workId');
1587                     _w.top.unrivalWorkInfo = '正确率符合标准,已提交答案';
1588                     setTimeout(function() {
1589                         submitCheckTimes();
1590                     }, parseInt(Math.random() * 2000 + 3000, 10));
1591                 } else if (_w.top.unrivalAutoSave == 1) {
1592                     _w.top.unrivalWorkInfo = '正确率不符合标准或未设置自动提交,已自动保存答案';
1593                     setTimeout(function() {
1594                         _w.top.unrivalDoneWorkId = getQueryVariable('workId');
1595                         _w.noSubmit();
1596                     }, 2000);
1597                 } else {
1598                     _w.top.unrivalWorkInfo = '用户设置为不自动保存答案,请手动提交或保存作业';
1599                 }
1600             }, 1000);
1601         } else if (_l.href.includes('work/phone/selectWorkQuestionYiPiYue')) {
1602             _w.top.unrivalWorkDone = true;
1603             _w.top.unrivalDoneWorkId = getQueryVariable('workId');
1604         } else if (_l.href.includes('stat2-ans.chaoxing.com/task/s/index')) {
1605             if (_w.top == _w) {
1606                 return;
1607             }
1608             _d.getElementsByClassName('page-container studentStatistic')[0].setAttribute('class', 'studentStatistic');
1609             _d.getElementsByClassName('page-item item-task-list minHeight390')[0].remove();
1610             _d.getElementsByClassName('subNav clearfix')[0].remove();
1611             setInterval(function() {
1612                 _l.reload();
1613             }, 90000);
1614         } else if (_l.href.includes('passport2.') && _l.href.includes('login?refer=http') && autoLogin == 1) {
1615             if (!(/^1[3456789]\d{9}$/.test(phoneNumber))) {
1616                 alert('自动登录的手机号填写错误,无法登陆')
1617                 return;
1618             }
1619             if (password == '') {
1620                 alert('未填写登录密码,无法登陆')
1621                 return;
1622             }
1623             GM_xmlhttpRequest({
1624                 method: "get",
1625                 url: 'https://passport2-api.chaoxing.com/v11/loginregister?cx_xxt_passport=json&uname=' +
1626                     phoneNumber + '&code=' + encodeURIComponent(password),
1627                 onload: function(res) {
1628                     try {
1629                         let ispass = JSON.parse(res.responseText);
1630                         if (ispass['status']) {
1631                             _l.href = decodeURIComponent(getQueryVariable('refer'));
1632                         } else {
1633                             alert(ispass['mes']);
1634                         }
1635                     } catch (err) {
1636                         console.log(res.responseText);
1637                         alert('登陆失败');
1638                     }
1639                 },
1640                 onerror: function(err) {
1641                     alert('登陆错误');
1642                 }
1643             });
1644         } else if (_l.href.includes('unrivalxxtbackground')) {
1645             _d.getElementsByTagName("html")[0].innerHTML = `
1646         <!DOCTYPE html>
1647     <html lang="en">
1648         <head>
1649             <meta charset="UTF-8">
1650             <title>学习通挂机小助手</title>
1651             <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
1652             <link href="https://z.chaoxing.com/yanshi/css/bootstrap.min.css" rel="stylesheet">
1653         </head>
1654         <body>
1655             <div class="row" style="margin: 10px;">
1656                 <div class="col-md-6 col-md-offset-3">
1657                     <div class="header clearfix">
1658                         <h3 class="text-muted" style="margin-top: 20px;margin-bottom: 0;float: left;">学习通挂机小助手&ensp;</h3>
1659                     </div>
1660                     <hr style="margin-top: 10px;margin-bottom: 20px;">
1661                     <div class="panel panel-info">
1662                         <div class="panel-heading">任务列表</div>
1663                         <div class="panel-body" id='joblist'>
1664                         </div>
1665                     </div>
1666                     <div class="panel panel-info">
1667                         <div class="panel-heading">运行日志</div>
1668                         <div class="panel-body">
1669                             <div id="result" style="overflow:auto;line-height: 30px;">
1670                                 <div id="log">
1671                                 </div>
1672                             </div>
1673                         </div>
1674                     </div>
1675                 </div>
1676             </div>
1677         </body>
1678     </html>
1679         `;
1680             var logs = {
1681                 "logArry": [],
1682                 "addLog": function(str, color = "black") {
1683                     if (this.logArry.length >= 50) {
1684                         this.logArry.splice(0, 1);
1685                     }
1686                     var nowTime = new Date(),
1687                         nowHour = (Array(2).join(0) + nowTime.getHours()).slice(-2),
1688                         nowMin = (Array(2).join(0) + nowTime.getMinutes()).slice(-2),
1689                         nowSec = (Array(2).join(0) + nowTime.getSeconds()).slice(-2),
1690                         logElement = _d.getElementById('log'),
1691                         logStr = "";
1692                     this.logArry.push("<span style='color: " + color + "'>[" + nowHour + ":" + nowMin + ":" +
1693                         nowSec + "] " + str + "</span>");
1694                     for (let logI = 0, logLen = this.logArry.length; logI < logLen; logI++) {
1695                         logStr += this.logArry[logI] + "<br>";
1696                     }
1697                     _d.getElementById('log').innerHTML = logStr;
1698                     logElement.scrollTop = logElement.scrollHeight;
1699                 }
1700             };
1701             logs.addLog('此页面不必保持在最前端,后台会自动进行任务', 'green');
1702             setInterval(function() {
1703                 logs.addLog('此页面不必保持在最前端,后台会自动进行任务', 'green');
1704                 logs.addLog('如想禁用后台刷视频功能,请关闭脚本并重启浏览器', 'blue');
1705             }, 120000)
1706             GM_addValueChangeListener('unrivalxxtbackgroundinfo', function(name, old_value, new_value, remote) {
1707                 if (old_value != new_value) {
1708                     logs.addLog(new_value);
1709                 }
1710             });
1711             setInterval(function() {
1712                 if (Math.round(new Date() / 1000) - parseInt(GM_getValue('unrivalBackgroundVideoEnable', '6')) >
1713                     15) {
1714                     logs.addLog('超星挂机小助手可能运行异常,如页面无反应,请尝试重启脚本猫或重启浏览器(脚本猫0.9.0版本有此问题)');
1715                 }
1716             }, 10000);
1717             var loopShow = () => {
1718                 let jobList = GM_getValue('unrivalBackgroundList', '1');
1719                 if (jobList == '1') {
1720                     _d.getElementById('joblist').innerHTML = '请将“超星挂机小助手”升级到最新版并重启浏览器';
1721                 } else {
1722                     try {
1723                         let jobHtml = '';
1724                         for (let i = 0, l = jobList.length; i < l; i++) {
1725                             let status = '';
1726                             if (jobList[i]['done']) {
1727                                 status = '已完成';
1728                             } else if (parseInt(jobList[i]['playTime']) > 0) {
1729                                 status = '进行中';
1730                             } else {
1731                                 status = '等待中';
1732                             }
1733                             if (jobList[i]['review']) {
1734                                 status += ':复习模式';
1735                             }
1736                             jobHtml += `
1737                                 <div class="panel panel-default">
1738                                     <div class="panel-body">
1739                                         ` + '[' + status + ']' + jobList[i]['name'] + `
1740                                     </div>
1741                                 </div>`
1742                         }
1743                         _d.getElementById('joblist').innerHTML = jobHtml;
1744                     } catch (e) {
1745                         _d.getElementById('joblist').innerHTML = '请将“超星挂机小助手”升级到最新版并重启浏览器!';
1746                     }
1747                 }
1748             }
1749             loopShow();
1750             setInterval(loopShow, 10000);
1751         }
1752     })();

 

posted on 2022-11-11 20:14  呆小只  阅读(1378)  评论(1)    收藏  举报

导航

levels of contents