Python——实现网课实时监控自动签到,打卡

article/2025/4/19 20:59:21

3.17日补充
生成uuid(通用唯一识别码),简单来说就是一串随机的字符串,网上有很多在线接口可以生成,大牛也可以自己写程序实现
7e60d79bb2164df8bb2242100979a2e1

首先非常高兴观众姥爷能翻开此篇博客,一般会对这种博文感兴趣的大部分都是学生,我也是学生,所以申明一下我写的东西是不会收费的,其次我发布的代码都是免费的,不含任何盈利,有需要的可以转载,但不要拿代码去赚钱。
希望大家配合!

HaoXuan
响应国家停课不停学的号召,学生们都开始了网上授课,但由于课程繁多,消息繁杂,经常错过课堂签到,针对这一难题,博客主作为Python爱好者,完全使用Python语言写了本篇博客,希望能够帮助小伙伴们完成上课签到问题(注:只是帮你签到,而不是叫你代签,我的出发点是帮助记性不是很好的同学签到,防止漏签被老师点名),所以希望大家能理解博主的苦心。
fafa
话不多说,献上效果图两张
获取课表
实时监控
进入正式教程

①Python环境

Python3.6及以上版本,需要配备的库requests,json,time
代码运行软件:Pycharm

**

②手动登录

手动登录地址:http://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1

**
登录

③Cookie获取

在签到过程中最基本的就是用户的Cookie,相当于用户的身份证,在最初写的Python版本中,我直接将我自己的Cookie作为参数保存在代码中,但是经过测试发现由于每个用户的Cookie不同所以后出现报错,所以辛苦小伙伴们手动获取个人Cookie,放入代码中,详细Cookie获取流程如下图所示
注:登录完成后右键审核元素,可以来到此页面
在这里插入图片描述
将自己的Cookie值copy放入如下代码

#填入Cookie
headers={"Cookie": "","User-Agent": "Mozilla/5.0 (iPad; CPU OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 ChaoXingStudy/ChaoXingStudy_3_4.3.2_ios_phone_201911291130_27 (@Kalimdor)_11391565702936108810"
}

Cookie值放置好后,剩余代码不需要做修改,可直接使用,大家如果对代码有疑问或者好的建议可以随时评论区dd我
由于最近学习任务比较重,剩余的代码也不多做讲解,直接奉上,爱好编程的小伙伴可以自己思考一下流程
完整代码奉上(注:Cookie值自补)

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2020/3/5 13:19
# @Author  : HaoXuan
# @Email   : 879316712@qq.com
# @File    : 超星学习通实时签到监控.py
# @Software: PyCharm
import requests
import json
import time#填入Cookie
headers={"Cookie": "","User-Agent": "Mozilla/5.0 (iPad; CPU OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 ChaoXingStudy/ChaoXingStudy_3_4.3.2_ios_phone_201911291130_27 (@Kalimdor)_11391565702936108810"
}
#填入uid
uid=""
coursedata=[]
activeList=[]
course_index=0
speed=10
status=0
status2=0
activates=[]
def backclazzdata():global coursedataurl="http://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1"res=requests.get(url,headers=headers)cdata=json.loads(res.text)if(cdata['result']!=1):print("请补充Cookie否则课程列表获取失败")return 0for item in cdata['channelList']:if("course" not in item['content']):continuepushdata={}pushdata['courseid']=item['content']['course']['data'][0]['id']pushdata['name']=item['content']['course']['data'][0]['name']pushdata['imageurl']=item['content']['course']['data'][0]['imageurl']pushdata['classid']=item['content']['id']coursedata.append(pushdata)print("获取成功")  #print(coursedata)  printdata()def printdata():global course_index,speedindex=1for item in coursedata:print(str(index)+".课程名称:"+item['name'])index+=1course_index=int(input("请输入监控课程监控课程序号:"))-1print("监控课程设定完成")speed=int(input("请输入监控频率:")) #频率是监控的速度,一格10秒,适中选择就好print("监控频率设置完毕")res=input("输入666启动监控:")if(res=="start"):startsign()else:printdata    def taskactivelist(courseId,classId):global activeListurl="https://mobilelearn.chaoxing.com/ppt/activeAPI/taskactivelist?courseId="+str(courseId)+"&classId="+str(classId)+"&uid="+uidres=requests.get(url,headers=headers)data=json.loads(res.text)activeList=data['activeList']#print(activeList)for item in activeList:if("nameTwo" not in item):continueif(item['activeType']==2 and item['status']==1):signurl=item['url']aid = getvar(signurl)if(aid not in activates):print("【签到】查询到待签到活动 活动名称:%s 活动状态:%s 活动时间:%s aid:%s"%(item['nameOne'],item['nameTwo'],item['nameFour'],aid))sign(aid,uid)   def getvar(url):var1 = url.split("&")for var in var1:var2 = var.split("=")if(var2[0]=="activePrimaryId"):return var2[1]return "ccc"    def sign(aid,uid):global status,activatesurl="https://mobilelearn.chaoxing.com/pptSign/stuSignajax?activeId="+aid+"&uid="+uid+"&clientip=&latitude=-1&longitude=-1&appType=15&fid=0"res=requests.get(url,headers=headers)if(res.text=="success"):print("用户:"+uid+" 签到成功!")activates.append(aid)status=2else:print("签到失败")  activates.append(aid)  def startsign():global status,status2status=1status2=1ind=1print("监控启动 监控课程为:%s 监控频率为:%s"%(coursedata[course_index]['name'],str(speed)))while(status!=0 and status2!=0):ind+=1taskactivelist(coursedata[course_index]['courseid'],coursedata[course_index]['classid'])time.sleep(speed)if(status==1):print(str(ind)+" [签到]监控运行中,未查询到签到活动")elif(status==2):print(str(ind)+" [新签到]监控运行中,未查询到签到活动")         print("任务结束")printdata()backclazzdata()

原理很简单,有兴趣大家也可以自己动手实现一下,如果大家想学习,可以细读一次Python的代码,有兴趣的可以私信我,我将用到的API和python代码打包发给你(Python代码没有加登陆模块,有能力的的可以自己实现一下)
谢谢大家!
HaoXuan
最后,说一下这个自动实时监控签到一个软件只能监控一个课程,但是能多开实现多门课程监控
然后,本代码可以满足普通签到,收拾签到,位置签到(位置信息空白),不支持照片签到(希望又大牛可以解决这个问题)由于程序不完善,可能会提示失败但是如果点开学习通查询,是显示已经完成签到。
HaoXuan
如果有Python爱好者,欢迎关注我的往期博客,大家可以一起探讨,加入Python学习大部队中:人生苦短,我学Python!

@Author:HaoXuan
Python爱好者交流群:482383279


http://chatgpt.dhexx.cn/article/VGu0JW7t.shtml

相关文章

计算机网络入门网课推荐+超详细笔记

建议看湖南科技大学的网课,讲得十分清晰明了https://www.bilibili.com/video/BV1c4411d7jb?p1&vd_sourceac571aae41aa0b588dd184591f27f582 我个人差不多是从纯小白开始学的计网,那时候只学了C语言和JAVA语言的基本语法,以及做了个JAVA的…

AMBA 2.0 学习记录

第一周学习内容 利用寒假时间学习一些数字ic相关的内容,每周记录一下。 基本都是现有资料文章的整理,最后标明了出处。 欢迎大家指点、交流。 文章目录 学习路径一、AMBA是什么?二、APB总线总概写传输时序:(注意看虚线…

什么软件可以听学业水平测试网课,免费听网课app推荐

免费听网课app推荐2020-10-17 15:41:06文/张孟影 小编为大家找来了一些可以免费学习的网课软件,大家赶快来挑选适合自己的app吧。 网课app有哪些 宇学教育 安博教育 京教通 小七学伴 名华在线 燃天网校 钉钉学生版 华远学成教育 华数钉钉课堂 简单学习网 网课软件简…

UE4网课学习笔记

学习资源:https://www.bilibili.com/video/av52017180?p22 BSP:二进制空间划分让门可旋转,需要将属性改为“Movable”选中一个物体后,在Level BluePrint中右键会自动出现对应物体的函数TimeLine: 其中:Pla…

超星学习通小助手多线程工具Python

话不多说,直接开始,不会安转的直接使用后面两款,下载直接打开exe运行 第一款:网课小助手python,需要自行安装Python环境(支持Windows、Mac、Linux各种环境) https://wwiv.lanzoul.com/ifVrC0vk…

[脚本] 如果电脑不会自己看网氪,就应该用Python教会它

很多时候需要看网课完成一下学习任务,但在某些平台在播完一条视频后并不会自动切播到下一条。所以这里简单用python写了一个脚本,利用PyAutoGui库自动完成一些如鼠标移动点击来快速切换的操作。 源码地址 现已将代码上传至GitHub仓库(其中包…

计算机网络第六章学习通题目及答案

目录 DNS FTP 第十一次练兵 WWW 电子邮件 第十二次练兵 DNS 3 【简答题】 域名系统的查询方式有哪两类?最常见的是哪一种? 我的答案: 递归查询和迭代查询,迭代查询。 域名系统DNS是因特网使用的命名系统,用来…

kafka命令行操作(for Linux)

kafka命令行操作主要分为三大类: 主题命令行操作、生产者命令行操作、消费者命令行操作。 注意: 命令行操作前提,启动kafka集群。 1. 主题命令行操作 1.1 查看主题命令行参数 a) 查询命令 [roothadoop102 ~]# /opt/module/kafka/bin/kafka…

【Kafka】kafka命令kafka-console-consumer.sh

文章目录 1.概述2.消息消费3.从开始位置消费4.显示key消费5.其他参数6.案例7.源码分析1.概述 转载:转载并且补充 kafka-console-consumer.sh 脚本是一个简易的消费者控制台。该 shell 脚本的功能通过调用 kafka.tools 包下的 ConsoleConsumer 类,并将提供的命令行参数全部传…

【Kafka】kafka命令 kafka-console-producer

文章目录 1.概述2.输入单挑数据3.批量导入数据3.无key型消息4.有key型消息1.概述 消费者:【Kafka】kafka命令kafka-console-consumer.sh kafka-console-producer 命令的常用参数如下 参数值类型说明有效值--bootstrap-serverString要连接的服务器必需(除非指定--broker-list…

kafka 命令、API

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 大数据组件使用 总文章 kafka 生产/消费API、offset管理/原理、kafka命令kafka 命令、APIKafka 安装、原理、使用mapreduce 实时消费 kafka 数据…

kafka命令行使用

kafka使用 查看Kafka当前的主题列表创建一个主题查看主题信息修改分区信息删除一个主题生成者推送消息消费者接收查看分组信息查看特定consumer group 详情 基于Kafka 2.13版本的操作 查看Kafka当前的主题列表 ./kafka-topics.sh --zookeeper 127.0.0.1:2181 --list创建一个主…

简单的kafka命令行操作

目录 一、主题topic命令行操作 1.查看操作主题的命令参数 2.连接kafka地址,创建名为kaf的主题,指定分区和副本数量 3.查看所有主题的名称 4.查看主题的详细信息 5.修改主题(修改分区数) 二、生产者命令行操作 1.查看操作生…

【kafka】三、kafka命令行操作

kafka命令行操作 kafka的相关操作命令脚本文件在bin目录下 查看所有的topic kafka-topics.sh --zookeeper hll1:2181 --list 或 kafka-topics.sh --zookeeper 192.168.171.132:2181 --listkafka-topics.sh:topic执行脚本 --zookeeper hll1:2181:需要的…

Kafka的命令行操作

一、topic命令 下面Windows命令需要把cmd路径切换到bin/windows下。 而Linux命令只需要在控制台切换到bin目录下即可。 下面都以Windows下的操作为例,在Linux下也是一样的。 1.1 查看主题命令的参数 kafka-topics.bat # Windows kafka-topics.sh # Linux输…

Kafka 命令行操作

1)查看当前服务器中的所有 topic bin/kafka-topics.sh --zookeeper backup01:2181 使用命令 bin/kafka-topics.sh --list 报异常,提示必须依赖zookeeper 前面我们就讲过kafka是依赖于zookeeper 连上zookeeper什么都没有输出,因为我们什…

kafka命令行操作大全

最近利用flink使用一个流式SQL处理平台,利用kafka, mysql, hive等组件比较多,命令行突然间需要操作一次记不住命令很麻烦,索性直接整理成笔记。 在 0.9.0.0 之后的 Kafka,出现了几个新变动,一个是在 Server 端增加了…

Kafka命令大全

kafka 脚本 connect-distributed.sh connect-mirror-maker.sh connect-standalone.sh kafka-acls.sh kafka-broker-api-versions.sh kafka-configs.sh kafka-console-consumer.sh kafka-console-producer.sh kafka-consumer-groups.sh kafka-consumer-perf-test.sh kafka-dele…

Kafka常用命令行命令

文章目录 Kafka常用命令kafka的基本操作(命令行操作)1.启动集群:2.查看当前服务器中的所有topic(在kafka目录下)3.创建主题topic(在kafka目录下)4.删除topic(在kafka目录下&#xff…

美国Stripe支付Android端集成流程

上家公司想要拓展自己在新加坡的市场,打算做一个新加坡本地的生活服务应用,其中少不了的就是支付了。国外支付这块一直是个头疼的问题。想用Google Wallet吧,但它是采用NFC接触式交易,想要进行线上服务时没法进行,后来就去整个贝宝PayPal支付。在这里想吐槽一下,PayPal支付做起…