// ==UserScript==
// @name 🏆全国成人继续教育网课处理平台(学习通、知到、u校园ai、英华全系列、智慧职教、雨课堂、FIF、高校邦、池馆、中国大学、welearn、在浙学、utalk)(学起plus、青书、柠檬文才、睿学、慕享、联大、智慧中小学、学习公社、168网校)、自考(讯网、出头科技、学历教育云、慕华、龙知网)、国开、广开、云开、江开、寒期教师研修、2026年春季学期人教版义教新教材等平台视频处理,作业、考试需付费,详情请联系客服QQ:125431514
// @namespace http://tampermonkey.net/
// @version V2026.4
// @description 🏆全国成人继续教育网课处理平台(学习通、知到、u校园ai、英华全系列、智慧职教、雨课堂、FIF、高校邦、池馆、中国大学、welearn、在浙学、utalk)(学起、青书、柠檬文才、睿学、慕享、联大、智慧中小学、学习公社、168网校)、自考(讯网、出头科技、学历教育云、慕华、龙知网)、国开、广开、云开、江开等平台视频处理,作业、考试需付费,详情请联系客服QQ:125431514
// @author 125431514
// @match *://*.zjy2.icve.com.cn/*
// @match *://*.yuketang.cn/*
// @match *://*.kaoshixing.com/*
// @match *://*.168wangxiao.com/*
// @match *://*.lemonwen.com/*
// @match *://*.yixuebao.com/*
// @match *://*.youkexuetang.com/*
// @match *://*.xiaoetong.com/*
// @match *://*.ahjxjy.cn/*
// @match *://*.shou.edu.cn/*
// @match *://*.hqu.edu.cn/*
// @match *://*.hexue.com.cn/*
// @match *://*.pmph.com/*
// @match *://*.ouchn.cn/*
// @match *://*.scetc.edu.cn/*
// @match *://*.zjedu.org/*
// @match *://*.cug.edu.cn/*
// @match *://*.zjzs.net/*
// @match *://*.hneao.cn/*
// @match *://*.ulearning.cn/*
// @match *://*.xueqiplus.com/*
// @match *://*.qingshuxuetang.com/*
// @match *://*.xuetangx.com/*
// @match *://*.yinghuaxuetang.com/*
// @match *://*.gdou.com/*
// @match *://*.chaoxing.com/*
// @match *://*.hlju.edu.cn/*
// @match *://*.ecust.edu.cn/*
// @match *://lms.ouchn.cn/*
// @match *://xczxzdbf.moodle.qwbx.ouchn.cn/*
// @match *://study.ouchn.cn/*
// @match *://moodle.syxy.ouchn.cn/*
// @match *://moodle.qwbx.ouchn.cn/*
// @match *://*.tongyi.com/*
// @match *://chatglm.cn/*
// @match *://xinghuo.xfyun.cn/*
// @match *://chat.deepseek.com/*
// @match *://*.zhihuishu.com/*
// @match *://course.ougd.cn/*
// @match *://elearning.bjou.edu.cn/*
// @match *://whkpc.hnqtyq.cn:5678/*
// @match *://www.51xinwei.com/*
// @match *://*.w-ling.cn/*
// @match *://*.edu-edu.com/*
// @match *://xuexi.jsou.cn/*
// @match *://*.icve.com.cn/*
// @match *://zice.cnzx.info/*
// @match *://any.cnzx.info:81/*
// @match *://www.icourse163.org/*
// @match *://*.shou.org.cn/*
// @match *://*.chinaedu.net/*
// @match *://training.qingshuxuetang.com/*
// @match *://cce.org.uooconline.com/*
// @match *://*.courshare.cn/*
// @match *://*.cep.webtrn.cn/*
// @match *://*.webtrn.cn/*
// @match *://*.cj-edu.com/*
// @match *://*.ytccr.com/*
// @match *://*.exam-cloud.cn/*
// @match *://gdrtvu.exam-cloud.cn/*
// @match *://*.open.ha.cn/*
// @match *://lhycjy.cloudwis.tech/*
// @match *://*.sclecb.cn/*
// @match *://*.web2.superchutou.com/*
// @match *://*.ls365.net/*
// @match *://*.jijiaox.com/*
// @match *://*.wencaischool.net/*
// @match *://sdrz.gxk.yxlearning.com/*
// @match *://*.crjxjy.net/*
// @match *://*.cjnep.net/*
// @match *://*.91huayi.com/*
// @match *://teach.ynou.edu.cn/*
// @match *://*.edu-edu.com.cn/*
// @match *://*.21tb.com/*
// @match *://*.mynep.com/*
// @match *://www.mosoteach.cn/*
// @match *://*.aufe.edu.cn/*
// @match *://*.learnin.com.cn/*
// @match *://*.swufe-online.com/*
// @match *://ks.cqsdx.cn/*
// @match *://*.qau.edu.cn/*
// @match *://*.gdufemooc.cn/*
// @match *://*.telfri-edu.com/*
// @match *://www.beeline-ai.com/*
// @match *://*.wxic.edu.cn/*
// @match *://*.yxbyun.com/*
// @match *://*.wdjycj.com/*
// @match *://*.hbcjpt.com/*
// @match *://*.csmu.edu.cn/*
// @match *://*.ketangx.net/*
// @match *://*.cnzx.info/*
// @match *://www.asklib.com/*
// @match *://*.xust.edu.cn/*
// @match *://*.whut.edu.cn/*
// @match *://*.lut.edu.cn/*
// @match *://*.wwwwsoft.com/*
// @match *://*.dufe.edu.cn/*
// @match *://*.lygtc.edu.cn/*
// @match *://*.iwdjy.com/*
// @match *://*.jijiaool.com/*
// @match *://lms.cjzx.hblll.com/*
// @match *://*.ouc-online.com.cn/*
// @match *://*.lsedu.vip/*
// @match *://*.gdcxxy.net/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// 假设的免费AI题库API
const AIQuestionBankAPI = {
getAnswer: async function(question) {
// 这里应该是调用一个真实的API来获取答案
// 以下代码仅为示例,实际情况下需要根据API的具体实现来编写
const response = await fetch('https://api.freeaitestbank.com/getAnswer', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ question })
});
const data = await response.json();
return data.answer;
}
};
// 自动播放视频
function autoPlayMedia() {
const mediaElements = document.querySelectorAll('video, audio');
mediaElements.forEach(media => {
if (media.paused) {
media.play();
}
});
}
// 从AI题库获取答案
async function getAnswerFromAI(question) {
try {
const answer = await AIQuestionBankAPI.getAnswer(question);
return answer;
} catch (error) {
console.error('获取AI题库答案失败', error);
return null;
}
}
// 检测当前页面所属的平台
function detectPlatform() {
const url = window.location.href;
if (url.includes('chaoxing.com')) return '超星学习通';
if (url.includes('zhihuishu.com')) return '智慧树';
if (url.includes('zjy2.icve.com.cn')) return '职教云系列';
if (url.includes('yuketang.cn')) return '雨课堂';
if (url.includes('kaoshixing.com')) return '考试星';
if (url.includes('168wangxiao.com')) return '168网校';
if (url.includes('lemonwen.com')) return '柠檬文才';
if (url.includes('yixuebao.com')) return '亿学宝云';
if (url.includes('youkexuetang.com')) return '优课学堂';
if (url.includes('xiaoetong.com')) return '小鹅通';
if (url.includes('ahjxjy.cn')) return '安徽继续教育';
if (url.includes('shou.edu.cn')) return '上海开放大学';
if (url.includes('hqu.edu.cn')) return '华侨大学自考网络助学平台';
if (url.includes('hexue.com.cn')) return '和学在线';
if (url.includes('pmph.com')) return '人卫慕课';
if (url.includes('ouchn.cn')) return '国家开放大学';
if (url.includes('scetc.edu.cn')) return '山财培训网(继续教育)';
if (url.includes('zjedu.org')) return '浙江省高等学校在线开放课程共享平台';
if (url.includes('cug.edu.cn')) return '国地质大学远程与继续教育学院';
if (url.includes('zjzs.net')) return '浙江省高等教育自学考试网络助学平台';
if (url.includes('hneao.cn')) return '湖南高等学历继续教育';
if (url.includes('ulearning.cn')) return '优学院';
if (url.includes('xueqiplus.com')) return '学起Plus';
if (url.includes('qingshuxuetang.com')) return '青书学堂';
if (url.includes('xuetangx.com')) return '学堂在线';
if (url.includes('yinghuaxuetang.com')) return '英华学堂';
if (url.includes('gdou.com')) return '广开网络教学平台';
return '未知平台';
}
// 获取题目内容
function getQuestionContent() {
// 这里需要根据具体平台的页面结构来获取题目内容
// 例如,假设题目内容在一个类名为 'question-content' 的元素中
const questionElement = document.querySelector('.question-content');
return questionElement ? questionElement.innerText : '';
}
// 从本地题库获取答案
function getAnswerFromLocalBank(platform, question) {
const bank = questionBank[platform];
return bank ? bank[question] : null;
}
// 自动填写答案
function fillAnswer(answer) {
// 这里需要根据具体平台的页面结构来填写答案
// 例如,假设答案填写在一个类名为 'answer-input' 的输入框中
const answerInput = document.querySelector('.answer-input');
if (answerInput) {
answerInput.value = answer;
}
}
// 自动提交答案
function autoSubmit() {
// 这里需要根据具体平台的页面结构来提交答案
// 例如,假设提交按钮在一个类名为 'submit-button' 的按钮中
const submitButton = document.querySelector('.submit-button');
if (submitButton) {
submitButton.click();
}
}
(function() {
'use strict';
if (window.hasVideoControlScriptRun) {
return;
}
window.hasVideoControlScriptRun = true;
let currentRate = 1.0;
let isMinimized = false;
let isClosed = false;
let modal;
function setPlaybackRate(rate) {
const videos = document.querySelectorAll('video');
videos.forEach(video => {
video.playbackRate = rate;
video.muted = true; // 自动静音
if (!video.playing) {
video.play().catch(err => {});
}
});
}
function checkAndPlayVideo() {
const videos = document.querySelectorAll('video');
videos.forEach(video => {
if (video.paused &&!video.ended) {
video.play().catch(err => {});
}
});
}
function observeVideoChanges() {
const observer = new MutationObserver((mutations) => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
setPlaybackRate(currentRate);
checkAndPlayVideo();
}
});
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
function createControlModal() {
const modal = document.createElement('div');
modal.id = 'videoControlModal';
modal.style.position = 'fixed';
modal.style.left = '10px';
modal.style.top = '10px';
modal.style.backgroundColor = '#ffffff';
modal.style.padding = '15px';
modal.style.zIndex = '1000';
modal.style.borderRadius = '10px';
modal.style.boxShadow = '0 4px 15px rgba(0, 0, 0, 0.2)';
modal.style.width = '280px';
modal.style.fontFamily = 'Arial, sans-serif';
modal.style.border = '1px solid #e0e0e0';
modal.style.transition = 'all 0.3s ease';
modal.style.opacity = '0';
modal.style.transform = 'translateY(-20px)';
setTimeout(() => {
modal.style.opacity = '1';
modal.style.transform = 'translateY(0)';
}, 10);
const title = document.createElement('h3');
title.textContent = '视频倍速控制';
title.style.margin = '0 0 15px 0';
title.style.textAlign = 'center';
title.style.color = '#333333';
title.style.fontSize = '18px';
modal.appendChild(title);
const rateInput = document.createElement('input');
rateInput.type = 'number';
rateInput.min = '0.1';
rateInput.max = '16';
rateInput.step = '0.1';
rateInput.value = currentRate;
rateInput.style.width = '100%';
rateInput.style.padding = '8px';
rateInput.style.marginBottom = '10px';
rateInput.style.border = '1px solid #e0e0e0';
rateInput.style.borderRadius = '5px';
rateInput.style.fontSize = '14px';
rateInput.style.outline = 'none';
rateInput.style.transition = 'border-color 0.3s ease';
rateInput.addEventListener('focus', () => {
rateInput.style.borderColor = '#007bff';
});
rateInput.addEventListener('blur', () => {
rateInput.style.borderColor = '#e0e0e0';
});
modal.appendChild(rateInput);
const confirmButton = document.createElement('button');
confirmButton.textContent = '设置倍速';
confirmButton.style.width = '100%';
confirmButton.style.padding = '8px';
confirmButton.style.marginBottom = '10px';
confirmButton.style.backgroundColor = '#007bff';
confirmButton.style.color = '#ffffff';
confirmButton.style.border = 'none';
confirmButton.style.borderRadius = '5px';
confirmButton.style.fontSize = '14px';
confirmButton.style.cursor = 'pointer';
confirmButton.style.transition = 'background-color 0.3s ease';
confirmButton.onclick = function() {
const newRate = parseFloat(rateInput.value);
if (newRate >= 0.1 && newRate <= 16) {
currentRate = newRate;
setPlaybackRate(currentRate);
} else {
alert('倍速必须在 0.1 到 16 之间');
}
};
confirmButton.addEventListener('mouseenter', () => {
confirmButton.style.backgroundColor = '#0056b3';
});
confirmButton.addEventListener('mouseleave', () => {
confirmButton.style.backgroundColor = '#007bff';
});
modal.appendChild(confirmButton);
const minimizeButton = document.createElement('button');
minimizeButton.textContent = isMinimized? '恢复' : '最小化';
minimizeButton.style.width = '48%';
minimizeButton.style.marginRight = '4%';
minimizeButton.style.padding = '8px';
minimizeButton.style.backgroundColor = '#6c757d';
minimizeButton.style.color = '#ffffff';
minimizeButton.style.border = 'none';
minimizeButton.style.borderRadius = '5px';
minimizeButton.style.fontSize = '14px';
minimizeButton.style.cursor = 'pointer';
minimizeButton.style.transition = 'background-color 0.3s ease';
minimizeButton.onclick = function() {
isMinimized =!isMinimized;
if (isMinimized) {
modal.style.height = '50px';
modal.style.overflow = 'hidden';
minimizeButton.textContent = '恢复';
} else {
modal.style.height = 'auto';
modal.style.overflow = 'visible';
minimizeButton.textContent = '最小化';
}
};
minimizeButton.addEventListener('mouseenter', () => {
minimizeButton.style.backgroundColor = '#5a6268';
});
minimizeButton.addEventListener('mouseleave', () => {
minimizeButton.style.backgroundColor = '#6c757d';
});
modal.appendChild(minimizeButton);
const closeButton = document.createElement('button');
closeButton.textContent = '关闭';
closeButton.style.width = '48%';
closeButton.style.padding = '8px';
closeButton.style.backgroundColor = '#dc3545';
closeButton.style.color = '#ffffff';
closeButton.style.border = 'none';
closeButton.style.borderRadius = '5px';
closeButton.style.fontSize = '14px';
closeButton.style.cursor = 'pointer';
closeButton.style.transition = 'background-color 0.3s ease';
closeButton.onclick = function() {
isClosed = true;
modal.style.opacity = '0';
modal.style.transform = 'translateY(-20px)';
setTimeout(() => {
modal.style.display = 'none';
}, 300);
};
closeButton.addEventListener('mouseenter', () => {
closeButton.style.backgroundColor = '#c82333';
});
closeButton.addEventListener('mouseleave', () => {
closeButton.style.backgroundColor = '#dc3545';
});
modal.appendChild(closeButton);
const infoText = document.createElement('p');
infoText.style.marginTop = '13px';
infoText.style.fontSize = '13px';
infoText.style.color = '#666666';
infoText.innerHTML = `
提示:
1. 倍速范围:0.1x - 16x
2. 部分平台可能不支持倍速播放(设置强制倍数)
3. 视频会自动尝试播放自带静音
4. 按F2键可快速显示/隐藏控制面板
5. 需要进行托管(帮忙学习)的可以联系125431514
`;
modal.appendChild(infoText);
const tipLabel = document.createElement('div');
tipLabel.textContent = '脚本并不适用所有的网页,自行尝试使用! 感谢理解!';
tipLabel.style.textAlign = 'center';
tipLabel.style.marginTop = '10px';
tipLabel.style.fontSize = '14px';
tipLabel.style.color = '#666666';
tipLabel.style.fontWeight = 'bold';
modal.appendChild(tipLabel);
return modal;
}
function toggleModal() {
if (!modal) return;
if (modal.style.display === 'none' || modal.style.display === '') {
modal.style.display = 'block';
modal.style.opacity = '0';
modal.style.transform = 'translateY(-20px)';
setTimeout(() => {
modal.style.opacity = '1';
modal.style.transform = 'translateY(0)';
}, 10);
isClosed = false;
} else {
modal.style.opacity = '0';
modal.style.transform = 'translateY(-20px)';
setTimeout(() => {
modal.style.display = 'none';
}, 300);
isClosed = true;
}
}
function init() {
if (document.querySelector('#videoControlModal')) {
return;
}
modal = createControlModal();
document.body.appendChild(modal);
setPlaybackRate(currentRate);
observeVideoChanges();
setInterval(checkAndPlayVideo, 1000);
// Add F2 key listener
document.addEventListener('keydown', function(e) {
if (e.key === 'F2') {
toggleModal();
}
});
}
if (document.readyState === 'complete' || document.readyState === 'interactive') {
init();
} else {
window.addEventListener('DOMContentLoaded', init);
}
})();
// 视频和音频倍速播放
function setMediaSpeed(speed) {
const mediaElements = document.querySelectorAll('video, audio');
mediaElements.forEach(media => {
media.playbackRate = speed;
});
}
// 文档和图书自动完成
function autoCompleteDocument() {
// 这里需要根据具体平台的页面结构来实现文档和图书的自动完成
// 例如,假设文档内容在一个类名为 'document-content' 的元素中
const documentContent = document.querySelector('.document-content');
if (documentContent) {
// 模拟用户滚动或点击操作
documentContent.scrollIntoView();
}
}
// 字体解密
function decryptFont() {
// 这里需要根据具体平台的页面结构来实现字体解密
// 例如,假设字体加密的元素在一个类名为 'encrypted-font' 的元素中
const encryptedFont = document.querySelector('.encrypted-font');
if (encryptedFont) {
// 解密逻辑
encryptedFont.style.fontFamily = 'Arial';
}
}
// 自动切换任务点
function autoSwitchTask() {
// 这里需要根据具体平台的页面结构来实现任务点的自动切换
// 例如,假设任务点按钮在一个类名为 'task-button' 的按钮中
const taskButton = document.querySelector('.task-button');
if (taskButton) {
taskButton.click();
}
}
// 自动登录
function autoLogin() {
// 这里需要根据具体平台的页面结构来实现自动登录
// 例如,假设用户名和密码输入框分别在一个类名为 'username-input' 和 'password-input' 的输入框中
const usernameInput = document.querySelector('.username-input');
const passwordInput = document.querySelector('.password-input');
const loginButton = document.querySelector('.login-button');
if (usernameInput && passwordInput && loginButton) {
usernameInput.value = 'your_username';
passwordInput.value = 'your_password';
loginButton.click();
}
}
// 根据平台执行相应的自动化任务
function executeTasks(platform) {
const question = getQuestionContent();
const answer = getAnswerFromLocalBank(platform, question);
if (answer) {
fillAnswer(answer);
autoSubmit();
} else {
console.log('未找到答案');
}
setMediaSpeed(2); // 设置视频和音频倍速为2倍
autoCompleteDocument();
decryptFont();
autoSwitchTask();
autoLogin();
}
// 主函数
function main() {
const platform = detectPlatform();
console.log(`当前平台: ${platform}`);
executeTasks(platform);
}
// 执行主函数
main();
})();