记录一次自动化脚本实战。
背景:学校洗澡预约得七点才能开始预约,但是我们军训六点五十就要集合,所以每次都预约不上澡。于是已经三天没洗澡的我拿起了电脑。
学校用的一个公众号进行预约,点击预约地点后会出现一个写着网址的界面。。。。登陆网址并且输入帐密就可以进行预约了。
抓包查看
post具体内容
POST /brmclg/api/bathRoom/bookOrder?time=1662579724046&bookstatusid=555 HTTP/1.1
发现
- 网页虽然用的请求方法是post, 但是传参用的都是get方法。
- 主要参数只有一个时间戳,一个浴室时间id,还有一个token。
- 通过response发现每个时间段对应的浴室时间id
测试几个参数
1.时间戳
测试一下时间戳的作用。
时间戳乱改,浴室时间id不改。
查看预约记录,发现预约成功。
证明时间戳确实没啥用。。。。
2.浴室时间id
时间戳不变,测试浴室时间id。
预约记录都显示成功。
3.token
通过不同时间段的预约的request发现token不变,说明token在加密时并不包含浴室时间id。
开始编写自动化脚本
我命名为yuy.py
import requests,json
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'loginid': '*******',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'token': '************hb***iO==J-----J===========leH===i---wO-----------------------------------------------------------****************************',
'Content-Type': 'application/json',
'Origin': 'http://l*****ng.de===ng.com:8082',
'Content-Length': '2',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1',
'Referer': 'http://ligong.deshineng.com:8082/brmclg/html/main.html?v=3',
'Connection': 'keep-alive'
}
fileName='123.txt'
bidlist=[692,679,680,592,591,590,589,588,555,554,553,537]
def book():
for bid in bidlist:
resp = requests.post('http://====g.d===neng.com:8082/brmclg/api/bathRoom/bookOrder?time=1662593480874&bookstatusid='+str(bid),headers=headers, json='\n')
if __name__=='__main__':
for i in range(5):
book()
总的来说就是用python requests库添加header
定时任务
设置一个定时任务每天七点让脚本自动运行,这样就才真正可以解放双手了。
我用的是mac,win的资料好像比较好找一点,所以我在这就不过多赘述了,就只写mac的操作方法
1.给权限
用终端cd 到文件所在的目录,或者直接把路径打在命令行上。
sudo chmod +x yuy.py
2.设定定时任务
可以多看一点关于crontab的文档,这里用的是crontab。
crontab -e
进入到vi界面,按 i 进行编辑
随后输入定时任务,下面是我的。(刚开始见到可能会有点懵逼)
0 7 * * * /Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8 /Users/mac/PycharmProjects/pythonProject1/pyproject/yuy.py
这条命令组成如下:
时间 python路径 程序路径
相关资源
我之前主要是卡在python的路径上了
不过我给你们找到了
相关资源