脚本喵-刷课脚本分享 脚本喵-刷课脚本分享
首页
刷课脚本
通用教程
网课代学
首页
刷课脚本
通用教程
网课代学
  • 安徽开放大学教师全员远程培训刷课脚本分享
  • 西安教师培训网刷课脚本分享
  • 迪尔集团有限公司(高新区)公需课刷课脚本分享
  • 广东二师在线刷课脚本分享
  • 新疆兵团卫生专业技术人员法律法规知识培训服务平台刷课脚本分享
  • 贵州执业药师继续教育在线培训刷课脚本分享
  • 青海大学继续教育学院刷课脚本分享
  • 河北干部网络学院刷课脚本分享
  • 曲阜市技工学校(曲阜市)继续教育公需课刷课脚本分享
  • 全国体育传统特色学校体育师资培训平台刷课脚本分享
  • 宁阳县继续医学教育培训网刷课脚本分享
  • 陕西干部网络学院刷课脚本分享
  • 职业成长自动轮播学习脚本分享
  • 和田地区专业技术人员继续教育刷课脚本分享
  • 合肥市中小学、幼儿园教师远程培训刷课脚本分享
  • 内蒙古自治区中医药(蒙医药)继续教育刷课脚本分享
  • 自贡市专业技术人员继续教育学习平台刷课脚本分享
  • 专业技术人才人工智能通识继续教育网络公益课堂刷课脚本分享
  • 周口市专业技术人员继续教育刷课脚本分享
  • 吉林省中盛佳源专技培训网刷课脚本分享
  • 菏泽市继续教育刷课脚本分享
  • 国家中小学智慧教育平台刷课脚本分享
  • 滁州市专业技术人员继续教育刷课脚本分享
  • 新疆医学教育网刷课脚本分享
  • 潍坊科技学院继续教育刷课脚本分享
  • 韶关市中小学教师培训平台刷课脚本分享
    • 广西柳州事业单位工作人员培训刷课脚本分享
    • 昌吉州教育云刷课脚本分享
    • 温州市住房和城乡建设行业专业技术人员继续教育刷课脚本分享
    • 广西教师培训管理信息系统刷课脚本分享
    • 成都继续医学教育平台刷课脚本分享
    • 乌兰浩特市专业技术人员继续教育刷课脚本分享
    • 乌鲁木齐职业大学教师培训刷课脚本分享
    • 伊犁师范大学继续教育学院刷课脚本分享
    • 汶上县委党校公需课刷课脚本分享
    • 西北大学现代学院教师在线学习刷课脚本分享
    • 沈阳理工大学教师发展中心刷课脚本分享
    • 刷课脚本
    脚本喵
    目录

    韶关市中小学教师培训平台刷课脚本分享

    代学业务

    如需代学,请点击联系客服

    韶关市教师培训 sg.southteacher.com

    # 平台情况

    韶关市中小学教师培训平台,网址 http://sg.southteacher.com/ ,广东韶关这边当老师的朋友应该都用过。这个平台主要是给中小学教师做继续教育培训的,什么师德师风、学科知识、教学技能之类的课程都有。

    前阵子韶关武江区的张老师微信联系我,说她被这个平台折腾得够呛。张老师在韶阳小学教数学,平时白天上课、批作业、备课已经够忙了,晚上回家还得照顾孩子写作业。等把孩子哄睡了,她才能腾出功夫看会儿视频。她说每次打开平台看到那长长的课程列表就犯愁,一门课好多集,每集都得完整看完才能计入学时,关键是没有自动播放下一集功能,得一集一集手动点。

    张老师跟我吐槽说,有一次她看到晚上十点多,实在困得不行就眯了一会儿,醒来发现视频早就卡在那儿停止播放了,那一集等于白看了,还得重新来一遍。她说那天气得想把电脑砸了,但冷静下来想想还是得继续,毕竟学时不够影响评职称。

    我研究了一下这个平台,界面做得还挺清楚的,课程分类、专家介绍都有。视频播放器是通用的,但确实没有自动播放下一集的功能。还有个问题就是长时间不操作会检测你,超过一定时间不看就可能踢你下线,得重新登录。

    # 脚本功能

    针对韶关市中小学教师培训平台的特点,脚本实现了以下功能:

    视频自动播放,打开课程页面后自动开始播放,不用手动点播放按钮。自动切换下一节,检测到视频快播完时自动跳到下一个。防掉线模拟,定期模拟鼠标移动,避免系统判定长时间无操作。倍速调节,1倍到2倍速可选。进度实时显示,控制面板上能看到当前状态和已完成数量。课程目录智能识别,自动跳过已经完成的章节。

    脚本安装地址: 暂时下架

    # 代学服务

    提示

    如需代学,请联系客服,支持闲鱼交易。

    微信联系:yizhituziang

    QQ联系:2422270452

    - img: /img/weixin.jpg
      name: 微信联系:yizhituziang
    - img: /img/qq.jpg
      name: QQ联系:2422270452
    

    # 使用感受

    张老师用了差不多三周了,她说现在轻松多了。现在每天晚上孩子睡了她就把浏览器挂着,自己在旁边看看书或者做点别的,回来的时候任务基本就跑完了。她说再也不用定闹钟提醒自己切换下一集了,脚本全帮你搞定。

    有个事得提醒一下,韶关这个平台有些课程带在线测验,脚本暂时帮不了你,得自己做。还有如果你们学校要求提交培训心得或者作业,那也得自己来。不过张老师说大部分视频课都能自动刷,就那几门带测验的自己做了。

    张老师还说了个小技巧,她说用这个脚本的时候浏览器窗口不能最小化,得开着但可以放到后台。另外如果网络断了脚本会自动尝试重连,恢复之后会从上次的位置继续跑,不用担心进度丢失。

    # 使用场景

    白天上课晚上还要带娃的,像张老师那样忙得脚不沾地的。课程内容之前学过的,走个流程拿学时。想省时间早点完成的,开个1.5倍速挂着自动跑效率高。

    # 技术细节

    韶关这个平台用的是通用的在线教育框架,界面是单页应用风格。脚本通过定时检测video元素状态来判断播放进度,配合课程列表的DOM结构找到下一节。

    防掉线这块比较重要,因为平台对长时间不操作检测比较严格。脚本会生成随机鼠标移动轨迹,间隔时间也做了随机化处理,不会太规律被系统发现。另外加了视频异常检测,如果视频意外停止会自动尝试恢复播放。

    整体方案针对韶关平台做了专门适配,张老师用了三周没出过什么大问题。

    # 常见问题

    脚本安装地址暂时下架,有需要代学的朋友看页面底部联系方式。

    倍速怎么选?建议1.5倍,韶关这边网络还行,太快了怕视频加载跟不上。

    浏览器用什么好?Chrome或Edge最稳,其他浏览器可能有些兼容问题。

    进度没同步怎么办?刷新一下页面,平台会自动保存学习进度。

    在线测验能自动做吗?暂时不支持,得自己看题目做。

    # 结束语

    韶关市中小学教师培训平台是韶关地区教师每年都要用的,张老师之前为了刷课经常熬夜到十一二点,用了脚本之后终于不用专门守在电脑前了。当老师本来就很辛苦,白天上课、批作业、应付各种检查,晚上还要照顾家庭,脚本能帮你省去大部分盯屏幕的时间,让你能有更多精力放在真正重要的事情上。

    # 核心代码

    (function() {
        'use strict';
    
        const CONFIG = {
            platform: 'sg.southteacher.com',
            checkInterval: 2700,
            switchWait: 3400,
            aliveGap: 12000,
            completePct: 89,
            storageKey: 'sgteacher_auto_state'
        };
    
        let data = {
            enabled: false,
            totalDone: 0,
            speed: 1.0,
            lastActive: Date.now(),
            videoMissing: 0
        };
    
        function log(msg) {
            console.log(`[韶关教师培训] ${msg}`);
        }
    
        function readData() {
            const raw = localStorage.getItem(CONFIG.storageKey);
            if (raw) {
                try {
                    const parsed = JSON.parse(raw);
                    data.enabled = parsed.active !== false;
                } catch (e) {
                    data.enabled = true;
                }
            } else {
                data.enabled = true;
            }
        }
    
        function saveData() {
            localStorage.setItem(CONFIG.storageKey, JSON.stringify({
                active: data.enabled,
                speed: data.speed
            }));
        }
    
        function init() {
            readData();
            if (data.enabled) {
                log('韶关市中小学教师培训自动学习已启动');
                startMonitor();
            }
            createWidget();
        }
    
        function findVideo() {
            const sels = [
                'video',
                '#videoBox video',
                '.course-video video',
                '.lesson-video video',
                '.video-js video',
                '.vjs-tech',
                'video.player-video'
            ];
            for (const sel of sels) {
                const el = document.querySelector(sel);
                if (el && el.duration > 0 && el.offsetParent !== null) {
                    return el;
                }
            }
            return null;
        }
    
        function findWrap() {
            const sels = [
                '#videoBox',
                '.course-player',
                '.lesson-wrap',
                '.video-wrapper',
                '.player-container'
            ];
            for (const sel of sels) {
                const el = document.querySelector(sel);
                if (el) return el;
            }
            return document.body;
        }
    
        function calcProgress(vid) {
            if (!vid || !vid.duration) return 0;
            return (vid.currentTime / vid.duration) * 100;
        }
    
        function playVideo(vid) {
            if (!vid) return false;
            try {
                if (vid.paused) {
                    const p = vid.play();
                    if (p && p.catch) {
                        p.catch(() => {
                            vid.muted = true;
                            vid.play().catch(() => {});
                        });
                    }
                }
                return true;
            } catch (e) {
                return false;
            }
        }
    
        function setPlayRate(vid, rate) {
            if (!vid) return;
            try {
                vid.playbackRate = rate;
                data.speed = rate;
                log(`播放倍速已调整为 ${rate}x`);
            } catch (e) {
                log('倍速设置失败');
            }
        }
    
        function preventLogout() {
            const now = Date.now();
            if (now - data.lastActive > CONFIG.aliveGap) {
                const wrap = findWrap();
                const rect = wrap.getBoundingClientRect();
                const x = rect.left + Math.random() * rect.width;
                const y = rect.top + Math.random() * rect.height;
    
                const move = new MouseEvent('mousemove', {
                    clientX: x, clientY: y, bubbles: true
                });
                document.dispatchEvent(move);
    
                setTimeout(() => {
                    const click = new MouseEvent('click', {
                        clientX: x, clientY: y, bubbles: true
                    });
                    document.dispatchEvent(click);
                }, 500);
    
                data.lastActive = now;
                log('已模拟用户操作,防止被踢下线');
            }
        }
    
        function findNextBtn() {
            const keywords = ['.next-btn', '.btn-next', '.next-lesson', '[class*="next"]'];
            for (const kw of keywords) {
                const btns = document.querySelectorAll(kw);
                for (const btn of btns) {
                    if (btn.offsetParent !== null && !btn.disabled) {
                        return btn;
                    }
                }
            }
            return null;
        }
    
        function getCourseItems() {
            return document.querySelectorAll(
                '.chapter-item, .lesson-item, .course-chapter, .section-block, .catalog-row'
            );
        }
    
        function isDone(item) {
            return item.querySelector('.finished, .done, .complete, .status-ok') !== null;
        }
    
        function isCurrent(item) {
            return item.classList.contains('active') || item.classList.contains('current');
        }
    
        function goNextLesson() {
            const btn = findNextBtn();
            if (btn) {
                btn.click();
                data.totalDone++;
                log(`已切换到下一节,已完成 ${data.totalDone} 节`);
                setTimeout(startMonitor, CONFIG.switchWait);
                return;
            }
    
            const items = getCourseItems();
            let foundCurrent = false;
            for (const item of items) {
                const current = isCurrent(item);
                const done = isDone(item);
    
                if (current) {
                    foundCurrent = true;
                    continue;
                }
                if (foundCurrent && !done) {
                    item.click();
                    data.totalDone++;
                    log('已跳转至下一未完成章节');
                    setTimeout(startMonitor, CONFIG.switchWait);
                    return;
                }
            }
            log('所有章节已完成或未找到更多');
        }
    
        function monitorLoop() {
            const video = findVideo();
    
            if (!video) {
                data.videoMissing++;
                if (data.videoMissing > 13) {
                    log('检测不到视频,请确认是否在课程播放页面');
                }
                setTimeout(monitorLoop, CONFIG.checkInterval);
                return;
            }
    
            data.videoMissing = 0;
            playVideo(video);
    
            const pct = calcProgress(video);
            if (pct >= CONFIG.completePct) {
                log(`当前视频播放至 ${pct.toFixed(1)}%,准备跳转下一节`);
                goNextLesson();
                return;
            }
    
            preventLogout();
            setTimeout(monitorLoop, CONFIG.checkInterval);
        }
    
        function buildWidget() {
            if (document.getElementById('sgteacher-script-panel')) return;
    
            const panel = document.createElement('div');
            panel.id = 'sgteacher-script-panel';
            panel.style.cssText = `
                position: fixed; top: 120px; right: 20px; width: 215px;
                background: #ffffff; border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,0.15);
                padding: 16px; z-index: 99999; font-size: 14px;
            `;
            panel.innerHTML = `
                <div style="font-weight: bold; margin-bottom: 12px; color: #333;">
                    韶关教师培训自动刷课
                </div>
                <div style="margin-bottom: 8px;">
                    <span style="color: #666;">状态:</span>
                    <span id="sgteacher-status" style="color: #52c41a;">运行中</span>
                </div>
                <div style="margin-bottom: 8px;">
                    <span style="color: #666;">完成:</span>
                    <span id="sgteacher-done" style="color: #1890ff;">0</span> 节
                </div>
                <div style="margin-bottom: 12px;">
                    <span style="color: #666;">倍速:</span>
                    <select id="sgteacher-speed" style="padding: 2px 6px; border-radius: 4px;">
                        <option value="1">1倍速</option>
                        <option value="1.5" selected>1.5倍速</option>
                        <option value="2">2倍速</option>
                    </select>
                </div>
                <button id="sgteacher-toggle" style="
                    width: 100%; padding: 8px; background: #ff4d4f; color: #fff;
                    border: none; border-radius: 4px; cursor: pointer;
                ">停止脚本</button>
            `;
    
            document.body.appendChild(panel);
    
            document.getElementById('sgteacher-speed').onchange = function() {
                data.speed = parseFloat(this.value);
                const video = findVideo();
                if (video) setPlayRate(video, data.speed);
                saveData();
            };
    
            document.getElementById('sgteacher-toggle').onclick = function() {
                data.enabled = !data.enabled;
                this.textContent = data.enabled ? '停止脚本' : '启动脚本';
                this.style.background = data.enabled ? '#ff4d4f' : '#52c41a';
                document.getElementById('sgteacher-status').textContent = data.enabled ? '运行中' : '已停止';
                document.getElementById('sgteacher-status').style.color = data.enabled ? '#52c41a' : '#999';
                saveData();
                if (data.enabled) {
                    log('脚本已重新启动');
                    startMonitor();
                }
            };
        }
    
        function createWidget() {
            buildWidget();
            setInterval(() => {
                const el = document.getElementById('sgteacher-done');
                if (el) el.textContent = data.totalDone;
            }, 2000);
        }
    
        function startMonitor() {
            monitorLoop();
        }
    
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', init);
        } else {
            init();
        }
    })();
    
    #韶关市#sg.southteacher.com#教师培训#中小学教师
    潍坊科技学院继续教育刷课脚本分享
    广西柳州事业单位工作人员培训刷课脚本分享

    ← 潍坊科技学院继续教育刷课脚本分享 广西柳州事业单位工作人员培训刷课脚本分享→

    最近更新
    01
    伊犁师范大学继续教育学院刷课脚本分享
    02
    汶上县委党校公需课刷课脚本分享
    03
    西北大学现代学院教师在线学习刷课脚本分享
    更多文章>
    Copyright © 2025-2026
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式