基于python实现网络课程秒刷

在平时的工作生活中,我们总是会遇到一些需要网络课程的学习,最常见的就像驾校的网络课程学习,党员课程学习,工作技能网络学习等。如下图所示,这是公司内部的一个党员学习互动平台,该平台每个月都有一定的学习任务。

        该平台学习方式有两种,视频学习与文档学习。而对于我们“懒惰”的程序员而言,这种耗时的操作总想省去,于是乎有了脚本秒刷课程的想法。下面分享下秒刷过程。

        首先就是需要破解平台的登录。

        通过fiddler抓取登录时的数据包,我们可以知道登录密码是经过加密的,因此第一步就是要知道加密方式,并通过python模拟该过程。

        在浏览器中通过F12=>Sources=>Page底下发现一个js脚本,该脚本包含了加密方式。如下图所示:

        通过该脚本,我们可以知道该加密方式为RSA加密,且可以得到RSA公钥中的n和e的值,同时,通过代码可以知道,该加密还有带上时间戳,因此可以在python下的模拟加密过程为:

        破解了登录后,就可以能很容易的通过python登录成功。如下图所示:

        在登录成功返回的数据中,我们可以得到一个AccessToken字段,该字段在后面的每个请求中都是必须带上的参数。

        接着就是获取个人学习任务,该过程比较容易,只要通过抓包就能很轻易的模拟出来。获取个人学习任务后,需要过滤出未学习完成的月份任务。通过返回的json数据可以得到相应的月份。如下图所示,1为100%完成,0为还未开始学习,通过程序过滤出FinishPencent不为1的月份即可。

        在每个月份的学习任务中还细分多个专题系列,每个专题系列里面还有不同章节,不同章节下有对应的视频或者文档。如下图:

        通过对视频播放抓包可以得到下面信息,如图所示:

        初步分析可以知道每个字段的含义和由来,其中videoId为视频ID,vs为视频播放进度,record为当前视频播放进度的一个记录信息,该字段由服务端返回;terminalType与version为固定的,无需深究;accessToken为登录时得到的字段。那么现在需要分析的是vs是如何组成的。

        通过对比与研究网页源码发现,vs="v" + 视频id+ "u" + 课程id+ "i" + 播放的开始时间+ "c" + 播放的结束时间。其中播放的结束时间需要注意的是,原本的一个196秒视频,但是在这边为1969,多出来的一位是需要计算的,该计算方式为,视频id编号+课程id编号+视频时长,取该计算结果的最后一位,即177991+24902+196为9,那么结束时间就是1969。因此,我们只要模拟这个过程,向服务器发送每个视频的播放结束时间,服务器就会认为我们完成该视频的学习,便会把我们学习进度直接改为100%。

        到此,视频的学习基本算搞定了,文档的学习流程基本与视频一致,这里不做详细介绍,下面分享整个脚本的代码。

欢迎关注我个人的公众号

 

<think>好的,我需要帮用户找到适合学习通大学生安全教育程的自动化脚本。首先,用户提到了参考内容中的引用[1]和[2],里面提到了使用Python脚本结合雷电模拟器、Selenium和PyAutoGUI的方法。 首先,我得确认用户的需求:他们需要一个自动化工具来安全教育程。这类程通常包括视频观看、章节测试等,所以脚本需要能自动播放视频、切换页面,可能还要处理弹题和测验。 根据引用[1],使用雷电模拟器时可能会遇到黑屏或驱动问题,需要确保用户知道如何解决这些问题,比如更新驱动或关闭360安全软件。同时,学习通版本不兼容会导致闪退,所以建议安装最新版雷电模拟器和学习通应用。 引用[2]提到使用Selenium和PyAutoGUI的组合。Selenium适合处理页元素,但学习通可能用了动态加载的内容,这时候PyAutoGUI通过图像识别或坐标点击会更可靠。需要指导用户如何结合这两个库,比如用Selenium导航到程页面,用PyAutoGUI点击播放按钮。 接下来,我需要整理一个基本的脚本框架,可能包括启动模拟器、登录学习通、进入程、循环检查视频进度、处理测验等步骤。同时,提醒用户注意道德和法律问题,确保学校允许自动化工具的使用,避免被封号。 另外,用户可能需要了解如何定位元素或坐标,可能需要手动调整点击位置,或者使用图像识别库如pyautogui.locateOnScreen来识别按钮。还要处理可能的异常,比如络延迟、弹窗提示,脚本需要有重试机制。 最后,生成相关问题,帮助用户进一步优化脚本或解决常见问题,比如性能分析、优化方法、应用场景等。确保回答结构清晰,步骤详细,用户能一步步实现自动化。</think>### 学习通安全教育程自动化脚本实现方案 #### 一、基础框架搭建 基于引用[1][2]中提到的雷电模拟器+Python方案,推荐以下实现步骤: 1. **环境配置** - 安装雷电模拟器9(最新版避免闪退)[^1] - 安装Python 3.8+环境 - 安装依赖库: ```python pip install selenium pyautogui pillow opencv-python ``` 2. **核心代码示例** ```python from selenium import webdriver import pyautogui import time # 启动学习通APP(需提前配置雷电adb路径) driver = webdriver.Remote('http://localhost:5555/wd/hub', desired_capabilities={'platformName': 'Android'}) def auto_play(): # 定位安全教育程入口 driver.find_element_by_xpath('//*[contains(text(),"安全教育")]').click() while True: # 使用PyAutoGUI检测播放按钮状态 play_btn = pyautogui.locateOnScreen('play_button.png') if play_btn: pyautogui.click(play_btn) time.sleep(10) # 每10检测进度 # 处理弹题检测 if pyautogui.locateOnScreen('quiz_popup.png'): handle_quiz() # 章节切换检测 next_chapter = pyautogui.locateOnScreen('next_chapter.png') if next_chapter: pyautogui.click(next_chapter) def handle_quiz(): # 使用OCR识别题目+题库匹配(需自建题库) # 示例直接选择第一个选项 pyautogui.click(pyautogui.center(pyautogui.locateOnScreen('option1.png'))) ``` #### 二、关键技术要点 1. **元素定位混合方案** - 静态元素使用Selenium定位(如程入口) - 动态加载内容采用PyAutoGUI图像识别[^2] - 坐标校准建议: ```python pyautogui.position() # 实时获取鼠标坐标调试 ``` 2. **防检测策略** - 随机化操作间隔(0.5-2) - 模拟人类鼠标移动轨迹: ```python pyautogui.moveTo(x, y, duration=random.uniform(0.3, 1.2)) ``` 3. **异常处理机制** ```python try: driver.find_element_by_xpath('//*[@text="继续播放"]').click() except NoSuchElementException: pass ``` #### 三、注意事项 1. **法律与道德规范** - 需确认学校允许自动化学习工具使用 - 禁止考试/测验自动化(仅建议用于视频观看) 2. **环境优化建议** - 关闭360等安全软件避免冲突[^1] - 更新显卡驱动防止黑屏[^1] - 模拟器分辨率建议设置为720*1280 相关问题
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值