文章主要通过分析浏览器请求,模拟浏览器请求来实现

分析浏览器网络请求

登陆后, 进入课程学习页面,通过抓包或者F12 查看网站的连接情况, 这里以 学起plus 举例

进入课程学习页面, 按F12观察网络情况, 在不播放的情况下,浏览器过30秒会自动请求,找到两个请求如图

educloud-plus-shuake-0

可以看到请求为POST,

educloud-plus-shuake-1

浏览器自己每隔30秒会发送一个30秒的时间到服务器

educloud-plus-shuake-2
educloud-plus-shuake-3

根据请求编写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",
}

# 不同请求的数据配置可以到student/student/coursestudyrecord/adddurationpc请求中查找
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

# 每30秒循环发送请求
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)

运行程序

python main.py 

查看结果

如果不是200,请检查请求参数是否正确

educloud-plus-shuake-4

制作docker镜像

如此,就在自动刷课了, 难道一直开着电脑 ,NO

制作成DOCKER镜像, 然后随便丢一台一直开机的服务器跑即可

dockerfile 文件

#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标签

查看日志

docker logs -f shuake

educloud-plus-shuake-5