当前位置: 首页 > news >正文

南昌大学(NCU)羽毛球场地预约脚本

        在冬天进行羽毛球运动是一个很好的选择,它能帮助你保持身体活力,增强心肺功能,并促进血液循环。但是室友和师弟师妹反应,学校的羽毛球场地有限,手速慢的根本预约不到场地。

       中午12:00准时开放预约,1秒钟不到,就只剩下08:00-09:00和12:00-13:00的不好的时间段,如果想要预约到晚上19:00-21:00的黄金时间段就需要用脚本了。

2980ede8085b4a45ae09600fdb6a7df2.png

 一、Python代码

 1. 导入工具包

import requests
import time

2.  输入用户名和密码

session = requests.Session()  # 用于存储 Cookie
account = ['402201314520']  #  用户名
password = ['1234567']  #  密码
time1 = time.time()  # 记录初始时间

 3. 场馆登入URL

for i in range(1):login_url = 'https://cas.ncu.edu.cn:8443/cas/login?service=http%3A%2F%2Fndyy.ncu.edu.cn%3A8089%2Fcas%2Flogin'  # 场馆登入URLheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'}data1 = {'name': account[i], 'pwd': password[i], }  # 可用于多个账号的预约login = session.get(login_url, headers=headers, data=data1)  # 登入操作print(login)# print(login.text)  # 打印是否登入成功

 4. 预约

    t = 1   # 用于12:00前的不断刷新预约界面while t == 1:try:for j in range(2):  # 预约次数,即几个时间段'''url1 中的参数role=ROLE_STUDENT       # 表示学生身份date=2024-12-03         # 预约日期startTime=08:00-09      # 预约时间areaName=%E7%BE%BD%E6%AF%9B%E7%90%8312%E5%8F%B7%E5%9C%BA%E5%9C%B0  # “羽毛球12号场地”这几个中文的URL编码  其实不同场地也就是 %8312% 不同,如: %831% 表示 “羽毛球1号场地”areaNickname=hall12     # “羽毛球12号场地”  的英文名称'''url1 = ['https://ndyy.ncu.edu.cn/api/badminton/saveReservationInformation?role=ROLE_STUDENT&date=2024-12-03&startTime=08:00-09:00&areaName=%E7%BE%BD%E6%AF%9B%E7%90%8312%E5%8F%B7%E5%9C%BA%E5%9C%B0&areaNickname=hall12','https://ndyy.ncu.edu.cn/api/badminton/saveReservationInformation?role=ROLE_STUDENT&date=2024-12-04&startTime=08:00-09:00&areaName=%E7%BE%BD%E6%AF%9B%E7%90%831%E5%8F%B7%E5%9C%BA%E5%9C%B0&areaNickname=hall1']headers4 = {"Host":'ndyy.ncu.edu.cn','Referer':'https://ndyy.ncu.edu.cn/booking',"accept":'application/json, text/plain, */*',# "token" 一段时间会失效,需要经常更换"token":'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MzMxNjM0MDcsInVzZXJOYW1lIjoi546L5L2z5aiBIiwidXNlciI6IjQwMjIwMDIzMDEyNSIsInR5cGVDb2RlIjoiUzAxIn0.tW5jNDSuPIwEHoXnTjx_0hHpV8yTdqC2i4ad2Rcg1hs','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'}order = session.get(url=url1[j],headers=headers4)  # 预约print(order.text)if int(order.text['msg']) == None:  # 如果预约成功就为Ture,否则就会不断进行While循环,直到预约成功t = 0except:t = 1
time2 = time.time() # 预约成功后的时间
print(time2-time1) # 打印用时

“token” 更新 ----F12键打开开发者界面 c4fca9ec54414077988fed6128190dad.png

二、总代码 

import requests
import timesession = requests.Session()  # 用于存储 Cookie
account = ['402201314520']  #  用户名
password = ['1234567']  #  密码
time1 = time.time()  # 记录初始时间for i in range(1):login_url = 'https://cas.ncu.edu.cn:8443/cas/login?service=http%3A%2F%2Fndyy.ncu.edu.cn%3A8089%2Fcas%2Flogin'  # 场馆登入URLheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'}data1 = {'name': account[i], 'pwd': password[i], }  # 可用于多个账号的预约login = session.get(login_url, headers=headers, data=data1)  # 登入操作print(login)# print(login.text)  # 打印是否登入成功t = 1   # 用于12:00前的不断刷新预约界面while t == 1:try:for j in range(2):  # 预约次数,即几个时间段'''url1 中的参数role=ROLE_STUDENT       # 表示学生身份date=2024-12-03         # 预约日期startTime=08:00-09      # 预约时间areaName=%E7%BE%BD%E6%AF%9B%E7%90%8312%E5%8F%B7%E5%9C%BA%E5%9C%B0  # “羽毛球12号场地”这几个中文的URL编码  其实不同场地也就是 %8312% 不同,如: %831% 表示 “羽毛球1号场地”areaNickname=hall12     # “羽毛球12号场地”  的英文名称'''url1 = ['https://ndyy.ncu.edu.cn/api/badminton/saveReservationInformation?role=ROLE_STUDENT&date=2024-12-03&startTime=08:00-09:00&areaName=%E7%BE%BD%E6%AF%9B%E7%90%8312%E5%8F%B7%E5%9C%BA%E5%9C%B0&areaNickname=hall12','https://ndyy.ncu.edu.cn/api/badminton/saveReservationInformation?role=ROLE_STUDENT&date=2024-12-04&startTime=08:00-09:00&areaName=%E7%BE%BD%E6%AF%9B%E7%90%831%E5%8F%B7%E5%9C%BA%E5%9C%B0&areaNickname=hall1']headers4 = {"Host":'ndyy.ncu.edu.cn','Referer':'https://ndyy.ncu.edu.cn/booking',"accept":'application/json, text/plain, */*',# "token" 一段时间会失效,需要经常更换"token":'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MzMxNjM0MDcsInVzZXJOYW1lIjoi546L5L2z5aiBIiwidXNlciI6IjQwMjIwMDIzMDEyNSIsInR5cGVDb2RlIjoiUzAxIn0.tW5jNDSuPIwEHoXnTjx_0hHpV8yTdqC2i4ad2Rcg1hs','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'}order = session.get(url=url1[j],headers=headers4)  # 预约print(order.text)if int(order.text['msg']) == None:  # 如果预约成功就为Ture,否则就会不断进行While循环,直到预约成功t = 0except:t = 1
time2 = time.time() # 预约成功后的时间
print(time2-time1) # 打印用时

 结果:

<Response [200]>  # 表示登入成功
{"code":"200","msg":""}  # 表示第一个时间段的URL预约成功
{"code":"601","msg":"失败,请尝试刷新页面!"}  # 预约失败的URL,会不断刷新,直到成功
{"code":"601","msg":"失败,请尝试刷新页面!"}
{"code":"601","msg":"失败,请尝试刷新页面!"}
{"code":"601","msg":"失败,请尝试刷新页面!"}
{"code":"601","msg":"失败,请尝试刷新页面!"}

e09c6bcc3b144f1cb73f27fa0c6b23a1.gif


http://www.mrgr.cn/news/78912.html

相关文章:

  • Spire.PDF for .NET【页面设置】演示:旋放大 PDF 边距而不改变页面大小
  • Gradle vs. Maven: 到底哪个更适合java 项目?
  • 设计模式- Java
  • Spring 中的 @Component 注解
  • AI在SEO中的应用与关键词优化探讨
  • HickWall 详解
  • leeCode算法之最接近的三数之和求解
  • 畅游Diffusion数字人(9):Magic-Me: Identity-Specific Video Customized Diffusion
  • 数据结构——排序第三幕(深究快排(非递归实现)、快排的优化、内省排序,排序总结)超详细!!!!
  • 用到动态库的程序运行过程
  • 繁体字异体字整理(未整理完)
  • LeetCode hot100(自用背诵、部分题目、非最优解)
  • PG 库停库超时异常案例
  • 开源项目 - 人脸关键点检测 facial landmark 人脸关键点 (98个关键点)
  • 4399 Android面试题及参考答案
  • Flutter:页面滚动
  • SCAU期末笔记 - 数据库系统概念
  • 洛谷二分题
  • 鸿蒙技术分享:Navigation页面管理-鸿蒙@fw/router框架源码解析(二)
  • OpenCV_Code_LOG
  • 从0学习JavaScript(2)
  • 【大数据技术基础 | 实验十四】Kafka实验:订阅推送示例
  • Android:生成Excel表格并保存到本地
  • 书生浦语·第四期作业合集
  • 【小白学机器学习41】如何从正态分布的总体中去抽样?比较不同的取样方差的差别
  • 3分钟快速掌握——c语言【流程控制】if else选择语句,for while循环,goto语句