聊城市会计人员继续教育平台刷课脚本
聊城市会计人员继续教育平台
# 脚本介绍
该油猴脚本用于 聊城市会计人员继续教育平台 的辅助学习,使用JavaScript编写,适配网址:http://liaocheng.chinarx.com.cn/
脚本功能如下:
- 智能视频播放检测 实时监控视频播放状态,自动处理暂停、缓冲等问题
- 自适应倍速播放 默认2倍速,可根据课程限制自动调整(1.2倍-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.体验脚本功能
安装脚本后,需要重新进入学习站点,如果之前已经打开课程学习页面,那么需要刷新页面后脚本才会生效。
# 核心代码
// 聊城市会计人员继续教育平台辅助脚本配置
const config = {
autoPlay: true,
playbackRate: 2.0,
autoAnswer: true,
autoNext: true,
antiDetection: true,
checkInterval: 2000,
idleInterval: 15000
};
// 日志输出函数
function log(msg) {
console.log(`[聊城市会计辅助脚本] ${msg}`);
}
// 获取视频元素
function getVideoElement() {
const selectors = [
'video',
'.video-player video',
'#video-player video',
'.player-container video'
];
for (const sel of selectors) {
const video = document.querySelector(sel);
if (video) return video;
}
return null;
}
// 设置播放倍速
function setPlaybackRate(rate) {
const video = getVideoElement();
if (!video) return;
video.playbackRate = rate;
log(`播放倍速已设置为 ${rate}x`);
video.addEventListener('ratechange', () => {
if (video.playbackRate !== rate) {
video.playbackRate = rate;
}
});
}
// 自动播放视频
function autoPlayVideo() {
const video = getVideoElement();
if (!video) return;
if (video.paused && !video.ended) {
video.play().then(() => {
log('视频已自动播放');
}).catch(err => {
log('自动播放失败,尝试点击播放按钮');
const playBtns = [
'.play-btn',
'.vjs-big-play-button',
'.start-btn',
'[class*="play"]',
'button[title="播放"]'
];
playBtns.forEach(sel => {
const btn = document.querySelector(sel);
if (btn) btn.click();
});
});
}
setPlaybackRate(config.playbackRate);
}
// 自动答题
function autoAnswer() {
if (!config.autoAnswer) return;
const modalSelectors = [
'.exam-modal',
'.question-box',
'.answer-dialog',
'.quiz-container',
'[class*="question"]',
'[class*="exam"]'
];
let modal = null;
for (const sel of modalSelectors) {
const el = document.querySelector(sel);
if (el && !el.hidden && el.offsetParent !== null) {
modal = el;
break;
}
}
if (modal) {
log('检测到答题弹窗');
const options = modal.querySelectorAll(
'input[type="radio"], input[type="checkbox"], .option-item, [class*="option"]'
);
if (options.length > 0) {
options[0].click();
log('已选择第一个选项');
}
setTimeout(() => {
const submitBtns = [
'.submit-btn',
'.confirm-btn',
'.btn-submit',
'button:contains("提交")',
'button:contains("确定")',
'[class*="submit"]'
];
for (const sel of submitBtns) {
const btn = modal.querySelector(sel);
if (btn) {
btn.click();
log('已提交答案');
break;
}
}
}, 800);
}
}
// 自动切换下一课
function autoNextLesson() {
if (!config.autoNext) return;
const video = getVideoElement();
if (!video || !video.ended) return;
log('课程播放完毕,准备切换下一课');
const nextBtnSelectors = [
'.next-lesson',
'.btn-next',
'.next-course',
'a[title*="下一课"]',
'.chapter-next',
'[class*="next"]'
];
for (const sel of nextBtnSelectors) {
const btn = document.querySelector(sel);
if (btn) {
btn.click();
log('已点击下一课按钮');
break;
}
}
}
// 模拟用户操作防止检测
function simulateUserActivity() {
if (!config.antiDetection) return;
const event = new MouseEvent('mousemove', {
view: window,
bubbles: true,
cancelable: true,
clientX: Math.random() * window.innerWidth,
clientY: Math.random() * window.innerHeight
});
document.dispatchEvent(event);
document.dispatchEvent(new KeyboardEvent('keydown', {
key: 'Shift',
bubbles: true
}));
log('已模拟用户活动');
}
// 主循环
function mainLoop() {
autoPlayVideo();
autoAnswer();
autoNextLesson();
}
// 初始化脚本
function init() {
log('脚本初始化中...');
setInterval(mainLoop, config.checkInterval);
if (config.antiDetection) {
setInterval(simulateUserActivity, config.idleInterval);
}
log('脚本初始化完成');
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}