网课通

【已更新】超星尔雅刷网课插件支持自动答题、阅读时长~

admin27230
  • 市面上超星、尔雅刷课的软件和脚本很多,但是真正好用的却是很少!有的功能比较少、而有的付费价格太高!今天介绍的这款超星尔雅刷课插件却有不一样的体验!它支持自动挂机看尔雅MOOC,支持视频、音频、文档、图书自动完成,章节测验自动答题提交,支持自动切换任务点、挂机阅读时长、自动登录等,解除各类功能限制,开放自定义参数!

  • 软件截图:

  • QQ图片20211204124810.png



  • 软件功能介绍

  • V4.0.0版本为超星网课助手的最后一个版本,脚本已停止维护。

  • 脚本功能

  • 解除视频播放限制

  • 支持自动挂机、切换窗口不暂停

  • 屏蔽视频内的题目、图片、PPT

  • 倍速播放、进度条拖动(使用该功能会导致出现不良记录)

  • 自动答题,高准确率题库

  • 支持章节测验、作业,已取消支持考试

  • 支持自动提交或暂时保存答案

  • 全自动挂机切换

  • 支持多视频、多任务点,支持未开放章节

  • 支持自定义响应速度

  • 支持自动切换课程

  • 其他任务点

  • 音频任务点,支持自动播放

  • 图书阅读任务点(非课程阅读)

  • 文档阅读任务点,PPT类任务点自动完成

  • 高级功能

  • 挂机课程阅读时长,需要自行打开阅读页面

  • 自动登录功能需要配置相关参数

  • 复习模式:完整挂机视频(音频)时长,支持挂机任务点已完成的视频和音频

  • 队列模式:单页面所有任务点,支持排队完成或同时进行

  • 脚本亮点

  • 使用html5播放器,支持自动倍速、默认静音等功能,取消支持flash播放器

  • 支持单页面多视频、多测验、视频和测验混合等,支持文档课件等资源下载

  • 支持多账号同时挂机(多开需要使用隐身窗口,建议使用虚拟机)

  • 支持选择视频播放的默认资源线路,支持选择清晰度,默认公网1、标清

  • 自动答题功能已支持单选、多选、判断、填空、分录、资料、简答、论述、计算、名词解释、口语等题型

  • 支持手动更改和补充答案,支持暂时保存已作答的题目

  • 课程阅读支持自定义挂机时间,临时停止可以点击右侧返回顶部按钮

  • 支持解除文本类题目答题框的粘贴限制和大小限制,支持解除手机端限制

  • 切换窗口不会有视频的短时暂停,支持用户主动暂停视频播放,解析视频下载链接

  • 支持自定义部分功能的开启或关闭(脚本18~57行提供自定义参数的配置,详情可见脚本中的注释)

  • 常见问题

  • Q1:视频无法自动播放,浏览器窗口恢复后视频才播放。

  • A1:由于浏览器安全策略限制,html5播放器不支持在窗口最小化时自动播放视频(已测试爱奇艺、 *** 视频、YouTube,均存在此问题)。解决 *** :不要最小化浏览器窗口(窗口可以被覆盖,全屏游戏也不影响)。

  • 感谢

  • @baochen 提交脚本BUG和参与脚本新功能的测试

  • @Blacrazy 提交优质建议和参与脚本新功能的测试

  • 声明

    【已更新】超星尔雅刷网课插件支持自动答题、阅读时长~

  • 刷课有风险,脚本的设计已尽可能避免被检测,但仍有出现不良记录的可能性,请合理使用脚本。

  • 使用倍速播放、进度条拖动、秒过功能会导致出现不良记录,请慎重使用。

  • 默认 *** 作,即单选、多选、判断题随机选择,填空、简答等文本类题目不修改。

  • 题库的答案准确率较高,但无法保证自动答题功能始终可用,也无法保证答案全部正确。

  • 自动答题功能会采集部分非隐私数据上传,仅用于提高答案匹配度。

  • 每次脚本更新都会导致自定义参数重置为默认值,如有设置,请更新后及时修改。

  • 更新日志:

  • v4.1.1

    19/1/2021

    修改html播放器处理机制,优化部分代码结构

  • v4.1.0

    21/12/2020

    移除部分失效功能,修复部分功能异常,优化queue、video、audio、face参数功能和部分代码结构

  • v4.0.3

    11/12/2020

    新增bypass参数功能,修复course参数功能异常

  • v4.0.2

    6/12/2020

    填空类无答案不修改,修复部分功能异常,优化部分代码结构,移除失效功能

  • v4.0.1

    4/12/2020

    删除token参数,使之符合最新的脚本发布规则

  • v4.0.0

    18/4/2020

    V4.0.0版本为超星网课助手的最后一个版本,脚本已停止维护

  • v3.5.1

    16/4/2020

    精简代码,优化部分代码结构

  • v3.5.0

    14/4/2020

    修复自动答题功能异常

  • v3.4.4

    14/4/2020

    修复自动答题功能异常

  • v3.4.3

    13/4/2020

    优化部分代码结构

  • v3.4.2

    12/4/2020

    修复填空题无法自动答题,优化部分代码结构

  • v3.4.1

    10/4/2020

    优化音视频下载功能,优化部分代码结构

  • v3.4.0

    7/4/2020

    新增队列模式、资源下载、课堂测验自动答题,优化限制解除功能,优化部分代码结构

  • v3.3.1

    22/3/2020

    修复题目循环查询,精简和优化部分代码结构

  • v3.3.0

    15/3/2020

    新增超时跳过当前题目按钮,修复脚本功能异常,优化部分代码结构

  • v3.2.2

    2/3/2020

    修复填空类题目答案丢失空格、标点符号异常等问题

  • v3.2.1

    2/3/2020

    优化音频题目的采集检索和图片答案的自动答题,提高答案匹配度

  • v3.2.0

    29/2/2020

    恢复自动提交参数,优化答案匹配,移除上传选项功能,优化部分代码结构

  • v3.1.1

    11/2/2020

    修复lock参数功能异常

  • v3.1.0

    31/1/2020

    优化任务点自定义开关和完成的处理方式,优化答案匹配,优化部分代码结构

  • v3.0.0

    24/12/2019

    新增视频下载功能,优化答案匹配,精简参数,重写和优化部分代码,修复脚本异常

  • v2.5.1

    10/11/2019

    修复自动答题功能异常,优化答案采集功能

  • v2.5.0

    1/11/2019

    新增lock参数,优化自动答题功能,修复特殊情况下的脚本功能异常,优化部分代码结构

  • v2.4.4

    9/9/2019

    优化异常情况处理,优化部分代码结构

  • v2.4.3

    30/8/2019

    新增异常处理、提示信息,修复跨域问题、作业答题,优化phone参数功能、更改默认值为开启

  • v2.4.2

    21/8/2019

    修复自动切换课程功能异常,更改check参数的默认值为关闭,优化部分代码结构

  • v2.4.1

    9/8/2019

    优化自动答题功能,优化部分代码结构

  • v2.4.0

    25/7/2019

    新增review、total,优化核心代码、任务点功能、限制解除、自动登录,优化部分代码结构

  • v2.3.0

    2/7/2019

    新增safe参数和答案采集,优化自动答题和自动保存,修复脚本功能异常,优化部分代码结构

  • v2.2.5

    31/5/2019

    优化部分代码结构

  • v2.2.4

    30/5/2019

    优化部分代码结构

  • v2.2.3

    25/5/2019

    修复自动切换功能异常,优化自动切换功能处理逻辑,优化部分代码结构

  • v2.2.2

    19/5/2019

    优化题库兼容性,修复自动答题功能异常,优化图片答案的显示,优化部分代码结构

  • v2.2.1

    7/5/2019

    修复自动答题功能异常,优化部分代码结构

  • v2.2.0

    4/5/2019

    新增支持edu.cn域名和新任务点功能,修复特殊情况下的脚本功能异常,优化部分代码结构

  • v2.1.0

    11/3/2019

    修复Edge浏览器异常,新增自动登录功能相关参数,优化部分功能的兼容性和使用体验

  • v2.0.0

    20/2/2019

    功能完善和代码优化,更新日志详细内容在反馈区

  • v1.8.0

    11/10/2018

    新增wait、none、copy、scale参数,修复自动答题功能异常,优化按钮显示和代码结构

  • v1.7.1

    3/10/2018

    章节测验和视频共同排队并依次完成,修复flash播放器白屏问题,优化显示提示信息

  • v1.7.0

    25/9/2018

    修复自动答题功能,移除考试功能,移除已失效的参数,新增auto自动提交参数

  • v1.6.0

    17/9/2018

    新增支持html5播放器,自动适配 *** 默认播放器(支持自定义默认播放器),修改部分参数

  • v1.5.2

    11/9/2018

    新增muted参数配置视频静音播放功能,修复考试功能错误加载,优化部分代码结构

  • v1.5.1

    2/9/2018

    优化自定义参数的处理方式(临时取消任务点),优化脚本错误处理机制,优化部分代码结构

    【已更新】超星尔雅刷网课插件支持自动答题、阅读时长~

  • v1.5.0

    23/8/2018

    新增proxy参数配置 *** 服务器,原生js改写ajax请求防止 *** ,部分代码结构优化

  • v1.4.3

    16/8/2018

    修改自动答题功能的加载方式和判断逻辑,屏蔽ajax全局事件 *** ,增强脚本安全性

  • v1.4.2

    8/8/2018

    自动切换功能代码重写优化逻辑,部分代码结构优化

  • v1.4.1

    26/7/2018

    优化视频播放的默认资源线路的选择方式(存在兼容性问题),精简命令,代码结构微调

  • v1.4.0

    22/7/2018

    新增修改视频播放的默认资源线路,优化代码逻辑,修复特殊情况下的脚本功能异常

  • v1.3.0

    18/7/2018

    启用沙盒增强脚本安全性,替换参数switch为jump,脚本结构微调

  • v1.2.1

    15/7/2018

    进一步jQ改写和优化逻辑,修复部分章节无法跳转,修复自动答题功能可能出现的异常

  • 脚本代码:


  • // ==UserScript==

  • // @name         超星网课助手

  • // @namespace    wyn665817@163.com

  • // @version      4.1.1

  • // @description  自动挂机看尔雅MOOC,支持视频、音频、文档、图书自动完成,章节测验自动答题提交,支持自动切换任务点、挂机阅读时长、自动登录等,解除各类功能限制,开放自定义参数

  • // @author       wyn665817

  • // @match        *://*.chaoxing.com/*

  • // @match        *://*.edu.cn/*

  • // @connect      forestpolice.org

  • // @run-at       document-end

  • // @grant        unsafeWindow

  • // @grant        GM_xmlhttpRequest

  • // @grant        GM_setClipboard

  • // @supportURL   https://greasyfork.org/zh-CN/scripts/369625/feedback

  • // @license      MIT

  • // ==/UserScript==


  • // 设置修改后,需要刷新或重新打开网课页面才会生效

  • varsetting={

  • // 5E3 == 5000,科学记数法,表示毫秒数

  •    time:5E3// 默认响应速度为5秒,不建议小于3秒

  • ,review:0// 复习模式,完整挂机视频(音频)时长,支持挂机任务点已完成的视频和音频,默认关闭

  • ,queue:1// 队列模式,开启后任务点逐一完成,关闭则单页面所有任务点同时进行,默认开启


  • // 1代表开启,0代表关闭

  • ,video:0// 视频支持后台、切换窗口不暂停,支持多视频,默认关闭

  • ,work:1// 自动答题功能(章节测验),作业需要手动开启查询,高准确率,默认开启

  • ,audio:0// 音频自动播放,与视频功能共享vol和rate参数,默认关闭

  • ,book:0// 图书阅读任务点,非课程阅读任务点,默认关闭

  • ,docs:0// 文档阅读任务点,PPT类任务点自动完成阅读任务,默认关闭

  • // 本区域参数,上方为任务点功能,下方为 *** 功能

  • ,jump:0// 自动切换标签、章节、课程(需要配置course参数),默认关闭

  • ,read:'0'// 挂机课程阅读时间,单位是分钟,'65'代表挂机65分钟,请手动打开阅读页面,默认'0'分钟

  • ,face:0// 解除面部识别(不支持二维码类面部采集),此功能仅为临时解除,默认关闭

  • ,total:0// 显示课程进度的统计数据,在学习进度页面的上方展示,默认关闭


  • // 仅开启video(audio)时,修改此处才会生效

  • ,line:'公网1'// 视频播放的默认资源线路,此功能适用于 *** 默认线路无资源,默认'公网1'

  • ,http:'标清'// 视频播放的默认清晰度,无效参数则使用 *** 默认清晰度,默认'标清'

  • // 本区域参数,上方为video功能独享,下方为audio功能共享

  • ,vol:'0'// 默认音量的百分数,设定范围:[0,100],'0'为静音,默认'0'

  • ,rate:'1'// 视频播放默认倍率,参数范围0∪[0.0625,16],'0'为秒过,默认'1'倍


  • // 仅开启work时,修改此处才会生效

  • ,auto:0// 答题完成后自动提交,默认开启

  • ,none:0// 无匹配答案时执行默认 *** 作,关闭后若题目无匹配答案则会暂时保存已作答的题目,默认开启

  • ,scale:0// 富文本编辑器高度自动拉伸,用于文本类题目,答题框根据内容自动调整大小,默认关闭


  • // 仅开启jump时,修改此处才会生效

  • ,course:0// 当前课程完成后自动切换课程,仅支持按照根目录课程顺序切换,默认关闭

  • ,lock:1// 跳过未开放(图标是锁)的章节,即闯关模式或定时发放的任务点,默认开启


  • // 自动登录功能配置区

  • ,school:'账号为手机号可以不修改此参数'// 学校/单位/机构码,要求完整有效可查询,例如'清华大学'

  • ,username:''// 学号/工号/借书证号(邮箱/手机号/账号),例如'2018010101',默认''

  • ,password:''// 密码,例如'123456',默认''

  • },

  • _self=unsafeWindow,

  • url=location.pathname,

  • top=_self;


  • if(url!='/studyApp/studying'&&top!=_self.top)document.domain=location.host.replace(/.+?\./,'');


  • try{

  • while(top!=_self.top){

  •        top=top.parent.document?top.parent:_self.top;

  • if(top.location.pathname=='/mycourse/studentstudy')break;

  • }

  • }catch(err){

  • // console.log(err);

  •    top=_self;

  • }


  • var$=_self.jQuerytop.jQuery,

  • parent=_self==top?self:_self.parent,

  • Ext=_self.Extparent.Ext{},

  • UE=_self.UE,

  • vjs=_self.videojs,

  • dl='https://d0.ananas.chaoxing.com/download/';


  • String.prototype.toCDB=function(){

  • returnthis.replace(/\s/g,'').replace(/[\uff01-\uff5e]/g,function(str){

  • returnString.fromCharCode(str.charCodeAt(0)-65248);

  • }).replace(/[“”]/g,'"').replace(/[‘’]/g,"'").replace(/。/g,'.');

  • };

  • _self.alert=console.log;


  • setting.normal='';// ':visible'

  • // setting.time += Math.ceil(setting.time * Math.random()) - setting.time / 2;

  • setting.job=[':not(*)'];


  • setting.video&&setting.job.push('iframe[src*="/video/index.html"]');

  • setting.work&&setting.job.push('iframe[src*="/work/index.html"]');

  • setting.audio&&setting.job.push('iframe[src*="/audio/index.html"]');

  • setting.book&&setting.job.push('iframe[src*="/innerbook/index.html"]');

  • setting.docs&&setting.job.push('iframe[src*="/ppt/index.html"]','iframe[src*="/pdf/index.html"]');


  • if(url=='/mycourse/studentstudy'){

  •    _self.checkMobileBrowerLearn=$.noop;

  • varclassId=location.search.match(/cla[zs]{2}id=(\d+)/i)[1]0,

  •    courseId=_self.courseIdlocation.search.match(/courseId=(\d+)/i)[1]0;

  • !setting.jumpsetting.lock$('#coursetree').on('click','[onclick*=void], [href*=void]',function(){

  •        _self.getTeacherAjax(courseId,classId,$(this).parent().attr('id').slice(3));

  • });

  • }elseif(url=='/ananas/modules/video/index.html'&&setting.video){

  • if(setting.review)_self.greenligth=Ext.emptyFn;

  •    vjs.hook('beforesetup',hookVideoB);

  •    vjs.hook('setup',hookVideoS);

  • Ext.isIos=Ext.isAndroid=false;

  • }elseif(url=='/work/doHomeWorkNew'url=='/api/work'url=='/work/addStudentWorkNewWeb'){

  • if(!UE){

  • varlen=($Ext.queryArray)('font:contains(未登录)',document).length;

  •        setTimeout(len==1?top.location.reload:parent.greenligth,setting.time);

  • }elseif(setting.work){

  •        setTimeout(relieveLimit,0);

  •        beforeFind();

  • }

  • }elseif(url=='/ananas/modules/audio/index.html'&&setting.audio){

  • if(setting.review)_self.greenligth=Ext.emptyFn;

  •    vjs.hook('beforesetup',hookAudioB);

  •    vjs.hook('setup',hookAudioS);

  • }elseif(url=='/ananas/modules/innerbook/index.html'&&setting.book){

  •    setTimeout(function(){

  • if(getTip())_self.setting?_self.top.onchangepage(_self.getFrameAttr('end')):_self.greenligth();

  • },setting.time);

  • }elseif(url.match(/^\/ananas\/modules\/(ppt|pdf)\/index\.html$/)&&setting.docs){

  •    setTimeout(function(){

  • if(getTip())_self.setting?_self.finishJob():_self.greenligth();

  • },setting.time);

  •    frameElement.setAttribute('download',1);

  • if(_self.downloadNum=='')_self.downloadNum='1';

  • }elseif(url=='/knowledge/cards'){

  •    $&&checkToNext();

  • }elseif(url.match(/^\/(course|zt)\/\d+\.html$/)){

  •    setTimeout(function(){

  • +setting.read&&_self.sendLogs&&$('.course_section:eq(0) .chapterText').click();

  • },setting.time);

  • }elseif(url=='/ztnodedetailcontroller/visitnodedetail'){

  •    setting.read*=60/$('.course_section').length;

  •    setting.read&&_self.sendLogs&&autoRead();

  • }elseif(url.match(/^\/visit\/(courses|interaction)$/)){

  •    setting.face&&$('.zmodel').on('click','[onclick^=openFaceTip]',function(){

  • varid=$(this).attr('onclick').match(/(\d+).+?(\d+)/)[];

  •        $(this).closest('li').find('[onclick^=openFaceTip]').removeAttr('onclick').attr({

  •            target:'_blank',

  •            href:'stucoursemiddle?courseid='+id[1]+'&clazzid='+id[2]

  • });

  •        alert('本课程已临时解除面部识别');

  • });

  • }elseif(url=='/mycourse/studentcourse'){

  • vargv=location.search.match(/d=\d+&/g);

  •    setting.total&&$('<a>',{

  •        href:'/moocAnalysis/chapterStatisticByUser?classI'+gv[1]+'courseI'+gv[0]+'userId='+_self.getCookie('_uid')+'&ut=s',

  •        target:'_blank',

  •        title:'点击查看章节统计',

  •        style:'margin: 0 25px;',

  •        html:'本课程共'+$('.icon').length+'节,剩余'+$('em:not(.openlock)').length+'节未完成'

  • }).appendTo('.zt_logo').parent().width('auto');

  • }elseif(location.host.match(/^passport2/)){

  •    setting.username&&getSchoolId();

  • }elseif(location.hostname=='i.mooc.chaoxing.com'){

  •    _self.layui.use('layer',function(){

  • this.layer.open({content:'拖动进度条、倍速播放、秒过会导致不良记录!',title:'超星网课助手提示',btn:'我已知悉',offset:'t',closeBtn:0});

  • });

  • }elseif(url=='/work/selectWorkQuestionYiPiYue'){

  •    submitAnswer(getIframe().parent(),$.extend(true,[],parent._data));

  • }


  • functiongetTip(){

  • returntop!=_self&&jobSort($Ext.query);

  • }


  • functionjobSort($){

  • varfn=$.fn?[getIframe(1),'length']:[self,'dom'],

  •    sel=setting.job.join(', :not(.ans-job-finished) > .ans-job-icon'+setting.normal+' ~ ');

  • if(!getIframe()[fn[1]]getIframe().parent().is('.ans-job-finished'))return0;

  • if(!setting.queue$(sel,fn[0].parent.document)[0]==fn[0].frameElement)return1;

  •    setInterval(function(){

  •        $(sel,fn[0].parent.document)[0]==fn[0].frameElement&&fn[0].location.reload();

  • },setting.time);

  • }


  • functiongetIframe(tip,win,job){

  • if(!$)returnExt.get(frameElement[]).parent().child('.ans-job-icon')Ext.get([]);

  • do{

  •        win=win?win.parent:_self;

  •        job=$(win.frameElement).prevAll('.ans-job-icon');

  • }while(!job.length&&win.parent.frameElement);

  • returntip?win:job;

  • }


  • functionhookVideoB(el,config){

  • varExtArr=Ext.Array,

  •    line=ExtArr.filter(ExtArr.map(config.playlines,function(value,index){

  • returnvalue.label==setting.line&&index;

  • }),function(value){

  • returnExt.isNumber(value);

  • })[0]0,

  •    http=ExtArr.filter(config.sources,function(value){

  • returnvalue.label==setting.http;

  • })[0];

  •    config.playlines.unshift(config.playlines[line]);

  •    config.playlines.splice(line+1,1);

  •    config.plugins.videoJsResolutionSwitcher.default=http?http.res:360;

  •    config.plugins.studyControl.enableSwitchWindow=1;

  •    config.plugins.timelineObjects.url='/richvideo/initdatawithviewer?';

  •    config.plugins.seekBarControl.enableFastForward=1;

  •    config.playbackRates=[1,1.25,1.5,2];

  •    setting.queuevjs.registerPlugin('studyControl',Ext.emptyFn);

  • // config.preload = setting.tip ? 'auto' : 'none';

  • returnconfig;

  • }


  • functionhookVideoS(player){

  • vara='<a href="'+dl+_self.config('objectid')+'" target="_blank">',

  •    img='<img src="'+dl+'e363b256c0e9bc5bd8266bf99dd6d6bb" style="margin: 6px 0 0 6px;">';

  •    player.volume(Math.round(setting.vol)/1000);

  • Ext.fly(player.controlBar.addChild('Button').el_).setHTML(a+img+'</a>').dom.title='下载视频';

  •    player.on('loadstart',function(){

  •        getTip()&&this.play().catch(Ext.emptyFn);

  • this.playbackRate(setting.rate>16setting.rate<0.0625?1:setting.rate);

  • });

  •    player.one(['loadedmetadata','firstplay'],function(){

  •        setting.two=setting.rate==='0'&&setting.two<1;

  •        setting.two&&this.options_.plugins.seekBarControl.sendLog(this.children_[0],'ended',Math.floor(this.cache_.duration));

  • });

  •    player.on('ended',function(){

  • Ext.fly(frameElement).parent().addCls('ans-job-finished');

  • });

  • }


  • functionhookAudioB(el,config){

  •    config.plugins.studyControl.enableSwitchWindow=1;

  •    config.plugins.seekBarControl.enableFastForward=1;

  •    setting.queuevjs.registerPlugin('studyControl',Ext.emptyFn);

  • returnconfig;

  • }


  • functionhookAudioS(player){

  • vara='<a href="'+dl+_self.config('objectid')+'" target="_blank">',

  •    img='<img src="'+dl+'e363b256c0e9bc5bd8266bf99dd6d6bb" style="margin: 6px 0 0 6px;">';

  •    player.volume(Math.round(setting.vol)/1000);

  •    player.playbackRate(setting.rate>16setting.rate<0.0625?1:setting.rate);

  • Ext.fly(player.controlBar.addChild('Button').el_).setHTML(a+img+'</a>').dom.title='下载音频';

  •    player.on('loadeddata',function(){

  •        getTip()&&this.play().catch(Ext.emptyFn);

  • });

  •    player.one('firstplay',function(){

  •        setting.rate==='0'&&this.options_.plugins.seekBarControl.sendLog(this.children_[0],'ended',Math.floor(this.cache_.duration));

  • });

  •    player.on('ended',function(){

  • Ext.fly(frameElement).parent().addCls('ans-job-finished');

  • });

  • }


  • functionrelieveLimit(){

  • if(setting.scale)_self.UEDITOR_CONFIG.scaleEnabled=false;

  •    $.each(UE.instants,function(){

  • varkey=this.key;

  • this.ready(function(){

  • this.destroy();

  •            UE.getEditor(key);

  • });

  • });

  • }


  • functionbeforeFind(){

  •    setting.regl=parent.greenligth$.noop;

  • if($.type(parent._data)=='array')returnsetting.regl();

  •    setting.div=$(

  • '<div style="border: 2px dashed rgb(0, 85, 68); width: 330px; position: fixed; top: 0; right: 0; z-index: 99999; background-color: rgba(70, 196, 38, 0.6); overflow-x: auto;">'+

  • '<span style="font-size: medium;"></span>'+

  • '<div style="font-size: medium;">正在搜索答案...</div>'+

  • '<button style="margin-right: 10px;">暂停答题</button>'+

  • '<button style="margin-right: 10px;">'+(setting.auto?'取消本次自动提交':'开启本次自动提交')+'</button>'+

  • '<button style="margin-right: 10px;">重新查询</button>'+

  • '<button>折叠面板</button>'+

  • '<div style="max-height: 300px; overflow-y: auto;">'+

  • '<table border="1" style="font-size: 12px;">'+

  • '<thead>'+

  • '<tr>'+

  • '<th style="width: 25px; min-width: 25px;">题号</th>'+

  • '<th style="width: 60%; min-width: 130px;">题目(点击可复制)</th>'+

  • '<th style="min-width: 130px;">答案(点击可复制)</th>'+

  • '</tr>'+

  • '</thead>'+

  • '<tfoot style="display: none;">'+

  • '<tr>'+

  • '<th colspan="3">答案提示框 已折叠</th>'+

  • '</tr>'+

  • '</tfoot>'+

  • '<tbody>'+

  • '<tr>'+

  • '<td colspan="3" style="display: none;"></td>'+

  • '</tr>'+

  • '</tbody>'+

  • '</table>'+

  • '</div>'+

  • '</div>'

  • ).appendTo('body').on('click','button, td',function(){

  • varlen=$(this).prevAll('button').length;

  • if(this.nodeName=='TD'){

  •            $(this).prev().length&&GM_setClipboard($(this).text());

  • }elseif(!$(this).siblings().length){

  •            $(this).parent().text('正在搜索答案...');

  •            setting.num++;

  • }elseif(len===0){

  • if(setting.loop){

  •                clearInterval(setting.loop);

  • deletesetting.loop;

  •                len=['已暂停搜索','继续答题'];

  • }else{

  •                setting.loop=setInterval(findAnswer,setting.time);

  •                len=['正在搜索答案...','暂停答题'];

  • }

    【已更新】超星尔雅刷网课插件支持自动答题、阅读时长~

  •            setting.div.children('div:eq(0)').html(function(){

  • return$(this).data('html')len[0];

  • }).removeData('html');

  •            $(this).html(len[1]);

  • }elseif(len==1){

  •            setting.auto=!setting.auto;

  •            $(this).html(setting.auto?'取消本次自动提交':'开启本次自动提交');

  • }elseif(len==2){

  •            parent.location.reload();

  • }elseif(len==3){

  •            setting.div.find('tbody, tfoot').toggle();

  • }

  • }).find('table, td, th').css('border','1px solid').end();

  •    setting.lose=setting.num=0;

  •    setting.data=parent._data=[];

  •    setting.over='<button style="margin-right: 10px;">跳过此题</button>';

  •    setting.curs=$('script:contains(courseName)',top.document).text().match(/courseName:\'(.+?)\'|$/)[1]$('h1').text().trim()'无';

  •    setting.loop=setInterval(findAnswer,setting.time);

  • vartip=({undefined:'任务点排队中',0:'等待切换中'})[getTip()];

  •    tip&&setting.div.children('div:eq(0)').data('html',tip).siblings('button:eq(0)').click();

  • }


  • functionfindAnswer(){

  • if(setting.num>=$('.TiMu').length){

  • vararr=setting.lose?['共有 <font color="red">'+setting.lose+'</font> 道题目待完善(已深色标注)',saveThis]:['答题已完成',submitThis];

  •        setting.div.children('div:eq(0)').data('html',arr[0]).siblings('button:eq(0)').hide().click();

  • returnsetTimeout(arr[1],setting.time);

  • }

  • var$TiMu=$('.TiMu').eq(setting.num),

  •    question=filterImg($TiMu.find('.Zy_TItle:eq(0) .clearfix')).replace(/^【.*?】\s*/,'').replace(/\s*(\d+\.\d+分)$/,''),

  •    type=$TiMu.find('input[name^=answertype]:eq(0)').val()'-1';

  •    GM_xmlhttpRequest({

  •        method:'POST',

  •        url:'http://mooc.forestpolice.org/cx/0/'+encodeURIComponent(question),

  •        headers:{

  • 'Content-type':'application/x-www-form-urlencoded'

  • },

  •        data:'question='+encodeURIComponent(question)+'&type='+type,

  •        timeout:setting.time,

  •        onload:function(xhr){

  • if(!setting.loop){

  • }elseif(xhr.status==200){

  • varobj=$.parse *** ON(xhr.responseText){};

  • if(obj.code){

  •                    setting.div.children('div:eq(0)').text('正在搜索答案...');

  • vartd='<td style="border: 1px solid;',

  •                    data=String(obj.data).replace(/&/g,'&amp;').replace(/<(?!img)/g,'&lt;');

  •                    obj.data=/^http/.test(data)?'<img src="'+obj.data+'">':obj.data;

  •                    $(

  • '<tr>'+

  •                            td+' text-align: center;">'+$TiMu.find('.Zy_TItle:eq(0) i').text().trim()+'</td>'+

  •                            td+'" title="点击可复制">'+(question.match('<img')?question:question.replace(/&/g,'&amp;').replace(/</g,'&lt'))+'</td>'+

  •                            td+'" title="点击可复制">'+(/^http/.test(data)?obj.data:'')+data+'</td>'+

  • '</tr>'

  • ).appendTo(setting.div.find('tbody')).css('background-color',fillAnswer($TiMu.find('ul:eq(0)').find('li'),obj,type)?'':'rgba(0, 150, 136, 0.6)');

  •                    setting.data[setting.num++]={

  •                        code:obj.code>0?1:0,

  •                        question:question,

  •                        option:obj.data,

  •                        type:Number(type)

  • };

  • }else{

  •                    setting.div.children('div:eq(0)').html(obj.datasetting.over+'服务器繁忙,正在重试...');

  • }

  •                setting.div.children('span').html(obj.msg'');

  • }elseif(xhr.status==403){

  • varhtml=xhr.responseText.indexOf('{')?'请求过于频繁,建议稍后再试':$.parse *** ON(xhr.responseText).data;

  •                setting.div.children('div:eq(0)').data('html',html).siblings('button:eq(0)').click();

  • }else{

  •                setting.div.children('div:eq(0)').html(setting.over+'服务器异常,正在重试...');

  • }

  • },

  •        ontimeout:function(){

  •            setting.loop&&setting.div.children('div:eq(0)').html(setting.over+'服务器超时,正在重试...');

  • }

  • });

  • }


  • functionfillAnswer($li,obj,type){

  • var$input=$li.find(':radio, :checkbox'),

  •    str=String(obj.data).toCDB()newDate().toString(),

  •    data=str.split(/#|\x01|\|/),

  •    opt=obj.optstr,

  •    state=setting.lose;

  • // $li.find(':radio:checked').prop('checked', false);

  •    obj.code>0&&$input.each(function(index){

  • if(this.value=='true'){

  •            data.join().match(/(^|,)(正确|是|对|√|T|ri|right|true)(,|$)/)&&this.click();

  • }elseif(this.value=='false'){

  •            data.join().match(/(^|,)(错误|否|错|×|F|wr|wrong|false)(,|$)/)&&this.click();

  • }else{

  • vartip=filterImg($li.eq(index).find('.after')).toCDB()newDate().toString();

  • Boolean($.inArray(tip,data)+1(type=='1'&&str.indexOf(tip)+1))==this.checkedthis.click();

  • }

  • }).each(function(){

  • if(!/^A?B?C?D?E?F?G?$/.test(opt))returnfalse;

  • Boolean(opt.match(this.value))==this.checkedthis.click();

  • });

  • if(type.match(/^[013]$/)){

  •        $input.is(':checked')(setting.none?($input[Math.floor(Math.random()*$input.length)]$()).click():setting.lose++);

  • }elseif(type.match(/^(2|[4-9]|1[08])$/)){

  •        data=String(obj.data).split(/#|\x01|\|/);

  •        str=$li.end().find('textarea').each(function(index){

  •            index=(obj.code>0&&data[index])this.value'';

  •            UE.getEditor(this.name).setContent(index.trim());

  • }).length;

  • (obj.code>0&&data.length==str)setting.nonesetting.lose++;

  • }else{

  •        setting.nonesetting.lose++;

  • }

  • returnstate==setting.lose;

  • }


  • functionsaveThis(){

  • if(!setting.auto)returnsetTimeout(saveThis,setting.time);

  •    setting.div.children('button:lt(3)').hide().eq(1).click();

  •    $('#tempsave').click();

  •    setting.regl();

  • }


  • functionsubmitThis(){

  • if(!setting.auto){

  • }elseif(!$('.Btn_blue_1:visible').length){

  •        setting.div.children('button:lt(3)').hide().eq(1).click();

  • returnsetting.regl();

  • }elseif($('#confirmSubWin:visible').length){

  • varbtn=$('#tipContent + * > a').offset(){top:0,left:0},

  •        mouse=document.createEvent('MouseEvents');

  •        btn=[btn.left+Math.ceil(Math.random()*46),btn.top+Math.ceil(Math.random()*26)];

  •        mouse.initMouseEvent('click',true,true,document.defaultView,0,0,0,btn[0],btn[1],false,false,false,false,0,null);

  •        _self.event=$.extend(true,{},mouse);

  • delete_self.event.isTrusted;

  •        _self.form1submit();

  • }else{

  •        $('.Btn_blue_1')[0].click();

  • }

  •    setTimeout(submitThis,Math.ceil(setting.time*Math.random())*2);

  • }


  • functioncheckToNext(){

  • var$tip=$(setting.job.join(', '),document).prevAll('.ans-job-icon'+setting.normal);

  •    setInterval(function(){

  •        $tip.parent(':not(.ans-job-finished)').lengthsetting.jump&&toNext();

  • },setting.time);

  • }


  • functiontoNext(){

  • var$cur=$('#cur'+$('#chapterIdid').val()),

  •    $tip=$('span.currents ~ span'),

  •    sel=setting.review?'html':'.blue';

  • if(!$cur.has(sel).length&&$tip.length)return$tip.eq(0).click();

  •    $tip=$('.roundpointStudent, .roundpoint').parent();

  •    $tip=$tip.slice($tip.index($cur)+1).not(':has('+sel+')');

  •    $tip.not(setting.lock?':has(.lock)':'html').find('span').eq(0).click();

  •    $tip.lengthsetting.course&&switchCourse();

  • }


  • functionswitchCourse(){

  •    GM_xmlhttpRequest({

  •        method:'GET',

  •        url:'/visit/courses/study?isAjax=true&fileId=0&debug=',

  •        headers:{

  • 'Referer':location.origin+'/visit/courses',

  • 'X-Requested-With':'XMLHttpRequest'

  • },

  •        onload:function(xhr){

  • var$list=$('.curFile .courseName',xhr.responseText),

  •            index=$list.index($list.filter('[href*="courseid='+top.courseId+'&"]'))+1;

  •            index=index&&$list.eq(index).attr('href');

  •            setting.course=index&&goCourse(index);

  • }

  • });

  • }


  • functiongoCourse(url){

  •    GM_xmlhttpRequest({

  •        method:'GET',

  •        url:url,

  •        onload:function(xhr){

  •            $.globalEval('location.href = "'+$('.articlename a[href]',xhr.responseText).attr('href')+'";');

  • }

  • });

  • }


  • functionautoRead(){

  •    $('html, body').animate({

  •        scrollTop:$(document).height()-$(window).height()

  • },Math.round(setting.read)*1E3,function(){

  •        $('.nodeItem.r i').click();

  • }).one('click','#top',function(event){

  •        $(event.delegateTarget).stop();

  • });

  • }


  • functiongetSchoolId(){

  • varschool=/^1\d{10}$/.test(setting.username)?'':setting.school;

  • if(!isNaN(school))returnsetTimeout(toLogin,setting.time,school);

  • if(school=='账号为手机号可以不修改此参数')returnalert('请修改school参数');

  •    $.get *** ON('/org/searchUnis?filter='+encodeURI(school)+'&product=44',function(data){

  • if(!data.result)returnalert('学校查询错误');

  • varmsg=$.grep(data.froms,function(value){

  • returnvalue.name==school;

  • })[0];

  •        msg?setTimeout(toLogin,setting.time,msg.schoolid):alert('学校名称不完整');

  • });

  • }


  • functiontoLogin(fid){

  •    GM_xmlhttpRequest({

  •        method:'GET',

  •        url:'/api/login?name='+setting.username+'&pwd='+setting.password+'&schoolid='+fid+'&verify=0',

  •        onload:function(xhr){

  • varobj=$.parse *** ON(xhr.responseText){};

  •            obj.result?location.href=decodeURIComponent($('[id^=ref]').val()):alert(obj.errorMsg'Error');

  • }

  • });

  • }


  • functionsubmitAnswer($job,data){

  •    $job.removeClass('ans-job-finished');

  •    data=data.length?$(data):$('.TiMu').map(function(){

  • vartitle=filterImg($('.Zy_TItle .clearfix',this));

  • return{

  •            question:title.replace(/^【.*?】\s*/,''),

  •            type:({单选题:0,多选题:1,填空题:2,判断题:3})[title.match(/^【(.*?)】|$/)[1]]

  • };

  • });

  •    data=$.grep(data.map(function(index){

  • var$TiMu=$('.TiMu').eq(index);

  • if(!($.isPlainObject(this)&&this.type<4&&$TiMu.find('.fr').length)){

  • returnfalse;

  • }elseif(this.type==2){

  • var$ans=$TiMu.find('.Py_tk, .Py_answer').eq(0);

  • if(!$TiMu.find('.cuo').length&&this.code){

  • returnfalse;

  • }elseif(!$ans.find('.cuo').length){

  • this.option=$ans.find('.clearfix').map(function(){

  • returnfilterImg(this);

  • }).get().join('#')'无';

  • }elseif(this.code){

  • this.code=-1;

  • }else{

  • returnfalse;

  • }

  • }elseif(this.type==3){

  • varans=$TiMu.find('.font20:last').text();

  • if($TiMu.find('.cuo').length){

  • this.option=({'√':'错误','×':'正确'})[ans]'无';

  • }elseif(!this.code){

  • this.option=({'√':'正确','×':'错误'})[ans]'无';

  • }else{

  • returnfalse;

  • }

  • }else{

  • vartext=$TiMu.find('.Py_answer > span:eq(0)').text();

  • if($TiMu.find('.dui').length&&this.code&&!/^A?B?C?D?E?F?G?$/.test(this.option)){

  • returnfalse;

  • }elseif($TiMu.find('.dui').lengthtext.match('正确答案')){

  •                text=text.match(/[A-G]/gi)[];

  • this.option=$.map(text,function(value){

  • returnfilterImg($TiMu.find('.fl:contains('+value+') + a'));

  • }).join('#')'无';

  • this.key=text.join('');

  • }elseif(this.code){

  • this.code=-1;

  • }else{

  • returnfalse;

  • }

  • }

  • returnthis;

  • }),function(value){

  • returnvalue&&value.option!='无';

  • });

  •    setting.curs=$('script:contains(courseName)',top.document).text().match(/courseName:\'(.+?)\'|$/)[1]$('h1').text().trim()'无';

  •    data.length&&GM_xmlhttpRequest({

  •        method:'POST',

  •        url:'http://mooc.forestpolice.org/upload/cx/0/?workRelationId='+$('#workId').val(),

  •        headers:{

  • 'Content-type':'application/x-www-form-urlencoded'

  • },

  •        data:'course='+encodeURIComponent(setting.curs)+'&data='+encodeURIComponent((Ext.encode*** ON.stringify)(data))+'&id='+$('#jobid').val().slice(5)

  • });

  •    $job.addClass('ans-job-finished');

  • }


  • functionfilterImg(dom){

  • return$(dom).clone().find('img[src]').replaceWith(function(){

  • return$('<p></p>').text('<img src="'+$(this).attr('src')+'">');

  • }).end().find('iframe[src]').replaceWith(function(){

  • return$('<p></p>').text('<iframe src="'+$(this).attr('src')+'"></irame>');

  • }).end().text().trim();

  • }

  • 下载地址:

  • https://greasyfork.org/id/scripts/369625-%E8%B6%85%E6%98%9F%E7%BD%91%E8%AF%BE%E5%8A%A9%E6%89%8B/

标签:#超星脚本刷课代码

上一篇当前文章已是最后一篇了

下一篇当前文章已是最新一篇了

  • 评论列表

留言评论

网课答案系统上线!

速度get新技能~


点击这里了解详情!   

×

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!