西北师范大学中小学教师远程培训网刷课脚本
西北师范大学中小学教师远程培训网
# 脚本介绍
该油猴脚本用于 西北师范大学中小学教师远程培训网 的辅助学习,使用JavaScript编写,适配网址:https://nwnu.edueva.org/
脚本功能如下:
- 视频自动播放 自动检测并恢复视频播放
- 倍速播放支持 支持1.5倍-3倍速播放调节
- 防检测机制 定时模拟用户操作,防止平台检测
- 自动答题功能 自动识别并处理弹窗答题
- 自动切换课程 课程完成后自动跳转下一课
脚本安装地址:
暂时下架
如果不会安装脚本,请按照下面安装教程来操作。
# 代学服务
提示
如需代学,请联系客服,支持闲鱼交易。

微信联系:yizhituziang

QQ联系:2422270452
- img: /img/weixin.jpg
name: 微信联系:yizhituziang
- img: /img/qq.jpg
name: QQ联系:2422270452
# 安装教程
# 1.安装浏览器扩展插件
首先需要给我们的浏览器安装上脚本猫插件,这是运行所有用户脚本的基础,如果浏览器已经安装过了脚本猫或者油猴插件,那么可以跳过这一步。推荐使用edge浏览器,安装插件更方便。
浏览器打开网址:https://docs.scriptcat.org/ (opens new window)
这里用edge浏览器作为示范,点击 "添加到Edge浏览器"

接着点击 "获取"

在右上角弹出的窗口,点击 "添加扩展"

等待几秒钟,会提示已经安装好脚本猫插件了。

# 2.安装刷课脚本
打开脚本安装地址后,在页面点击 "安装脚本" 按钮,接着在弹出的窗口点击 "安装" ,之后就会提示"安装成功"。
# 3.体验脚本功能
安装脚本后,需要重新进入学习站点,如果之前已经打开课程学习页面,那么需要刷新页面后脚本才会生效。
# 核心代码
// 西北师范大学中小学教师远程培训网辅助脚本
(function() {
'use strict';
const SETTINGS = {
enableAutoPlay: true,
playbackSpeed: 2.0,
autoMuteVideo: true,
enableAutoAnswer: true,
enableAutoNext: true,
enableAntiDetection: true,
checkFrequency: 2000,
activityInterval: 14000
};
function printLog(msg) {
console.log(`[西北师大远程培训] ${msg}`);
}
function getVideoElement() {
const videoSelectors = [
'video',
'#videoElement video',
'.video-box video',
'.player video',
'.video-container video',
'.course-video video',
'[id*="video"] video',
'[class*="video"] video'
];
for (let i = 0; i < videoSelectors.length; i++) {
const el = document.querySelector(videoSelectors[i]);
if (el) {
printLog(`找到视频元素: ${videoSelectors[i]}`);
return el;
}
}
return null;
}
function configureVideo(video) {
if (!video) return;
if (SETTINGS.autoMuteVideo && !video.muted) {
video.muted = true;
printLog('视频已设置为静音');
}
if (video.playbackRate !== SETTINGS.playbackSpeed) {
video.playbackRate = SETTINGS.playbackSpeed;
printLog(`播放速度已调整为 ${SETTINGS.playbackSpeed}x`);
}
video.addEventListener('ratechange', function() {
if (video.playbackRate !== SETTINGS.playbackSpeed) {
video.playbackRate = SETTINGS.playbackSpeed;
}
});
}
function autoPlayVideo(video) {
if (!video) return;
if (video.paused && !video.ended) {
printLog('检测到视频暂停,尝试自动播放');
video.play().then(() => {
printLog('视频播放成功');
}).catch(err => {
printLog('自动播放失败,尝试点击播放按钮');
clickPlayButton();
});
}
}
function clickPlayButton() {
const buttonSelectors = [
'.play-button',
'.btn-play',
'.play-btn',
'.vjs-play-control',
'.video-play-btn',
'#playButton',
'[class*="play"]',
'button[title="播放"]',
'button[aria-label*="播放"]'
];
for (const selector of buttonSelectors) {
const btn = document.querySelector(selector);
if (btn && btn.offsetParent !== null) {
printLog(`点击播放按钮: ${selector}`);
btn.click();
break;
}
}
}
function handleQuizPopup() {
if (!SETTINGS.enableAutoAnswer) return;
const popupSelectors = [
'.quiz-container',
'.exam-popup',
'.question-modal',
'.answer-box',
'.test-dialog',
'[class*="quiz"]',
'[class*="exam"]',
'[class*="question"]'
];
let quizPopup = null;
for (const selector of popupSelectors) {
const el = document.querySelector(selector);
if (el && !el.hidden && el.offsetParent !== null) {
quizPopup = el;
printLog(`检测到答题弹窗: ${selector}`);
break;
}
}
if (!quizPopup) return;
const answerSelectors = [
'input[type="radio"]',
'input[type="checkbox"]',
'.option',
'.answer-option',
'.choice-item',
'[class*="option"]',
'[class*="answer"]'
];
let answerClicked = false;
for (const selector of answerSelectors) {
const answers = quizPopup.querySelectorAll(selector);
if (answers.length > 0) {
for (let i = 0; i < Math.min(3, answers.length); i++) {
if (answers[i]) {
answers[i].click();
}
}
printLog('已选择答案');
answerClicked = true;
break;
}
}
if (answerClicked) {
setTimeout(() => {
const submitSelectors = [
'.submit-btn',
'.confirm-btn',
'.btn-submit',
'.btn-confirm',
'button:contains("提交")',
'button:contains("确定")',
'[class*="submit"]',
'[class*="confirm"]'
];
for (const selector of submitSelectors) {
const btn = quizPopup.querySelector(selector);
if (btn) {
btn.click();
printLog('已提交答案');
break;
}
}
}, 1100);
}
}
function autoSwitchNextLesson() {
if (!SETTINGS.enableAutoNext) return;
const video = getVideoElement();
if (!video || !video.ended) return;
printLog('课程播放完毕,准备切换至下一课');
const nextBtnSelectors = [
'.next-lesson',
'.next-chapter',
'.btn-next',
'.next-btn',
'.chapter-next',
'a[title*="下一课"]',
'a[title*="下一讲"]',
'[class*="next"]'
];
for (const selector of nextBtnSelectors) {
const btn = document.querySelector(selector);
if (btn && btn.offsetParent !== null) {
btn.click();
printLog('已点击下一课按钮');
break;
}
}
}
function simulateUserActions() {
if (!SETTINGS.enableAntiDetection) return;
const xPos = Math.random() * window.innerWidth;
const yPos = Math.random() * window.innerHeight;
const mouseMoveEvent = new MouseEvent('mousemove', {
view: window,
bubbles: true,
cancelable: true,
clientX: xPos,
clientY: yPos
});
document.dispatchEvent(mouseMoveEvent);
const keyDownEvent = new KeyboardEvent('keydown', {
key: 'Alt',
bubbles: true
});
document.dispatchEvent(keyDownEvent);
if (Math.random() > 0.65) {
window.scrollBy(0, Math.random() > 0.5 ? 15 : -15);
}
printLog('已模拟用户操作');
}
function mainExecution() {
const video = getVideoElement();
if (video) {
configureVideo(video);
autoPlayVideo(video);
autoSwitchNextLesson();
}
handleQuizPopup();
}
function initializeScript() {
printLog('西北师范大学中小学教师远程培训网辅助脚本已启动');
setInterval(mainExecution, SETTINGS.checkFrequency);
if (SETTINGS.enableAntiDetection) {
setInterval(simulateUserActions, SETTINGS.activityInterval);
}
window.addEventListener('load', () => {
printLog('页面完全加载');
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initializeScript);
} else {
initializeScript();
}
})();