安全微伴

通过在h5上模拟点击,调用结束课程请求等方法实现自动化刷课,具有一定隐蔽性,不会被发现


Install this script?
// ==UserScript==// @name         安全微伴// @version      0.5// @description  通过在h5上模拟点击,调用结束课程请求等方法实现自动化刷课,具有一定隐蔽性,不会被发现// @author       九尾妖渚// @match      *://weiban.mycourse.cn/*// @match      https://mcwk.mycourse.cn/*// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==// @grant 		 none// @run-at       document-end// @namespace https://gfork.dahi.icu/users/822791// ==/UserScript==(function() {'use strict';const addHistoryEvent = function(type) {var originalMethod = history[type];return function() {var recallMethod = originalMethod.apply(this, arguments);var e = new Event(type);e.arguments = arguments;window.dispatchEvent(e);return recallMethod;};};history.pushState = addHistoryEvent('pushState');history.replaceState = addHistoryEvent('replaceState');var getVal = function(fun1, fun2){let id = setInterval(()=>{var val = fun1();if (val.length) {clearInterval(id);fun2(val);}}, 100)}var start = function(e) {$(function(){setTimeout(()=>{//console.log(window.location);// 第一阶段 在主页if (window.location.hash === '#/') {getVal(()=>{return $("div.task-block-new")}, (res)=>{//console.log(res);setTimeout(()=>{res[0].click();}, 200);})}// 第二阶段 在学习任务var reg = /course.*projectId.*projectType.*special.*title.*/if (window.location.hash.match(reg)) {// 先检测出还需要完成的任务getVal(()=>{return $("li.folder-item")},(res)=>{res = res.filter(function(index){var child = this.querySelector('.state');var str = child.innerHTML;if (str.substring(0, str.indexOf("/")) === str.substring(str.indexOf("/") + 1, str.length)) {return false;}return true;})//console.log(res);getVal(()=>{return res.find('.folder-extra a')}, (res2)=>{res2[0].click();})})};// 第三阶段 在学习任务列表reg = /course.*list.*projectType.*subjectType.*categoryCode.*projectId.*categoryName.*/if (window.location.hash.match(reg)) {getVal(()=>{return $("li.course")},(res)=>{res = res.filter(function(index){var child = this.querySelector('.course-content h3 i');return !child;})//console.log(res);if (res.length == 0) {getVal(()=>{return $("a.mint-tab-item.is-selected")}, (res2)=>{res2[0].click();})}else res[0].click();})}// 第四阶段 在iframe中	同域解决方法/*if (window.location.hash.match(reg)) {getVal(()=>{return $("iframe")},(res)=>{res[0].contentWindow.finishWxCours();})}		*/}, 1000)});}window.addEventListener('pushState', start);window.addEventListener('popstate', start);//console.log("脚本执行");// 第四阶段 此时在异域iframe中if (window.location.href.indexOf("mcwk.mycourse.cn/course/") != -1) {// console.log(window.location.href);$(function(){setTimeout(()=>{try{console.log(exportRoot.currentFrame)}catch(e){}try {var userid = getQueryString("userCourseId");var jiaoxuejihuaid = getQueryString("tenantCode");var finishWxHost = document.referrer.replace("http://","").replace("https://","").split("/")[0];if(document.referrer=="" || document.referrer==null || document.referrer==undefined){finishWxHost = "weiban.mycourse.cn"}var webUrl = window.location.href;var finishWxUrl=getRecordUrl(webUrl);if(finishWxHost.indexOf("218.25.139.161") > 0){//finishWxUrl = "http://"+finishWxHost+"/pharos/usercourse/finish.do";finishWxUrl = "https://"+finishWxHost+"/pharos/usercourse/finish.do";}var finishData = {"userCourseId": userid, "tenantCode": jiaoxuejihuaid};$.ajax({async: false,url: finishWxUrl,type: "GET",dataType: "jsonp",data: finishData,timeout: 5000,success : function (data) {backToList();},error: function (XMLHttpRequest, textStatus, errorThrown) {}});} catch (e) {alert("报了啥错误" + e)}}, 10000)})}else if (window.location.href.indexOf("weiban.mycourse.cn/") != -1) {//console.log(window.location.href);$(function(){start();})}// Your code here...})();