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

news2024/12/27 7:13:43

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

       中午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'  # 场馆登入URL
    headers = {
        '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 = 0
        except:
            t = 1
time2 = time.time() # 预约成功后的时间
print(time2-time1) # 打印用时

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

二、总代码 

import requests
import time

session = 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'  # 场馆登入URL
    headers = {
        '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 = 0
        except:
            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.coloradmin.cn/o/2252551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

debian 11 虚拟机环境搭建过坑记录

目录 安装过程系统配置修改 sudoers 文件网络配置换源安装桌面mount nfs 挂载安装复制功能tab 无法补全其他安装 软件配置eclipse 配置git 配置老虚拟机硬盘挂载 参考 原来去 debian 官网下载了一个最新的 debian 12&#xff0c;安装后出现包依赖问题&#xff0c;搞了半天&…

leecode96.不同的二叉搜索树

在画的过程中发现规律&#xff0c;每次选择不同的节点作为根节点&#xff0c;左右两边的节点再排列组合一下就能求出总数 class Solution { public:int numTrees(int n) {vector<int> dp(n1,0);dp[0]1;for(int i1;i<n;i)for(int j0;j<i;j)dp[i]dp[i-j-1]*dp[j];ret…

Vue前端开发-路由的基本配置

在传统的 Web 页面开发过程中&#xff0c;可以借助超级链接标签实现站内多个页面间的相互跳转&#xff0c;而在现代的工程化、模块化下开发的Web页面只有一个&#xff0c;在一个页面中需要实现站内各功能页面渲染&#xff0c;相互跳转&#xff0c;这时些功能的实现&#xff0c;…

Creating Server TCP listening socket *:6379: bind: No error

启动redis报错&#xff1a;Creating Server TCP listening socket *:6379: bind: No error 解决方案&#xff1a; 1、直接在命令行中输入 redis-cli.exe 2、输入shutdown&#xff0c;关闭 3、输exit&#xff0c;退出 4、重新输入 redis-server.exe redis.windows.conf&…

详解登录MySQL时出现SSL connection error: unknown error number错误

目录 登录MySQL时出错SSL connection error: unknown error number 出错原因 使用MySQL自带的工具登录MySQL 登陆之后&#xff0c;使用如下命令进行查看 解决方法 找到MySQL8安装目录下的my.ini配置文件 记事本打开my.ini文件&#xff0c;然后按下图所示添加配置 此时再…

AI在SEO中的应用与关键词优化探讨

内容概要 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术为搜索引擎优化&#xff08;SEO&#xff09;带来了革命性的改变。传统的SEO主要依赖于人为的经验和判断&#xff0c;而AI则通过算法分析海量数据&#xff0c;提供更加精准和高效的方式优化关键词…

NLP任务四大范式的进阶历程:从传统TF-IDF到Prompt-Tuning(提示词微调)

引言&#xff1a;从TF-IDF到Prompt-Tuning&#xff08;提示词微调&#xff09;&#xff0c;NLP的四次变革 自然语言处理&#xff08;NLP&#xff09;技术从最早的手工特征设计到如今的Prompt-Tuning&#xff0c;经历了四个重要阶段。随着技术的不断发展&#xff0c;我们的目标…

十四(AJAX)、AJAX、axios、常用请求方法(GET POST...)、HTTP协议、接口文档、form-serialize

1. AJAX介绍及axios基本使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content&q…

Javaweb梳理21——Servlet

Javaweb梳理21——Servlet 21 Servlet21.1 简介21.3 执行流程21.4 生命周期4.5 方法介绍21.6 体系结构21.7 urlPattern配置21.8 XML配置 21 Servlet 21.1 简介 Servlet是JavaWeb最为核心的内容&#xff0c;它是Java提供的一门动态web资源开发技术。使用Servlet就可以实现&…

如何在MySQL中计算两个日期的间隔天数

目录 1. DATEDIFF函数2. TIMESTAMPDIFF函数3. PERIOD_DIFF函数4. 函数对比 在MySQL 5.7中&#xff0c;计算两个日期之间的间隔天数是一项常见的任务。 1. DATEDIFF函数 DATEDIFF函数可以直接计算两个日期之间的天数差异。 -- 计算2024年1月1日和2024年1月10日之间的天数差异 …

React Native学习笔记(一)

一、创建ReactNative项目 1.1、指令创建 React Native 有一个内置的命令行界面&#xff0c;你可以用它来生成一个新项目。您可以使用 Node.js 附带的 访问它&#xff0c;而无需全局安装任何内容。让我们创建一个名为“AwesomeProject”的新 React Native 项目 npx react-nati…

VSCode中“Run Code”运行程序时,终端出现中文乱码解决方法

问题描述 在VSCode中“Run Code”运行程序时&#xff0c;终端输出结果出现中文乱码现象&#xff1a; 解决方法 1. 检查系统cmd的默认编码 查看Windows终端当前编码方式的命令&#xff1a; chcp输出结果是一段数字代码&#xff0c;如936&#xff0c;这说明当前的cmd编码方式…

Hive学习基本概念

基本概念 hive是什么&#xff1f; Facebook 开源&#xff0c;用于解决海量结构化日志的数据统计。 基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能 本质是将HQL转化为MapReduce程序。 Hive处理的数据存储在H…

css选择当前元素前面的一个元素

选择text-danger前面的ant-divider: .ant-divider:has( .text-danger) {display: none; }

嵌入式硬件面试题【经验】总结----会不断添加更新

目录 引言 一、电阻 1、电阻选型时一般从那几个方面考虑 2、上拉电阻的作用 3、PTC热敏电阻作为电源电路保险丝的工作原理 4、如果阻抗不匹配&#xff0c;有哪些后果 二、电容 1、电容选型一般从哪些方面进行考虑? 2、1uf的电容通常来滤除什么频率的信号 三、三极管…

阿里云人工智能平台(PAI)免费使用教程

文章目录 注册新建实例交互式建模(DSW)注册 注册阿里云账号进行支付宝验证 新建实例 选择资源信息和环境信息,填写实例名称 资源类型需要选择公共资源,才能使用资源包进行抵扣。目前每月送250计算时。1 * NVIDIA A10 8 vCPU 30 GiB 1 * 24 GiB1 * NVIDIA V100 8 vCPU 32 Gi…

泷羽sec-burp功能介绍(1) 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

不同云计算网络安全等级

导读云计算的本质是服务&#xff0c;如果不能将计算资源规模化/大范围的进行共享&#xff0c;如果不能真正以服务的形式提供&#xff0c;就根本算不上云计算。 等级保护定级流程 定级是开展网络安全等级保护工作的 “基本出发点”&#xff0c;虚拟化技术使得传统的网络边界变…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的&#xff0c;electron 29版本追加了很多新功能&#xff0c;但是这些新功能对开发者不友好&#xff0c;对electron构建出来的软件&#xff0c;使用者更安全&#xff0c;所以&#xff0c;我暂时不想研究electron 29版…

【工具变量】上市公司企业金融错配程度数据(1999-2022年)

一、测算方式&#xff1a;参考C刊《科研管理》赵晓鸽&#xff08;2021&#xff09;老师的研究&#xff0c;对于金融错配的测算&#xff0c;采用企业资本成本偏离行业平均资本成本的程度来作为企业金融错配的代理变量。其中使用财务费用中的利息支出与扣除了应付账款后的负债总额…