完全机器模拟浏览器操作自动刷网课!不怕被封!!-----python基于selenium实现超星学习通刷视频网课

原谅我这个标题党,对叭起

最近没事觉得网课恶心人,“你们学计算机的,随便写个程序玩玩,很容易哒”------语出高数老师,于是我就“随便”写了个刷网课的程序,没什么nb算法,请各路大神指教

原谅我的个别函数名和变量名用了拼音,别喷我low呜呜呜(其实就是懒,打拼音顺手了,这是个坏习惯,大家别学我)

以上的都是废话

需要注意的是要安装一个浏览器驱动,去网上下载就好了,把地址添加在第四行那里,我代码里面的是谷歌浏览器,如果想要用其他的浏览器代码换成相应的就行

然后要自己在终端输入自己的账号、密码,还有登录时候的验证码(有条件的同学可以去“云打码“弄一个自动识别二维码的,也不用很多钱,贫穷大学生枯了,或者牛逼的大佬可以自己搞一个相应的机器学习模型来识别验证码)

其中大家要自己提供2次XPATH,第一个是在level_1st函数中,这个xpath是进入首页后选择的你要刷的那门课程的xpath

第二个在into_vedio_window函数中,是进入相应课程之后,想从哪个章节开始,“那个章节的xpath”,添加进去

然后电脑挂着就好了,出去玩或者上课他就自己放视频,也不用自己手动切换

贴上代码:

  1 from selenium import webdriver  # 导入库
  2 import time
  3
  4 browser = webdriver.Chrome(executable_path="")  # 双引号内添加浏览器驱动的地址
  5
  6 url = "http://passport2.hut.edu.cn/login?fid=&refer=http://i.mooc.hut.edu.cn"
  7 browser.get(url)
  8
  9
 10 def input_usename_and_password():
 11     inp=input("请输入账号:")
 12     inp_2=input("请输入密码:")
 13     inp_3=input("请输入验证码:")
 14     inp_3 = input("请输入验证码:")
 15     username = browser.find_element_by_id("unameId")
 16     password = browser.find_element_by_id("passwordId")
 17     verycode = browser.find_element_by_id("numcode")
 18     username.send_keys(inp)
 19     password.send_keys(inp_2)
 20     verycode.send_keys(inp_3)
 21     sbm = browser.find_element_by_class_name("zl_btn_right")
 22     time.sleep(1)
 23     sbm.click()
 24
 25
 26 # 一级页面跳转,进入首页,开始选择课程
 27 def level_1st():
 28     browser.switch_to.frame("frame_content")
 29     # 进入首页,开始选择课程
 30     time.sleep(1)
 31     #引号内添加要刷的相应那门课程的xpath
 32     c_click = browser.find_element_by_xpath("")
 33     c_click.click()
 34
 35     # li_click = browser.find_element_by_xpath("")
 36     # browser.execute_script("window.scrollT0(0,3000)")
 37     # browser.back()#向后退 前进是forward()
 38     time.sleep(1)
 39     browser.switch_to.window(browser.window_handles[-1])
 40
 41
 42 # 判断是否有通知
 43 def if_tongzhi():
 44     time.sleep(1)
 45     judge = 1
 46     while judge:
 47         try:
 48             cloes_widow = browser.find_element_by_xpath("/html/body/div[9]/div/a")
 49             cloes_widow.click()
 50             print(111)
 51         except:
 52             print("没有通知弹窗")
 53             judge = 0
 54             pass
 55
 56
 57 # 进入视频并且播放
 58 def into_vedio_window():
 59     time.sleep(1)
 60     browser.find_element_by_xpath("").click()#引号内添加从“哪节课开始”的那节课的XPATH
 61     time.sleep(2)
 62
 63
 64 # 播放课
 65 def play_vedio():
 66     time.sleep(1)
 67     browser.switch_to.frame("iframe")
 68     # 这里有一个嵌套iframe
 69     browser.switch_to.frame(0)
 70     begin_vedio = browser.find_element_by_xpath("//*[@id=‘video‘]/button").click()
 71     time.sleep(3)
 72     print("课程已经开始播放")
 73
 74
 75 # 判断是否有答题框,其实这个逻辑挺简单的,只不过我不知道怎么触发答题框,
 76 # 选择题的话依次选择ABCD直到对了就可以
 77 def if_question():
 78     pass
 79
 80
 81 # 判断视频是否完成
 82 def if_vedio_finished():
 83     time.sleep(1)
 84     try:
 85         vedio_stat_time = browser.find_element_by_xpath("//*[@id=‘video‘]/div[4]/div[2]/span[2]").get_attribute(
 86             "textContent")
 87         vedio_end_time = browser.find_element_by_xpath("//*[@id=‘video‘]/div[4]/div[4]/span[2]").get_attribute(
 88             ‘textContent‘)
 89         print("开始时间和结束时间是:", vedio_stat_time, vedio_end_time)
 90         time.sleep(10)  # 每10秒检测一次视频是否完成
 91
 92         return vedio_stat_time, vedio_end_time
 93     except:
 94         pass
 95
 96
 97 # 判断有第二节课吗有就播放
 98 def if_have_2nd_class(vedio_stat_time, vedio_end_time):
 99     if vedio_stat_time == vedio_end_time:
100         try:
101             # 开始播放第二个视频
102             browser.switch_to.default_content()
103             browser.switch_to.frame("iframe")
104             browser.switch_to.frame(1)
105             browser.find_element_by_xpath("//*[@id=‘video‘]/button").click()
106             time.sleep(3)
107
108         except:
109             pass
110             print("没有第二节课了")
111
112
113 def start_next(vedio_stat_time, vedio_end_time):
114     if vedio_stat_time == vedio_end_time:
115         try:
116             browser.switch_to.default_content()
117             print("开始点下一页")
118             browser.find_element_by_xpath("/html/body/div[3]/div/div[2]/div[1]/div[8]").click()
119             time.sleep(0.5)
120             browser.find_element_by_xpath("/html/body/div[3]/div/div[2]/div[1]/div[4]").click()
121             time.sleep(0.5)
122             browser.find_element_by_xpath("/html/body/div[3]/div/div[2]/div[1]/div[6]").click()
123             time.sleep(0.5)
124             browser.find_element_by_xpath("/html/body/div[3]/div/div[2]/div[1]/div[8]").click()
125             time.sleep(0.5)
126         except:
127             print("开始点没有小节的下一页")
128             browser.switch_to.default_content()
129             browser.find_element_by_xpath("//*[@id=‘mainid‘]/div[1]/div[2]").click()
130             time.sleep(1)
131             pass
132
133
134 if __name__ == ‘__main__‘:
135     input_usename_and_password()
136     level_1st()
137     if_tongzhi()
138     into_vedio_window()
139     while True:
140         play_vedio()
141         time_tuple = if_vedio_finished()
142         while time_tuple[0] != time_tuple[1]:
143             time_tuple = if_vedio_finished()
144             try:
145                 if_have_2nd_class(time_tuple[0], time_tuple[1])
146                 if time_tuple[0] == time_tuple[1]:
147                     print("开始测试第二节课时间")
148                     time_tuple_2 = if_vedio_finished()
149                     while time_tuple_2[0] != time_tuple_2[1]:
150                         time_tuple_2 = if_vedio_finished()
151                         start_next(time_tuple_2[0], time_tuple_2[1])
152             except:
153                 start_next(time_tuple[0], time_tuple[1])

原文地址:https://www.cnblogs.com/xhfzjbs/p/12028948.html

时间: 2024-11-08 18:13:17

完全机器模拟浏览器操作自动刷网课!不怕被封!!-----python基于selenium实现超星学习通刷视频网课的相关文章

绕过超星学习通鼠标移开自动暂停视频的方法

绕过超星学习通鼠标移开自动暂停视频的方法 说明 原理:通过开发者模式删除鼠标监听事件 安全性:本方法不会被学习通检测以及警告,可放心使用 其他:可以用油猴插件进行自动挂机学习,但被学习通警告的风险较大(该门成绩分数为0) 1. 进入页面 用Google Chrome浏览器打开超星学习通页面,并进入到学生学习页面(其他浏览器大同小异) 2. 进入开发者模式 按下快捷键F12进入开发者模式 3. 打开监听事件 选择Event Listeners事件监听选项卡 4. 选择鼠标监听事件 点击mouseo

C# 模拟浏览器并自动操作

本文主要讲解通过WebBrowser控件打开浏览页面,并操作页面元素实现自动搜索功能,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点 WebBrowser:用于在WinForm窗体中,模拟浏览器,打开并导航网页. HtmlDocument:表示一个Html文档的页面.每次加载都会是一个全新的页面. GetElementById(string id):通过ID或Name获取一个Html中的元素. HtmlElement:表示一个Html标签元素. BackgroundWorker 后台执行

爬虫-使用模拟浏览器操作(截取网页)

最近遇到一个问题就是,如何模拟真实浏览器行为然后截取显示的网页. 方案 模拟登陆网站或者直接使用cookie登陆. 对指定页面按钮进行点击刷新页面,截取网页. 我们使用selenium库来操作浏览器驱动,即执行浏览器相应的驱动命令,实现相应的浏览器操作. 准备工作 selenium库 浏览器自动化测试框架,其作用是通过操作浏览器驱动来控制浏览器行为,达到模拟真实用户操作浏览器的效果.原理为自动化测试python脚本-->浏览器driver -->浏览器.官网 python中文文档 python

python下selenium模拟浏览器基础操作

1.安装及下载 selenium安装: pip install selenium  即可自动安装selenium geckodriver下载:https://github.com/mozilla/geckodriver/releases Chromedriver下载:http://npm.taobao.org/mirrors/chromedriver/ 2.保存路径 将下载好的geckodriver以及Chromedriver解压到桌面,打开我的电脑,找到Python文件夹中anancode文件

httpClient模拟浏览器登陆之谜

httpClient能够模拟浏览器进行自动登陆,但是如果页面上加了一个小小的验证码,自动登陆就会变的非常非常之复杂. 下面我们讨论的问题,都是不考虑有验证码等防止自动化登陆的情况下进行处理. 利用httpClient进行一个简单的登陆示例: packagetest.ffm83.commons.httpClient; importjava.util.ArrayList; importjava.util.List; importorg.apache.http.HttpEntity; importor

[Android 4.4.4] 泛泰A870 三版通刷 Mokee4.4.4 KTU84P 20140626 RC2.1 by syhost

截图以及注意事项请前往前一版: http://blog.csdn.net/syhost/article/details/29931291 此RC2.1版比RC2.0改进的地方: 1. Mokee本身的更新改动可以到Mokee论坛查看 2. 修复录像没有声音的bug(方法也适用于泛泰850) 3. 声音部分的HAL代码稍微做了调整,但没详细测试跟之前一版的区别! 4. 内核做了不小改动,但不确定能改善哪些或者带来是否带来新bug,我这里的电池是假的所以测耗电没有参考意义! 转载请务必注明本链接地址

[Android 4.4.4] 泛泰A850 三版通刷 Mokee4.4.4 KTU84P 20140623 RC2.1 by syhost

此版本仅为Mokee版本升级, 限于条件, 前一版本bug并未修复, 截图以及注意事项请前往前一版: http://blog.csdn.net/syhost/article/details/25426963 转载请务必注明本链接地址: http://blog.csdn.net/syhost/article/details/34051923 RC2.1 下载地址: https://mega.co.nz/#!Ews3RZIT!7fvVtNWL6pUnoj4Pmra3zRK54eM3fLyS21ZgK

splinter python浏览器自动化操作,模拟浏览器的行为

Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没有更新了.还 有就是利用selenium,可支持多种浏览器.网上资料比较多.经过比较,我选择了Splinter模块,因为利用Splinter开发浏览器自动化操 作,编写代码比较简单. 一.Splinter的安装 Splinter的使用必修依

Python使用mechanize模拟浏览器

Python使用mechanize模拟浏览器 之前我使用自带的urllib2模拟浏览器去进行訪问网页等操作,非常多站点都会出错误,还会返回乱码.之后使用了 mechanize模拟浏览器,这些情况都没出现过,真的非常好用.这里向大家推荐一下. mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web訪问控制方面做得更全面. 首先从安装開始吧,以ubuntu系统为例: python 绝大部分第三方软件包.都是标准安装方式,从官网下载之后.解压到一个文件夹内,然后在这个