使用Python开发选课脚本

参考链接

编号 分类 文章及链接 介绍 作者 来源分类 撰写日期 收录日期
L1 参考 python自动预约公众号 hzp666 优快云博客 2022-03-07 2023-09-11
L2 参考 微信小程序抢票脚本 躺平de咸鱼 优快云博客 2022-07-06 2023-09-13

前言: 孩子所在的小学每到开学季就会有周末课外非文化课的辅导班的抢课大战。某校通也是个小开发商,他们做的微信公众号上面的选课缴费程序因为有2-3千家长同时抢课,每次都会搞得网站接近瘫痪20分钟以上。运气好能抢到心仪的课,运气不好的时候一个课也选不到。而且,这个开发商还没有锁位机制,抢到课了,交钱慢了也不行。没有预留交钱的时间。几次想来搞一个抢课程序,但是都是觉得有点麻烦或者事情多给放弃了。趁着这次开学季,研究了一下,实验算是成功了。

1. 工具准备

2. 使用抓包工具fiddler获取微信公众号课程信息

为了能够从脚本发出选课请求,需要获知如下内容:

  1. 选课接口URL

  2. Header参数,包括识别用户正常登录的cookies

  3. post数据格式

  4. post数据内容

    用电脑版微信登录某校通的微信公众号,注意提前在微信上绑定学生信息。
    进入选课界面,用fiddler跟踪公众号的信息。
    在这里插入图片描述
    通过访问选课界面,并通过其中的js脚本,可以定位到接口以及相应的header数据(最好保持完全一样)以及cookies数据。 post数据格式这一块,没有跑正式流程之前以为是json格式,后来才知道是web表单格式。至于数据内容,有四项GUID数据构成。分别是学生ID列表、课程组ID、课程ID、学校ID,除了课程ID外,其它几项的值从头到尾都是不变的,课程ID根据需要报名的课程去获取设置。
    正式抢课之前,由于接口没有开放,只是推测。所以正确的学生id没有拿到,格式也有错误。
    还好,抢课当天还有些课可以选,最后测试通过,算是正确完成。下个开学季可以随便选课了。

在这里插入图片描述

3. 编写python程序

使用第三方的requests组件来发送表单数据。
记得使用前安装 pip install requests

核心代码及控制逻辑已经实现。同时选多个学生或者多个课程建议多线程进行,需自行实现。

import sys
import requests
import time
import json
from pathlib import Path
from marklog import info_logout, init_log


class SelectCourse:
    over_flag = False
    # 学校id,不变
    course_school_id = 'COURSE_SCHOOL_ID'
    # 项目id,不变
    project_id = 'PROJECT_ID'
    # 学生码 ["GUID"]
    student_code = 'STUDEN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值