破解学习通鼠标移出屏幕自动暂停视网课播放

海螺呀大家,最近用电脑刷学习通发现学习通真的太不做人了!,当你打开网课界面刷网课的时候,如果把鼠标移出浏览器窗口,视频就会自动暂停!

真是的,那我怎么写作业啊,该不会真让我看这些东西吧。。。

作为一个学习计算机的大学生,当然不能被这样的困难打倒,经过f12的一番搜寻,最终找到了解决办法!

第一步 按下f12(右键空白处选择检查)唤出开发者界面,如下:

在下边找到事件侦听器,然后稍微翻一下找到mouseout这个事件

展开后会发现以window开头的事件,点击删除就好。你说为什么你的打开只有一个而我的有两个?

其实这个课程有几个网课就会扔上去几个事件,这也真是有点无语了hhh

window开头的删除就好了,body的不用管,这样就可以实现挂机刷课了,不管是放后台还是最小化都可以用。


让我们欣赏一下学习通的js:

        createListenerWrap: function(p, j, m, l, i) {
            i = i || {};
            var n, o, k = function(s, q) {
                if (!o) {
                    n = ["if(!" + Ext.name + ") {return;}"];
                    if (i.buffer || i.delay || i.freezeEvent) {
                        if (i.freezeEvent) {
                            n.push("e = X.EventObject.setEvent(e);")
                        }
                        n.push("e = new X.EventObjectImpl(e, " + (i.freezeEvent ? "true" : "false") + ");")
                    } else {
                        n.push("e = X.EventObject.setEvent(e);")
                    }
                    if (i.delegate) {
                        n.push('var result, t = e.getTarget("' + (i.delegate + "").replace(d, "\\\\") + '", this);');
                        n.push("if(!t) {return;}")
                    } else {
                        n.push("var t = e.target, result;")
                    }
                    if (i.target) {
                        n.push("if(e.target !== options.target) {return;}")
                    }
                    if (i.stopEvent) {
                        n.push("e.stopEvent();")
                    } else {
                        if (i.preventDefault) {
                            n.push("e.preventDefault();")
                        }
                        if (i.stopPropagation) {
                            n.push("e.stopPropagation();")
                        }
                    }
                    if (i.normalized === false) {
                        n.push("e = e.browserEvent;")
                    }
                    if (i.buffer) {
                        n.push("(wrap.task && clearTimeout(wrap.task));");
                        n.push("wrap.task = setTimeout(function() {")
                    }
                    if (i.delay) {
                        n.push("wrap.tasks = wrap.tasks || [];");
                        n.push("wrap.tasks.push(setTimeout(function() {")
                    }
                    n.push("result = fn.call(scope || dom, e, t, options);");
                    if (i.single) {
                        n.push("evtMgr.removeListener(dom, ename, fn, scope);")
                    }
                    if (j !== "mousemove" && j !== "unload") {
                        n.push("if (evtMgr.idleEvent.listeners.length) {");
                        n.push("evtMgr.idleEvent.fire();");
                        n.push("}")
                    }
                    if (i.delay) {
                        n.push("}, " + i.delay + "));")
                    }
                    if (i.buffer) {
                        n.push("}, " + i.buffer + ");")
                    }
                    n.push("return result;");
                    o = Ext.cacheableFunctionFactory("e", "options", "fn", "scope", "ename", "dom", "wrap", "args", "X", "evtMgr", n.join("\n"))
                }
                return o.call(p, s, i, m, l, j, p, k, q, Ext, a)
            };
            return k
        },

是把,,,挺复杂的,反正好多我是看不懂,但是不难猜出来,如果鼠标超过了浏览器边框,freezeEvent则会生效,虽然没办法定位具体是哪里实现这个功能的,但大概是暂停了视频吧。

就这样解决了,,,大家也要好好复习期末!

<think>好的,我现在需要帮用户了解如何编写学习通脚本。首先,用户可能对编程有一定的基础,但可能不太清楚具体的实现步骤。我需要分步骤解释,确保他们能理解每个环节。 首先,得明确学习通是什么平台,它的刷脚本主要用来自动观看视频、完成测验等。接下来,用户可能需要知道实现的基本原理,比如自动化操作。常见的工具可能是Python,因为有很多库支持,比如Selenium。不过,用户可能也会关心其他方法,比如浏览器插件或者模拟请求。 然后,我需要考虑用户的需求。刷脚本的主要功能可能包括自动登录、跳转到程页面、播放视频、处理测验题目、模拟观看时间等。每个功能都需要详细说明,但也要注意避免鼓励不正当使用,所以得在回答中提到法律和道德问题,提醒用户遵守平台规则。 接下来,技术实现部分。用Python的话,Selenium可以模拟浏览器操作,比如打开网页、输入账号密码、点击按钮等。可能需要解释一下如何安装Selenium和对应的WebDriver。例如,安装命令是pip install selenium,然后下载对应浏览器的驱动,比如ChromeDriver。 然后,分步骤讲解脚本的大致结构。首先自动登录,找到用户名和密码的输入框,填充信息并提交。然后跳转到程页面,可能需要解析页面结构,找到程链接。接着处理视频播放,找到视频元素,触发播放,并模拟等待时间,防止被检测到。如果是测验,可能需要自动选择答案,这里可能涉及到解析题目和答案,但这一步比较复杂,可能简单带过。 另外,需要考虑反反爬虫机制。学习通可能有检测自动化脚本的措施,比如检测鼠标移动、请求频率等。可能需要加入随机等待时间,或者使用headless模式,但headless也可能被识别。这部分可能需要更高级的技巧,比如修改浏览器指纹,但难度较大,用户可能只需要基础方法。 然后,用户可能需要代码示例。给出一个简单的示例,展示如何使用Selenium登录和播放视频。但要注意代码只是示例,不鼓励实际使用。同时提醒用户,学习通可能会更新页面结构,导致脚本失效,需要维护。 还要提到其他方法,比如使用浏览器插件如Tampermonkey编写用户脚本,或者直接发送HTTP请求模拟操作。后者更高效,但需要分析网络请求,找到API接口,处理认证参数等,对新手来说可能较难。 最后,强调法律和道德问题,刷违反平台规定,可能被封号,甚至影响学业。建议用户正当使用,按时完成程。 总结整个思考过程,需要结构清晰,分步骤讲解实现方法,提供示例但附加警告,确保用户明白风险。同时,语言要简洁,避免技术术语过多,让不同基础的用户都能理解。</think>编写学习通脚本涉及技术实现与伦理问题,以下从技术角度进行客观分析,同时强调遵守平台规则的重要性。 --- ### 一、基本原理 脚本通过模拟用户操作实现自动化任务,例如: - **登录验证**:自动填充账号密码 - **程跳转**:解析网页结构定位程链接 - **视频播放**:触发播放并模拟观看时间 - **测验处理**:自动选择答案(需解析题目) --- ### 二、技术实现步骤(Python示例) #### 1. 环境准备 ```python pip install selenium webdriver-manager ``` #### 2. 基础脚本框架 ```python from selenium import webdriver from selenium.webdriver.common.by import By import time # 初始化浏览器 driver = webdriver.Chrome() driver.get("https://passport.chaoxing.com/") # 自动登录 driver.find_element(By.ID, "username").send_keys("你的账号") driver.find_element(By.ID, "password").send_keys("你的密码") driver.find_element(By.CLASS_NAME, "loginBtn").click() time.sleep(3) # 跳转到程页面 driver.get("https://mooc1.chaoxing.com/visit/courses") time.sleep(5) ``` --- ### 三、关键技术点 1. **元素定位** 使用XPath/CSS选择器定位播放按钮: ```python video_element = driver.find_element(By.XPATH, '//div[@class="video-icon"]') video_element.click() ``` 2. **时间模拟** 添加随机等待避免检测: ```python import random time.sleep(random.randint(5, 15)) ``` 3. **反爬应对** - 使用`headless`无头模式 - 修改`User-Agent`请求头 - 限制操作频率 --- ### 四、其他实现方式 1. **浏览器插件方案** 使用Tampermonkey编写用户脚本,通过DOM操作控制页面元素。 2. **协议级模拟** 直接调用学习通API接口(需逆向分析网络请求),例如: ```python import requests requests.post("https://api.chaoxing.com/video/heartbeat", data={ "courseId": "123", "videoDuration": "600", "currentTime": "600" }) ``` --- ### 五、风险与注意事项 1. **技术风险** - 页面结构频繁变动导致脚本失效 - IP被封禁或账号异常检测 2. **合规性问题** - 违反《学习通用户协议》第4.3条 - 可能触发学业诚信问题 3. **替代建议** - 使用平台提供的「倍速播放」合法功能 - 制定学习计划合理分配时间 --- 请严格遵守学校与平台规定,技术探索应限于合法合规场景。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值