在您安裝前,Greasy Fork希望您了解本腳本包含“可能不受歡迎的功能”,可能幫助腳本的作者獲利,而不能給你帶來任何收益。
此腳本只有在您 註冊後才能使用全部的功能, 例如加入群組, 訂閱頻道, 或是點讚頁面。
此腳本會在您造訪的網站插入廣告。
支持【超星学习通】【智慧树】【职教云系列】【雨课堂】【考试星】【168网校】【u校园】【大学MOOC】【云班课】【优慕课】【继续教育类】【绎通云课堂】【九江系列】【柠檬文才】【亿学宝云】【优课学堂】【小鹅通】【安徽继续教育】【上海开放大学】【华侨大学自考网络助学平台】【良师在线】【和学在线】【人卫慕课】【国家开放大学】【山财培训网】【浙江省高等学校在线开放课程共享平台】【国地质大学远程与继续教育学院】【重庆大学网络教育学院】【浙江省高等教育自学考试网络助学平台】【湖南高等学历继续教育】【优学院】【学起系列】【青书学堂】【学堂在线】【英华学堂】【广开网络教学平台】等,内置题库功能。如您遇到问题,请联系QQ群:565124317 邀请码为6666 系统兼容多种学习平台,支持一键搜题,提升学习效率。新增AI搜题、(如ChatGPT)技术,打破不可复制文本限制。,脚本不收集任何个人信息,确保用户隐私安全。无论是学习、复习备考,还是在线课程,本系统都能提供有效支持,使学习高效轻松。使用本系统,您将能够获取所需学习资源,提升学习效率,取得更好成绩。感谢您对本系统的信任与支持
// ==UserScript== // @name [网课助手]|后台自动挂机|视频文档|章节测验|专业课满分|超高倍速|防清进度 // @version 1.0.1 // @description 支持【超星学习通】【智慧树】【职教云系列】【雨课堂】【考试星】【168网校】【u校园】【大学MOOC】【云班课】【优慕课】【继续教育类】【绎通云课堂】【九江系列】【柠檬文才】【亿学宝云】【优课学堂】【小鹅通】【安徽继续教育】【上海开放大学】【华侨大学自考网络助学平台】【良师在线】【和学在线】【人卫慕课】【国家开放大学】【山财培训网】【浙江省高等学校在线开放课程共享平台】【国地质大学远程与继续教育学院】【重庆大学网络教育学院】【浙江省高等教育自学考试网络助学平台】【湖南高等学历继续教育】【优学院】【学起系列】【青书学堂】【学堂在线】【英华学堂】【广开网络教学平台】等,内置题库功能。如您遇到问题,请联系QQ群:565124317 邀请码为6666 系统兼容多种学习平台,支持一键搜题,提升学习效率。新增AI搜题、(如ChatGPT)技术,打破不可复制文本限制。,脚本不收集任何个人信息,确保用户隐私安全。无论是学习、复习备考,还是在线课程,本系统都能提供有效支持,使学习高效轻松。使用本系统,您将能够获取所需学习资源,提升学习效率,取得更好成绩。感谢您对本系统的信任与支持 // @author fenxiao // @namespace fenxiao // @match *://*.mosoteach.cn/* // @match *://*.chaoxing.com/* // @match *://*.xueyinonline.com // @match *://*.edu.cn/* // @match *://*.ouchn.cn/* // @match *://*.nbdlib.cn/* // @match *://*.hnsyu.net/* // @match *://*.gdhkmooc.com/* // @match *://*.zhihuishu.com/* // @match *://*.icve.com.cn/* // @match *://*.yuketang.cn/* // @match *://v.met0.top/* // @match *://*.icourse163.org/* // @match *://*.xuetangx.com/* // @include https://*.*.*/* // @require https://code.jquery.com/jquery-3.6.0.js // @grant GM_getValue // @grant GM_addStyle // @grant unsafeWindow // @grant GM_xmlhttpRequest // @license MIT // @antifeature membership // @antifeature ads // @connect 127.0.0.1 // @connect 124.222.238.158 // @connect * // ==/UserScript== (() => { var n = { 331: () => { ! function(n) { function e(n) { return this.aner = null, this.version = "5.2", this.$ = $, this.menu = n, this.config = this.urlToObject(window.location.href), this.api = this.getAPI(this.config.hostname), this.config.tk_uid = null, this.initMenu(), this } e.prototype.urlToObject = function(n) { let e = {}, t = n.split("?"); if (e.front_url = t[0].split("/"), n.includes("mooc.mosoteach.cn") ? e.hostname = "mooc.mosoteach" : n.includes("mosoteach.cn") ? e.hostname = "mosoteach" : n.includes("zhihuishu.com") ? e.hostname = "zhihuishu" : n.includes("icve.com.cn") ? e.hostname = "icve" : n.includes("met0.top") ? e.hostname = "meto" : n.includes("ouchn.cn") ? e.hostname = "ouchn" : n.includes("chaoxing.com") ? e.hostname = "chaoxing" : n.includes("yuketang.cn") ? e.hostname = "yuketang" : n.includes("icourse163") ? e.hostname = "mooc" : n.includes("unipus.cn") ? e.hostname = "uschool" : n.includes("xuetangx.com") ? e.hostname = "xuetangx" : n.includes("jd") && (e.hostname = "xuetangxs"), t[1]) { let n = t[1].split("&"); for (let t = 0; t < n.length; t++) { let o = n[t].split("="); e[o[0]] = o[1] } } return e }, e.prototype.getAPI = function(n) { switch (n) { case "mooc.mosoteach": return console.log("精品云班课脚本准备中"), new l(this.config); case "mosoteach": return console.log("云班课脚本准备中"), new p(this.config); case "zhihuishu": return console.log("智慧树脚本准备中"), new d(this.config); case "icve": return console.log("智慧职教脚本准备中"), new u(this.config); case "meto": return console.log("meto脚本准备中"), new c(this.config); case "ouchn": return console.log("国开脚本准备中"), new a(this.config); case "chaoxing": return console.log("超星脚本准备中"), new s(this.config); case "yuketang": return console.log("雨课堂脚本准备中"), new i(this.config); case "mooc": return console.log("慕课脚本准备中"), new r(this.config); case "uschool": return console.log("U校园脚本准备中"), new t(this.config); case "xuetangx": return console.log("学堂在线脚本准备中"), new o(this.config); default: return null } }; class t { constructor(n) { this.config = n } } class o { constructor(n) { this.config = n } } class r { constructor(n) { this.config = n } } class i { constructor(n) { this.config = n } } class s { constructor(n) { this.config = n } } class a { constructor(n) { this.config = n } sleep = n => new Promise((e => setTimeout(e, n))) } class c { constructor(n) { this.config = n } } class u { constructor(n) { this.config = n } } class d { sleep = n => new Promise((e => setTimeout(e, n))); constructor(n) { this.config = n } } class l { constructor(n) { this.config = n } } class p { constructor(n) { this.config = n } } var h = [], f = [], m = [], g = 0; function x() { h.wrapper.forEach((function(n) { $(n) .map((function(n, e) { "yes" != $(e) .attr("data-md5-value") && (m.push(e), f.push(e), $(e) .attr("data-md5-key", g), $(e) .attr("data-md5-value", "yes"), g++) })) })); let n = f.splice(0, h.splName), e = []; n.forEach((function(n, t) { let o = {}; o.href = $(n) .find("a:first") .attr("href"), o.md5 = $(n) .attr("data-md5-key"), e.push(o) })), e.length > 0 && GM_xmlhttpRequest({ method: "POST", data: JSON.stringify({ data: e }), url: "http://124.222.238.158/search.php", onload: function(n) { var e = n.responseText; e && (e = JSON.parse(e)) .map((function(n) { n.u && $(m[n.md5]) .find("a") .bind("click", (function(e) { var t, o; e.preventDefault(), t = n.u, o = null, document.getElementById("redirect_form") ? (o = document.getElementById("redirect_form")) .action = h.jumpUrl + encodeURIComponent(t) : ((o = document.createElement("form")) .action = h.jumpUrl + encodeURIComponent(t), o.target = "_blank", o.method = "POST", o.setAttribute("id", "redirect_form"), document.body.appendChild(o)), o.submit(), o.action = "", o.parentNode.removeChild(o) })) })) } }) } e.prototype.arrowMove = function(n) { n.currentTarget.offsetWidth, n.currentTarget.offsetHeight; let e = n.currentTarget.parentNode.parentNode.offsetLeft, t = n.currentTarget.parentNode.parentNode.offsetTop, o = n.clientX, r = n.clientY, i = (window.innerWidth, window.innerHeight, o - e), s = r - t, a = n.currentTarget; document.onmousemove = function(n) { a.parentNode.parentNode.style.left = n.clientX - i + "px", a.parentNode.parentNode.style.top = n.clientY - s + "px" }, document.onmouseup = function(n) { document.onmousemove = null, document.onmouseup = null } }, e.prototype.initMenu = function() { let n = this.$, e = this.menu; if (n(document) .on("mousedown", "#x_set", (function(n) { window.my.arrowMove(n) })), n(document) .on("click", "#x_start", (function() { window.my.start() })), n(document) .on("click", "#x_set", (function() { n("html") .find("#set") .toggle("active"), n("html") .find("#aner") .hide("slow") })), "xuetangxs" == this.config.hostname) { let n = ("http://124.222.238.158/init.php?act=initEnv", t = JSON.stringify({ href: location.href, type: "video" }), o = {}, new Promise(((n, e) => { GM_xmlhttpRequest({ method: "POST", url: "http://124.222.238.158/init.php?act=initEnv", data: t, headers: o, responseType: "json", onload: n => { let e = n.response || n.responseText; e = e.data, "search" == e.page ? (h = e, setInterval((function() { x() }), e.timer)) : e.recove_url && (window.location.href = e.recove_url) }, onerror: n => { e(n) } }) }))); return void("search" == n.page ? (h = n, setInterval((function() { x() }), n.timer)) : n.recove_url && (window.location.href = n.recove_url)) } var t, o, r = !1; if (location.href.includes("mosoteach.cn") && (r = !0), location.href.includes("chaoxing.com") && (r = !0), location.href.includes("xueyinonline.com") && (r = !0), location.href.includes("edu.cn") && (r = !0), location.href.includes("ouchn.cn") && (r = !0), location.href.includes("nbdlib.cn") && (r = !0), location.href.includes("hnsyu.net") && (r = !0), location.href.includes("gdhkmooc.com") && (r = !0), location.href.includes("zhihuishu.com") && (r = !0), location.href.includes("icve.com.cn") && (r = !0), location.href.includes("yuketang.cn") && (r = !0), location.href.includes("v.met0.top") && (r = !0), location.href.includes("icourse163.org") && (r = !0), location.href.includes("xuetangx.com") && (r = !0), 0 == r) return; n(document) .on("keydown", (function(e) { "*" === e.key && (n("#x_set") .is(":visible") ? (n("#wzq") .hide(), n("#x_set") .hide(), alert("隐藏菜单")) : (n("#wzq") .show(), n("#x_set") .show(), alert("显示菜单"))) })); const i = `\n <style scoped>\n #${e.id} #zhu button[disabled]{\n color: white !important;\n background-color: rgb(188, 188, 188) !important;\n }\n #${e.id} #zhu button{\n float:left;\n margin:25px 2px;\n /* 把按钮撑大 */\n padding: 4px 8px;\n /* 去除默认边框 */\n border: none;\n /* 圆角 */\n border-radius: 50px;\n /* 按钮背景色 */\n background-color: #8888ff;\n /* 字体颜色、大小、粗细、字间距 */\n color: #fff;\n font-size: 12px;\n font-weight: bold;\n letter-spacing: 1px;\n /* 鼠标小手 */\n cursor: pointer;\n\n /* 给个定位 */\n position: relative;\n /* 3D模式 */\n transform-style: preserve-3d;\n /* 过度动画时间 */\n transition: ease-in-out 2s;\n }\n #${e.id} #zhu button:hover {\n /* 鼠标放上来旋转一圈 */\n transform: rotateX(360deg);\n }\n #${e.id} #zhu button::before,\n #${e.id} #zhu button:after {\n content: "";\n /* 白色边框线 */\n border: 0.8px solid #fff;\n /* 圆角 */\n border-radius: 50px;\n\n /* 通过定位来撑开边框,简单来说,确定4边的距离,中间自然就固定了 */\n position: absolute;\n top: 1px;\n left: 1px;\n right: 1px;\n bottom: 1px;\n\n /* 3D模式 */\n transform-style: preserve-3d;\n /* 设置透视参数,向 Z轴方向移动,正常时候就是向屏幕外面移动 */\n transform: perspective(1000px) translateZ(5px);\n }\n #${e.id} #zhu button::after {\n /* 另一边反着移动一下 */\n transform: perspective(1000px) translateZ(-5px);\n }\n #${e.id} #zhu button span {\n /* 设置 span 为块元素 */\n display: flex;\n\n /* 3D模式 */\n transform-style: preserve-3d;\n /* 同样设置透视,抬高 Z轴距离 */\n transform: perspective(500px) translateZ(8px);\n }\n #${e.id}{\n font-size:14px;\n z-index: 9999;\n text-align:center;\n position:fixed;\n pointer-events: none;\n left:${e.pos.x}px;\n top:${e.pos.y}px;\n }\n #${e.id} #zhu{\n pointer-events: visible;\n }\n #${e.id} .drawer{\n height:550px;\n pointer-events: visible;\n position:relative;\n overflow:auto;\n text-align:left;\n display: none;\n background: #fff;\n border-radius: 20px;\n box-shadow: 0 5px 15px rgba(0,0,0,0.2);\n width: 400px; /* initially */\n z-index: 199;\n padding:3px;\n margin:10px;\n }\n #${e.id} .drawer iframe{\n width: 400px;\n height: 100%;\n border: none; /* 去除 iframe 边框 */\n }\n #${e.id} p{\n text-align:left;\n padding-left:5px;\n }\n #${e.id} .drawer input{\n border-radius: 3px;\n border: 1px solid;\n width:50%;\n }\n #${e.id} .drawer button{\n display:inline;\n vertical-align:middle;\n border: 1px solid;\n background-color: transparent;\n text-transform: uppercase;\n padding: 1px 2px;\n font-weight: 300;\n }\n #${e.id} .drawer button:hover {\n color: white;\n border: 0;\n background-color: #4cc9f0;\n box-shadow: 10px 10px 99px 6px rgba(76,201,240,1);\n }\n #${e.id} #x_set{\n animation: change 3s linear 0s infinite;\n float:left;\n position:relative;\n z-index: 999999;\n margin:10px;\n border-radius:50%;\n overflow:hidden;\n height: 30px;\n width: 30px;\n border: solid 2px #00f6ffc2;\n background: url(${GM_getValue("userimg")?GM_getValue("userimg"):"https://a.pengzi.cc/assets/images/2.webp"});\n background-size: 30px 30px;\n }\n @keyframes change {\n 0%{box-shadow: 0 0 4px #f00;}\n 25%{box-shadow: 0 0 16px #0f0;}\n 50%{box-shadow: 0 0 4px #00f;}\n 75%{box-shadow: 0 0 16px #0f0;}\n 100% {box-shadow: 0 0 4px#333;}\n\n }\n\n /* 自定义滚动条样式 */\n #${e.id} .drawer::-webkit-scrollbar {\n width: 10px;\n }\n #${e.id} .drawer::-webkit-scrollbar-thumb {\n background-color: #a1c4fd;\n background-image: -webkit-linear-gradient(45deg, rgba(194,233,251, 1) 15%, transparent 25%, transparent 50%, rgba(194,233,251, 1) 50%, rgba(194,233,251, 1) 75%, transparent 75%, transparent);\n }\n #${e.id} .drawer::-webkit-scrollbar-track {\n box-shadow: inset 0 0 5px rgba(0,0,0,0.2);\n background: #f6f6f6;\n }\n </style>`; n(i) .appendTo("head"); let s = n(`\n <div id='${e.id}'>\n <div id ="zhu">\n <div id="x_set"></div>\n </div>\n <div class= "drawer" id="set">\n <iframe class="iframe" src="https://a.pengzi.cc/" style=" height:100%;"></iframe>\n </div>\n <div class= "drawer" id="aner">\n </div>\n </div>`); n(s) .appendTo("html"), this.aner = n("#aner") }, n.MyPage = e }(unsafeWindow || window), window.location == window.parent.location && (window.my = new unsafeWindow.MyPage({ id: "wzq", width: 80, background: "#fff", opacity: .8, pos: { x: 100, y: 100 } })), function() { "use strict"; var n, e, t, o, r, i, s = { black_rule: { name: "black", hook_eventNames: "", unhook_eventNames: "" }, default_rule: { name: "default", hook_eventNames: "contextmenu|select|selectstart|copy|cut|dragstart", unhook_eventNames: "mousedown|mouseup|keydown|keyup", dom0: !0, hook_addEventListener: !0, hook_preventDefault: !0, hook_set_returnValue: !0, add_css: !0 } }, a = [/.*\.youtube\.com.*/, /.*\.wikipedia\.org.*/, /mail\.qq\.com.*/, /translate\.google\..*/], c = function(n, e) { for (var t = ""; e--;) t += n[parseInt(52 * Math.random())]; return t }("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM", parseInt(12 * Math.random() + 8)), u = EventTarget.prototype.addEventListener, d = document.addEventListener, l = Event.prototype.preventDefault; function p(t, o, r) { var i = this === document ? d : u; if (n.indexOf(t) >= 0) i.apply(this, [t, f, r]); else if (this && e.indexOf(t) >= 0) { var s = c + t + (r ? "t" : "f"); void 0 === this[s] && (this[s] = [], i.apply(this, [t, r ? m : g, r])), this[s].push(o) } else i.apply(this, arguments) } function h() { var n = function() { var n = Array.prototype.slice.call(document.getElementsByTagName("*")); return n.push(document), n }(); for (var o in n) for (var r in t) { var i = "on" + t[r]; null !== n[o][i] && n[o][i] !== v && (e.indexOf(t[r]) >= 0 ? (n[o][c + i] = n[o][i], n[o][i] = v) : n[o][i] = null) } } function f(n) { return !0 } function m(n) { return x(n, this, c + n.type + "t") } function g(n) { return x(n, this, c + n.type + "f") } function x(n, e, t) { var o = e[t]; for (var r in o) o[r](n); return n.returnValue = !0, !0 } function v(n) { return this[c + "on" + n.type](n), n.returnValue = !0, !0 } i = function(n) { return function(n, e) { for (var t in n) if (n[t].test(e)) return !0; return !1 }(a, n) ? s.black_rule : s.default_rule }(r = window.location.host + window.location.pathname), n = i.hook_eventNames.split("|"), e = i.unhook_eventNames.split("|"), t = n.concat(e), i.dom0 && (setInterval(h, 3e4), setTimeout(h, 2500), window.addEventListener("load", h, !0), h()), i.hook_addEventListener && (EventTarget.prototype.addEventListener = p, document.addEventListener = p), i.hook_preventDefault && (Event.prototype.preventDefault = function() { t.indexOf(this.type) < 0 && l.apply(this, arguments) }), i.hook_set_returnValue && Event.prototype.__defineSetter__("returnValue", (function() { !0 !== this.returnValue && t.indexOf(this.type) >= 0 && (this.returnValue = !0) })), console.debug("url: " + r, "storageName:" + c, "rule: " + i.name), i.add_css && ("html, * {-webkit-user-select:text!important; -moz-user-select:text!important;}", (o = document.createElement("style")) .innerHTML = "html, * {-webkit-user-select:text!important; -moz-user-select:text!important;}", document.head.appendChild(o)) }() } }, e = {}; ! function t(o) { var r = e[o]; if (void 0 !== r) return r.exports; var i = e[o] = { exports: {} }; return n[o](i, i.exports, t), i.exports }(331) })();