之前我的考研朋友吐槽自习室的座位太难抢了,每次一到点就卡住,经常面临着座位难预约的情况,便想开发一个脚本来抢座位,话不多说,找到座位预约的官网,如图所示
开始为登录页面,账号为对应的学号,密码一般都有初试密码,先抓包,按F12或者右键开发者工具,数据包如图所示
账号密码都为明文。。。其他的参数都固定,好家伙,直接post模拟请求,上代码
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
}
data = {
"login_name":账号,
"password":密码,
"ui_type":"com.Raw",
"code":"fc4ad6209eb514fd9cc473cb4d24d33e",
"str":"z7xUHSllnp78SMKh",
"org_id":"142",
"_ApplicationId":"lab4",
"_JavaScriptKey":"lab4",
"_ClientVersion":"js_xxx",
"_InstallationId":"89fb16cb-0b4b-b32b-fdcd-393485337d92"
}
url = 'https://xxxx/login'
r = requests.post(url,headers=headers,json=data)
print(r.json())
为了安全,暂时不透露具体链接了。登录返回的数据为用户个人数据,结果如图
主要部分就是登录后获取它的cookie即可,进入后,选择楼层
不同;楼层对应的id不同,抓包很容易发现其对应关系
'二楼北自习室': '35',
'二楼南自习室': '36',
'三楼北自习室': '37',
'三楼南自习室': '31',
随机点开一个进入,如图所示
经过研究发现,这里注意的是开始时间以小时为整数取时间戳,比如现在的上午9:59,则这里的时间依然是9点整开始,这里注意,因为后面的begintime字段就是这样对应的,使用时长以一小时3600为单位,对应后面的durition字段,点击开始选座,如图·
查看其返回的response字段,如图
接下来就到最好的确定预约界面了,点击预约,查看器数据包
整个过程无任何验证加密的,过程梳理虾,先登录获取cookie,然后选择楼层post获取该楼层下你想要的座位号对应的id,接着post提交你要预约的座位数据即可实现预约,整个过程很简单,就3个post请求,具体代码就不发出来了,发现学校的网站很大漏洞,绝大部分初始密码都没改,我都可以直接修改取消他们的座位预约了,还有用户数据的登录了名字电话号码也可应直接拿到,太无语了
点击此处登录后即可评论