文章主要通过分析浏览器请求,模拟浏览器请求来实现
分析浏览器网络请求
登陆后, 进入课程学习页面,通过抓包或者F12 查看网站的连接情况, 这里以 学起plus 举例
进入课程学习页面, 按F12观察网络情况, 在不播放的情况下,浏览器过30秒会自动请求,找到两个请求如图
可以看到请求为POST,
浏览器自己每隔30秒会发送一个30秒的时间到服务器

根据请求编写python脚本
左侧框内为课程相关的信息和token/cookies之类信息,根据实际情况取用
所有我们需要模拟浏览器的请求, 因为学习的课程比较少,就4个,就用简单的方式去实现,重复发送这几个请求
下面使用python来实现
import requests import time
headers = { "Host": "网站域名,例如 xxx.xxx.net", "Cookie": ".CHINAEDUCLOUD=coookis 参考图片,根据实际情况填写", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36", "Eduuid": "参考图片,根据实际情况填写", "Content-Type": "application/json", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Connection": "close", }
requests_configs = [ { "edurefurl": "https://aaa.bbb.net/student/videolearning.html#Subpage/StudentVersionVideo?courseVersionId=aaaaaaaaaaaaaaaa&teachplanCourseVersionId=dddddddddddd&sign=eeeeeeeeeeeeee&userAccountId=fffffffffffffffff", "edutoken": "xxxxx", "edusign": "hhhhhhhhhhhhhhhhhhh", "data": { "courseVersionId": "aaaaaaaaaaaaaaaa", "studyDuration": 30, "token": "bbbbbbbbbbbbbbbb|cccccccccccccccc", }, },
{ }, ]
def send_request(config): specific_headers = { "Edurefurl": config["edurefurl"], "Edutoken": config["edutoken"], "Edusign": config["edusign"], } combined_headers = {**headers, **specific_headers} response = requests.post( url="https://aaa.bbb.net/student/student/coursestudyrecord/adddurationpc", headers=combined_headers, json={"data": config["data"]}, ) return response
while True: for config in requests_configs: response = send_request(config) print(f"Response Status: {response.status_code}, Response Text: {response.text}") time.sleep(30)
|
运行程序
查看结果
如果不是200,请检查请求参数是否正确
制作docker镜像
如此,就在自动刷课了, 难道一直开着电脑 ,NO
制作成DOCKER镜像, 然后随便丢一台一直开机的服务器跑即可
dockerfile 文件
FROM python:3.10.14-bookworm WORKDIR /app COPY main.py /app/ COPY requirements.txt /app/ RUN pip install requests CMD ["python","-u", "main.py"]
|
制作镜像
docker build -t tag标签 . docker push tag
|
使用镜像
docker run -d --name shuake tag标签
|
查看日志