北京市专业技术人员公需科目刷课脚本
北京市专业技术人员公需科目
# 脚本介绍
该油猴脚本用于 北京市专业技术人员公需科目 的辅助看课,使用JavaScript编写,适配网址:https://bjjxjy.ctonline.org.cn/
脚本功能如下:
- 页面加载完成后自动播放视频,无需手动点击「开始学习」。
- 自动设置视频合规倍速播放(默认2倍,可自定义,避免倍速过高触发平台风控)。
- 视频默认静音播放,避免打扰用户日常办公、浏览。
- 自动保持页面活跃状态,防止浏览器最小化、页面失焦后视频被暂停(规避平台活跃度检测)。
- 检测到视频播放进度100%后,自动跳转下一课时并继续播放(无需手动切换)。
- 简易处理随堂暂停弹窗(如「确认继续学习」弹窗),自动点击确认按钮恢复播放。
脚本安装地址:
暂时下架
如果不会安装脚本,请按照下面安装教程来操作。
# 代学服务
提示
如需代学,请联系客服,支持闲鱼交易。

微信联系: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 https://github.com/
// @version 1.0.0
// @description 自动播放、倍速、静音、自动切课、保持页面活跃,辅助完成公需科目看课
// @author YourName
// @match https://bjjxjy.ctonline.org.cn/*
// @grant none
// @run-at document-idle
// ==/UserScript==
(function() {
'use strict';
// ========== 配置项(可根据需求修改) ==========
const PLAYBACK_SPEED = 2; // 播放倍速(建议1-2倍,过高可能被平台限制)
const CHECK_INTERVAL = 3000; // 功能检测间隔(毫秒),默认3秒
// ==============================================
/**
* 1. 核心:获取视频元素
* 查找页面中的video标签,兼容平台自定义视频容器
*/
function getVideoElement() {
// 优先查找原生video标签
let video = document.querySelector('video');
if (!video) {
// 兼容平台可能的自定义视频容器(根据页面结构补充选择器)
video = document.querySelector('iframe video, .video-container video, #player video');
}
return video;
}
/**
* 2. 自动播放+倍速+静音配置
*/
function setupVideoConfig() {
const video = getVideoElement();
if (!video) return;
// 自动播放(处理平台可能的播放限制)
if (video.paused) {
video.play().catch(err => {
console.log('自动播放触发限制,尝试模拟点击播放按钮', err);
// 兼容平台自定义播放按钮(点击页面中常见的播放按钮文本/图标)
const playBtn = document.querySelector('.play-btn, [class*="start-learn"], [onclick*="play"]');
playBtn && playBtn.click();
});
}
// 设置倍速
if (video.playbackRate !== PLAYBACK_SPEED) {
video.playbackRate = PLAYBACK_SPEED;
}
// 设置静音
if (!video.muted) {
video.muted = true;
}
}
/**
* 3. 保持页面活跃,规避平台失焦检测
*/
function keepPageActive() {
// 定时修改页面标题(轻微活跃操作,不影响用户使用)
setInterval(() => {
document.title = document.title.includes('[正在学习]')
? '北京市专业技术人员公需科目'
: '北京市专业技术人员公需科目 [正在学习]';
}, 60000);
// 模拟页面鼠标活动(避免平台检测到无操作暂停)
setInterval(() => {
const event = new MouseEvent('mousemove', {
bubbles: true,
cancelable: true,
clientX: 100,
clientY: 100
});
document.dispatchEvent(event);
}, 30000);
}
/**
* 4. 自动关闭随堂弹窗,恢复播放
*/
function closePopupAndResumePlay() {
// 匹配常见弹窗确认按钮(可根据平台实际弹窗补充选择器)
const confirmBtns = [
'.confirm-btn', '.sure-btn', '[class*="confirm"]',
'[class*="close"]', '[onclick*="confirm"]', 'button:contains("确认")'
];
confirmBtns.forEach(selector => {
const btn = document.querySelector(selector);
if (btn && btn.offsetParent) { // 只处理可见弹窗
btn.click();
console.log('已关闭随堂弹窗,恢复播放');
// 弹窗关闭后重新触发视频配置
setTimeout(setupVideoConfig, 1000);
}
});
}
/**
* 5. 检测进度100%,自动切换下一课时
*/
function autoSwitchToNextLesson() {
const video = getVideoElement();
if (!video || video.duration === 0) return;
// 检测视频是否播放完成(进度≥99.9%,避免浮点精度问题)
const progress = (video.currentTime / video.duration) * 100;
if (progress >= 99.9) {
console.log('当前课时学习完成,准备切换下一课时');
// 查找下一课时按钮(可根据平台页面结构补充选择器)
const nextLessonBtns = [
'.next-lesson', '[class*="next"]', '[href*="next"]',
'.lesson-list .active + li a', '[class*="continue"]'
];
nextLessonBtns.forEach(selector => {
const nextBtn = document.querySelector(selector);
if (nextBtn && nextBtn.offsetParent) {
nextBtn.click();
// 跳转后延迟触发视频配置,等待新页面加载
setTimeout(setupVideoConfig, 5000);
return;
}
});
}
}
/**
* 6. 主调度函数,定时执行所有功能
*/
function mainScheduler() {
// 初始化:页面加载后先执行一次
setupVideoConfig();
keepPageActive();
// 定时轮询,确保功能持续生效(应对页面动态加载内容)
setInterval(() => {
setupVideoConfig();
closePopupAndResumePlay();
autoSwitchToNextLesson();
}, CHECK_INTERVAL);
}
// 启动脚本
window.addEventListener('load', mainScheduler);
})();