在您安裝前,Greasy Fork镜像希望您了解本腳本包含“可能不受歡迎的功能”,可能幫助腳本的作者獲利,而不能給你帶來任何收益。
此腳本只有在您 註冊後才能使用全部的功能, 例如加入群組, 訂閱頻道, 或是點讚頁面。
此腳本會在您造訪的網站插入廣告。
支持【超星学习通】【智慧树】【职教云系列】【雨课堂】【考试星】【168网校】【u校园】【大学MOOC】【云班课】【优慕课】【继续教育类】【绎通云课堂】【九江系列】【柠檬文才】【亿学宝云】【优课学堂】【小鹅通】【安徽继续教育】【上海开放大学】【华侨大学自考网络助学平台】【良师在线】【和学在线】【人卫慕课】【国家开放大学】【山财培训网】【浙江省高等学校在线开放课程共享平台】【国地质大学远程与继续教育学院】【重庆大学网络教育学院】【浙江省高等教育自学考试网络助学平台】【湖南高等学历继续教育】【优学院】【学起系列】【青书学堂】【学堂在线】【英华学堂】【广开网络教学平台】等,内置题库功能。如您遇到问题,请联系QQ群:565124317 邀请码为6666 系统兼容多种学习平台,支持一键搜题,提升学习效率。新增AI搜题、(如ChatGPT)技术,打破不可复制文本限制。,脚本不收集任何个人信息,确保用户隐私安全。无论是学习、复习备考,还是在线课程,本系统都能提供有效支持,使学习高效轻松。使用本系统,您将能够获取所需学习资源,提升学习效率,取得更好成绩。感谢您对本系统的信任与支持
- // ==UserScript==
- // @name 网课大全助手
- // @version 1.02
- // @description 支持【超星学习通】【智慧树】【职教云系列】【雨课堂】【考试星】【168网校】【u校园】【大学MOOC】【云班课】【优慕课】【继续教育类】【绎通云课堂】【九江系列】【柠檬文才】【亿学宝云】【优课学堂】【小鹅通】【安徽继续教育】【上海开放大学】【华侨大学自考网络助学平台】【良师在线】【和学在线】【人卫慕课】【国家开放大学】【山财培训网】【浙江省高等学校在线开放课程共享平台】【国地质大学远程与继续教育学院】【重庆大学网络教育学院】【浙江省高等教育自学考试网络助学平台】【湖南高等学历继续教育】【优学院】【学起系列】【青书学堂】【学堂在线】【英华学堂】【广开网络教学平台】等,内置题库功能。如您遇到问题,请联系QQ群:565124317 邀请码为6666 系统兼容多种学习平台,支持一键搜题,提升学习效率。新增AI搜题、(如ChatGPT)技术,打破不可复制文本限制。,脚本不收集任何个人信息,确保用户隐私安全。无论是学习、复习备考,还是在线课程,本系统都能提供有效支持,使学习高效轻松。使用本系统,您将能够获取所需学习资源,提升学习效率,取得更好成绩。感谢您对本系统的信任与支持
- // @author peng
- // @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/*
- // @namespace https://a.pengzi.cc/
- // @supportURL https://a.pengzi.cc/
- // @icon https://a.pengzi.cc/assets/images/2.webp
- // @require https://code.jquery.com/jquery-3.6.0.js
- // @grant GM_getValue
- // @grant GM_addStyle
- // @grant unsafeWindow
- // @license MIT
- // @supportURL https://gf.qytechs.cn/zh-CN/scripts/428114
- // @homepage https://gf.qytechs.cn/zh-CN/scripts/428114
- // @antifeature membership
- // @antifeature ads
- // @connect 127.0.0.1
- // @connect *
- // ==/UserScript==
- (function(_this) {
- function MyPage(menu) {
- this.aner = null;
- this.version = "5.2";
- this.$ = $;
- this.menu = menu;
- this.config = this.urlToObject(window.location.href);
- this.api = this.getAPI(this.config.hostname);
- this.config.tk_uid = null;
- this.initMenu();
- // this.initVue();
- return this;
- }
- MyPage.prototype.urlToObject = function(url) {
- let obj = {};
- let arr1 = url.split("?");
- obj["front_url"] = arr1[0].split("/");
- if (url.includes('mooc.mosoteach.cn')) {
- obj.hostname = "mooc.mosoteach";
- } else if (url.includes('mosoteach.cn')) {
- obj.hostname = "mosoteach";
- } else if (url.includes("zhihuishu.com")) {
- obj.hostname = "zhihuishu";
- } else if (url.includes("icve.com.cn")) {
- obj.hostname = "icve";
- } else if (url.includes("met0.top")) {
- obj.hostname = "meto";
- } else if (url.includes("ouchn.cn")) {
- obj.hostname = "ouchn";
- } else if (url.includes("chaoxing.com")) {
- obj.hostname = "chaoxing";
- } else if (url.includes("yuketang.cn")) {
- obj.hostname = "yuketang";
- } else if (url.includes("icourse163")) {
- obj.hostname = "mooc";
- } else if (url.includes("unipus.cn")) {
- obj.hostname = "uschool";
- } else if (url.includes("xuetangx.com")) {
- obj.hostname = "xuetangx";
- }
- if (arr1[1]) {
- let arr2 = arr1[1].split("&");
- for (let i = 0; i < arr2.length; i++) {
- let res = arr2[i].split("=");
- obj[res[0]] = res[1];
- }
- }
- return obj;
- }
- MyPage.prototype.getAPI = function(hostname) {
- switch (hostname) {
- case "mooc.mosoteach":
- console.log("精品云班课脚本准备中");
- return new jpyunbanke_api(this.config);
- case "mosoteach":
- console.log("云班课脚本准备中");
- return new yunbanke_api(this.config);
- case "zhihuishu":
- console.log("智慧树脚本准备中");
- return new zhihuishu_api(this.config);
- case "icve":
- console.log("智慧职教脚本准备中");
- return new icve_api(this.config);
- case "meto":
- console.log("meto脚本准备中");
- return new meto_api(this.config);
- case "ouchn":
- console.log("国开脚本准备中");
- return new ouchn_api(this.config);
- case "chaoxing":
- console.log("超星脚本准备中");
- return new chaoxin_api(this.config);
- case "yuketang":
- console.log("雨课堂脚本准备中");
- return new yuketang_api(this.config);
- case "mooc":
- console.log("慕课脚本准备中");
- return new mooc_api(this.config);
- case "uschool":
- console.log("U校园脚本准备中");
- return new uschool_api(this.config);
- case "xuetangx":
- console.log("学堂在线脚本准备中");
- return new xuetangx_api(this.config);
- default:
- return null;
- }
- };
- /*
- * u校园请求
- */
- class uschool_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 学堂在线请求
- */
- class xuetangx_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * mooc请求
- */
- class mooc_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 雨课堂请求
- */
- class yuketang_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 超星请求
- */
- class chaoxin_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 国开请求
- */
- class ouchn_api {
- constructor(config) {
- this.config = config;
- }
- sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))
- }
- /*
- * meto请求
- */
- class meto_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 智慧职教请求
- */
- class icve_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 智慧树请求
- */
- class zhihuishu_api {
- sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 精品云班课请求
- */
- class jpyunbanke_api {
- constructor(config) {
- this.config = config;
- }
- }
- /*
- * 云班课请求
- */
- class yunbanke_api {
- constructor(config) {
- this.config = config;
- }
- }
- // 鼠标拖动样式
- MyPage.prototype.arrowMove = function(e) {
- // var e = document.getElementById(e);
- // 元素大小
- let elW = e.currentTarget.offsetWidth
- let elH = e.currentTarget.offsetHeight
- // 元素位置
- let elL = e.currentTarget.parentNode.parentNode.offsetLeft
- let elT = e.currentTarget.parentNode.parentNode.offsetTop
- // 鼠标位置
- let x = e.clientX
- let y = e.clientY
- // 窗口大小
- let w = window.innerWidth
- let h = window.innerHeight
- // 鼠标到元素左边距离
- let moveX = x - elL
- let moveY = y - elT
- let el = e.currentTarget
- document.onmousemove = function(e) {
- // el.style.position = 'fixed';
- el.parentNode.parentNode.style.left = e.clientX - moveX + 'px'
- el.parentNode.parentNode.style.top = e.clientY - moveY + 'px'
- }
- document.onmouseup = function(e) {
- document.onmousemove = null
- document.onmouseup = null
- }
- };
- MyPage.prototype.initMenu = function() {
- let $ = this.$,
- menu = this.menu;
- $(document).on('mousedown', '#x_set', function(e) {
- window.my.arrowMove(e); //.target.parentNode.id
- });
- $(document).on('click', '#x_start', function() {
- window.my.start();
- });
- $(document).on('click', '#x_set', function() {
- $('html').find("#set").toggle('active');
- $('html').find("#aner").hide("slow");
- });
- //按f2显示或隐藏#x_set菜单
- $(document).on('keydown', function(e) {
- if (e.key === '*') {
- if ($('#x_set').is(':visible')) {
- $('#wzq').hide();
- $('#x_set').hide();
- alert("隐藏菜单");
- } else {
- $('#wzq').show();
- $('#x_set').show();
- alert("显示菜单");
- }
- }
- });
- /**
- * MosoteachHelper CSS
- */
- const styleTag = `
- <style scoped>
- #${menu.id} #zhu button[disabled]{
- color: white !important;
- background-color: rgb(188, 188, 188) !important;
- }
- #${menu.id} #zhu button{
- float:left;
- margin:25px 2px;
- /* 把按钮撑大 */
- padding: 4px 8px;
- /* 去除默认边框 */
- border: none;
- /* 圆角 */
- border-radius: 50px;
- /* 按钮背景色 */
- background-color: #8888ff;
- /* 字体颜色、大小、粗细、字间距 */
- color: #fff;
- font-size: 12px;
- font-weight: bold;
- letter-spacing: 1px;
- /* 鼠标小手 */
- cursor: pointer;
- /* 给个定位 */
- position: relative;
- /* 3D模式 */
- transform-style: preserve-3d;
- /* 过度动画时间 */
- transition: ease-in-out 2s;
- }
- #${menu.id} #zhu button:hover {
- /* 鼠标放上来旋转一圈 */
- transform: rotateX(360deg);
- }
- #${menu.id} #zhu button::before,
- #${menu.id} #zhu button:after {
- content: "";
- /* 白色边框线 */
- border: 0.8px solid #fff;
- /* 圆角 */
- border-radius: 50px;
- /* 通过定位来撑开边框,简单来说,确定4边的距离,中间自然就固定了 */
- position: absolute;
- top: 1px;
- left: 1px;
- right: 1px;
- bottom: 1px;
- /* 3D模式 */
- transform-style: preserve-3d;
- /* 设置透视参数,向 Z轴方向移动,正常时候就是向屏幕外面移动 */
- transform: perspective(1000px) translateZ(5px);
- }
- #${menu.id} #zhu button::after {
- /* 另一边反着移动一下 */
- transform: perspective(1000px) translateZ(-5px);
- }
- #${menu.id} #zhu button span {
- /* 设置 span 为块元素 */
- display: flex;
- /* 3D模式 */
- transform-style: preserve-3d;
- /* 同样设置透视,抬高 Z轴距离 */
- transform: perspective(500px) translateZ(8px);
- }
- #${menu.id}{
- font-size:14px;
- z-index: 9999;
- text-align:center;
- position:fixed;
- pointer-events: none;
- left:${menu.pos.x}px;
- top:${menu.pos.y}px;
- }
- #${menu.id} #zhu{
- pointer-events: visible;
- }
- #${menu.id} .drawer{
- height:550px;
- pointer-events: visible;
- position:relative;
- overflow:auto;
- text-align:left;
- display: none;
- background: #fff;
- border-radius: 20px;
- box-shadow: 0 5px 15px rgba(0,0,0,0.2);
- width: 400px; /* initially */
- z-index: 199;
- padding:3px;
- margin:10px;
- }
- #${menu.id} .drawer iframe{
- width: 400px;
- height: 100%;
- border: none; /* 去除 iframe 边框 */
- }
- #${menu.id} p{
- text-align:left;
- padding-left:5px;
- }
- #${menu.id} .drawer input{
- border-radius: 3px;
- border: 1px solid;
- width:50%;
- }
- #${menu.id} .drawer button{
- display:inline;
- vertical-align:middle;
- border: 1px solid;
- background-color: transparent;
- text-transform: uppercase;
- padding: 1px 2px;
- font-weight: 300;
- }
- #${menu.id} .drawer button:hover {
- color: white;
- border: 0;
- background-color: #4cc9f0;
- box-shadow: 10px 10px 99px 6px rgba(76,201,240,1);
- }
- #${menu.id} #x_set{
- animation: change 3s linear 0s infinite;
- float:left;
- position:relative;
- z-index: 999999;
- margin:10px;
- border-radius:50%;
- overflow:hidden;
- height: 30px;
- width: 30px;
- border: solid 2px #00f6ffc2;
- background: url(${GM_getValue("userimg") ? GM_getValue("userimg"):"https://a.pengzi.cc/assets/images/2.webp"});
- background-size: 30px 30px;
- }
- @keyframes change {
- 0%{box-shadow: 0 0 4px #f00;}
- 25%{box-shadow: 0 0 16px #0f0;}
- 50%{box-shadow: 0 0 4px #00f;}
- 75%{box-shadow: 0 0 16px #0f0;}
- 100% {box-shadow: 0 0 4px#333;}
- }
- /* 自定义滚动条样式 */
- #${menu.id} .drawer::-webkit-scrollbar {
- width: 10px;
- }
- #${menu.id} .drawer::-webkit-scrollbar-thumb {
- background-color: #a1c4fd;
- 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);
- }
- #${menu.id} .drawer::-webkit-scrollbar-track {
- box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
- background: #f6f6f6;
- }
- </style>`;
- $(styleTag).appendTo('head');
- let $menu = $(
- `
- <div id='${menu.id}'>
- <div id ="zhu">
- <div id="x_set"></div>
- </div>
- <div class= "drawer" id="set">
- <iframe class="iframe" src="https://a.pengzi.cc/" style=" height:100%;"></iframe>
- </div>
- <div class= "drawer" id="aner">
- </div>
- </div>`);
- $($menu).appendTo('html');
- this.aner = $('#aner');
- }
- _this.MyPage = MyPage;
- })(unsafeWindow || window);
- if (window.location == window.parent.location) { // 判断是否为ifarm
- window.my = new unsafeWindow.MyPage({
- id: "wzq",
- width: 80,
- background: '#fff',
- opacity: 0.8,
- pos: {
- x: 100,
- y: 100
- }
- })
- }
- (function() {
- 'use strict';
- // 域名规则列表
- var rules = {
- 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: true,
- hook_addEventListener: true,
- hook_preventDefault: true,
- hook_set_returnValue: true,
- add_css: true
- }
- };
- // 域名列表
- var lists = {
- // 黑名单
- black_list: [
- /.*\.youtube\.com.*/,
- /.*\.wikipedia\.org.*/,
- /mail\.qq\.com.*/,
- /translate\.google\..*/
- ]
- };
- // 要处理的 event 列表
- var hook_eventNames, unhook_eventNames, eventNames;
- // 储存名称
- var storageName = getRandStr('qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM', parseInt(Math.random() *
- 12 + 8));
- // 储存被 Hook 的函数
- var EventTarget_addEventListener = EventTarget.prototype.addEventListener;
- var document_addEventListener = document.addEventListener;
- var Event_preventDefault = Event.prototype.preventDefault;
- // Hook addEventListener proc
- function addEventListener(type, func, useCapture) {
- var _addEventListener = this === document ? document_addEventListener : EventTarget_addEventListener;
- if (hook_eventNames.indexOf(type) >= 0) {
- _addEventListener.apply(this, [type, returnTrue, useCapture]);
- } else if (this && unhook_eventNames.indexOf(type) >= 0) {
- var funcsName = storageName + type + (useCapture ? 't' : 'f');
- if (this[funcsName] === undefined) {
- this[funcsName] = [];
- _addEventListener.apply(this, [type, useCapture ? unhook_t : unhook_f, useCapture]);
- }
- this[funcsName].push(func);
- } else {
- _addEventListener.apply(this, arguments);
- }
- }
- // 清理循环
- function clearLoop() {
- var elements = getElements();
- for (var i in elements) {
- for (var j in eventNames) {
- var name = 'on' + eventNames[j];
- if (elements[i][name] !== null && elements[i][name] !== onxxx) {
- if (unhook_eventNames.indexOf(eventNames[j]) >= 0) {
- elements[i][storageName + name] = elements[i][name];
- elements[i][name] = onxxx;
- } else {
- elements[i][name] = null;
- }
- }
- }
- }
- }
- // 返回true的函数
- function returnTrue(e) {
- return true;
- }
- function unhook_t(e) {
- return unhook(e, this, storageName + e.type + 't');
- }
- function unhook_f(e) {
- return unhook(e, this, storageName + e.type + 'f');
- }
- function unhook(e, self, funcsName) {
- var list = self[funcsName];
- for (var i in list) {
- list[i](e);
- }
- e.returnValue = true;
- return true;
- }
- function onxxx(e) {
- var name = storageName + 'on' + e.type;
- this[name](e);
- e.returnValue = true;
- return true;
- }
- // 获取随机字符串
- function getRandStr(chs, len) {
- var str = '';
- while (len--) {
- str += chs[parseInt(Math.random() * chs.length)];
- }
- return str;
- }
- // 获取所有元素 包括document
- function getElements() {
- var elements = Array.prototype.slice.call(document.getElementsByTagName('*'));
- elements.push(document);
- return elements;
- }
- // 添加css
- function addStyle(css) {
- var style = document.createElement('style');
- style.innerHTML = css;
- document.head.appendChild(style);
- }
- // 获取目标域名应该使用的规则
- function getRule(url) {
- function testUrl(list, url) {
- for (var i in list) {
- if (list[i].test(url)) {
- return true;
- }
- }
- return false;
- }
- if (testUrl(lists.black_list, url)) {
- return rules.black_rule;
- }
- return rules.default_rule;
- }
- // 初始化
- function init() {
- // 获取当前域名的规则
- var url = window.location.host + window.location.pathname;
- var rule = getRule(url);
- // 设置 event 列表
- hook_eventNames = rule.hook_eventNames.split("|");
- // TODO Allowed to return value
- unhook_eventNames = rule.unhook_eventNames.split("|");
- eventNames = hook_eventNames.concat(unhook_eventNames);
- // 调用清理 DOM0 event 方法的循环
- if (rule.dom0) {
- setInterval(clearLoop, 30 * 1000);
- setTimeout(clearLoop, 2500);
- window.addEventListener('load', clearLoop, true);
- clearLoop();
- }
- // hook addEventListener
- if (rule.hook_addEventListener) {
- EventTarget.prototype.addEventListener = addEventListener;
- document.addEventListener = addEventListener;
- }
- // hook preventDefault
- if (rule.hook_preventDefault) {
- Event.prototype.preventDefault = function() {
- if (eventNames.indexOf(this.type) < 0) {
- Event_preventDefault.apply(this, arguments);
- }
- };
- }
- // Hook set returnValue
- if (rule.hook_set_returnValue) {
- Event.prototype.__defineSetter__('returnValue', function() {
- if (this.returnValue !== true && eventNames.indexOf(this.type) >= 0) {
- this.returnValue = true;
- }
- });
- }
- console.debug('url: ' + url, 'storageName:' + storageName, 'rule: ' + rule.name);
- // 添加CSS
- if (rule.add_css) {
- addStyle('html, * {-webkit-user-select:text!important; -moz-user-select:text!important;}');
- }
- }
- init();
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址