南京市专业技术人员继续教育刷课脚本
南京市专业技术人员继续教育
# 脚本介绍
该油猴脚本用于 南京市专业技术人员继续教育 的辅助看课,使用JavaScript编写,适配网址:http://rsj.nanjing.gov.cn/
脚本功能如下:
- 自动播放:页面加载后自动点击播放按钮。
- 静音播放:自动将视频设置为静音,避免打扰。
- 定时刷新:每隔一段时间(如25分钟)自动刷新页面,以模拟用户持续学习的行为,防止系统判定为挂机。
- 自动切换课程:当一个课程学习完毕后,自动寻找并点击下一个未完成的课程。
脚本安装地址:
暂时下架
如果不会安装脚本,请按照下面安装教程来操作。
# 代学服务
提示
如需代学,请联系客服,支持闲鱼交易。

微信联系: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.体验脚本功能
安装脚本后,需要重新进入学习站点,如果之前已经打开课程学习页面,那么需要刷新页面后脚本才会生效。
# 核心代码
// ==UserScript==
// @name 南京市专业技术人员继续教育辅助脚本
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 自动播放、静音、定时刷新、跳过广告、自动切换课程,辅助完成南京市专业技术人员继续教育学习。
// @author AI Assistant
// @match http://rsj.nanjing.gov.cn/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=nanjing.gov.cn
// @grant none
// @run-at document-idle
// ==/UserScript==
(function() {
'use strict';
// --- 脚本配置区 ---
const REFRESH_INTERVAL = 25 * 60 * 1000; // 定时刷新间隔 (毫秒),例如 25分钟 = 25 * 60 * 1000
const CLICK_DELAY = 1000; // 点击操作的延迟时间 (毫秒)
const CHECK_INTERVAL = 5000; // 检查广告和播放状态的间隔 (毫秒)
console.log("南京市继续教育辅助脚本已启动!");
// --- 核心功能实现 ---
/**
* 1. 自动播放和静音
* 尝试找到视频播放区域并执行播放和静音操作。
*/
function autoPlayAndMute() {
// 尝试找到 video 标签
const video = document.querySelector('video');
if (video) {
if (video.paused) {
video.play().catch(e => console.log("视频播放失败:", e));
console.log("已尝试自动播放视频。");
}
if (!video.muted) {
video.muted = true;
console.log("已自动静音。");
}
return;
}
// 如果找不到 video 标签,尝试寻找常见的播放按钮文本或ID
const playButtonTexts = ['播放', '开始学习', '继续学习'];
const playButtonIds = ['playBtn', 'startButton', 'btnPlay'];
for (const text of playButtonTexts) {
const buttons = document.querySelectorAll('button, a');
for (const btn of buttons) {
if (btn.innerText.trim() === text) {
btn.click();
console.log(`已点击包含文本“${text}”的播放按钮。`);
setTimeout(() => {
const videoAfterClick = document.querySelector('video');
if (videoAfterClick) videoAfterClick.muted = true;
}, CLICK_DELAY * 2);
return;
}
}
}
for (const id of playButtonIds) {
const btn = document.getElementById(id);
if (btn) {
btn.click();
console.log(`已点击ID为“${id}”的播放按钮。`);
setTimeout(() => {
const videoAfterClick = document.querySelector('video');
if (videoAfterClick) videoAfterClick.muted = true;
}, CLICK_DELAY * 2);
return;
}
}
}
/**
* 2. 定时刷新页面
* 模拟用户活跃,防止被系统踢下线。
*/
function setupAutoRefresh() {
console.log(`将在 ${REFRESH_INTERVAL / 60000} 分钟后自动刷新页面...`);
setTimeout(() => {
console.log("时间到,正在刷新页面以维持学习状态...");
window.location.reload();
}, REFRESH_INTERVAL);
}
/**
* 3. 跳过广告
* 检查页面上是否出现了“跳过广告”之类的按钮。
*/
function skipAd() {
const adSkipButtonTexts = ['跳过广告', '关闭广告', 'Skip Ad', 'Close Ad'];
const buttons = document.querySelectorAll('button, a, div'); // 广告按钮可能是 div
for (const btn of buttons) {
if (adSkipButtonTexts.some(text => btn.innerText.includes(text))) {
btn.click();
console.log("检测到广告,已自动跳过。");
return true;
}
}
return false;
}
/**
* 4. 自动切换课程
* 当当前视频播放结束后,自动查找并点击下一个课程。
*/
function switchToNextCourse() {
// 首先检查当前视频是否播放结束
const video = document.querySelector('video');
if (!video || !video.ended) {
return; // 如果视频不存在或未播放完,则不执行切换
}
console.log("当前课程学习完毕,正在寻找下一个课程...");
// 寻找下一个课程的链接。这需要根据网站的实际HTML结构来调整。
// 假设未完成的课程有特定的class,例如 'course-item' 和 'status-unfinished'
const nextCourseSelectors = [
'.course-list .course-item:not(.completed):first-child a', // 课程列表中第一个未完成的课程
'.lesson-list .lesson-item.status-unfinished a', // 课时列表中第一个未完成的课时
'a:contains("开始学习"), a:contains("继续学习")', // 包含特定文本的链接
'.next-course-btn' // 下一课按钮
];
for (const selector of nextCourseSelectors) {
// 注意: :contains() 不是标准CSS选择器,这里仅作为示例。实际使用时可能需要用JS判断innerText
const links = document.querySelectorAll(selector);
if (links.length > 0) {
// 优先选择在视口内或列表顶部的课程
const nextCourseLink = links[0];
nextCourseLink.click();
console.log(`已找到并点击下一个课程: ${nextCourseLink.innerText.trim()}`);
return;
}
}
console.log("未找到下一个可学习的课程。脚本将停止。");
clearInterval(checkIntervalId); // 清除检查循环
}
// --- 脚本主逻辑 ---
// 立即执行一次自动播放
autoPlayAndMute();
// 设置定时刷新
setupAutoRefresh();
// 设置一个循环定时器,持续检查广告和播放状态
const checkIntervalId = setInterval(() => {
if (!skipAd()) { // 如果没有跳过广告
autoPlayAndMute(); // 则尝试播放视频(防止视频意外暂停)
}
switchToNextCourse(); // 检查是否需要切换到下一课
}, CHECK_INTERVAL);
})();