写在前面
2个多月了,本来以为疫情已经过去,谁曾想新的一波病势从青岛席卷山东,在这样的情况下,每日健康信息的准确填报变得异常重要,我们所提交的每一张form也绝对不是应付上级的一纸空文,而是对自己和他人生命的一种负责。此库用于各位同好间的技术交流,绝对不提倡也不会帮助任何人进行健康打卡。
用到的库
python语言,IDE我用的pycharm
import requests
思路
- 提交健康打卡数据时抓个包。
- 用requests库构造一个一样的表单,往服务器接口发送就完事了。
- 改一下表单里的日期,就可以打不同天数的了。
过程
- 点击提交,开始抓包
- 分析包里的字段
发现没有任何验证,直接构造form表单就行。
上代码
1. 打卡代码:
# https://bpm.qust.edu.cn/bpmx/platform/form/bpmDataTemplate/editData_xsjkdk.ht
#登录上边获取cookie
import requests
requests.packages.urllib3.disable_warnings()
cookiee='填写你的cookie' #cookie
xmm="王大炮" #姓名
xuehao="1005050104" #学号
xy="信息学院" #学院
bj="暴富学191" #班级
zy="暴富工程" #专业
nj="2077" #年级
sjh="110xxx" #手机号
dizhi="山东省青岛市xxx" #打卡地址
dm="1026259" #班级代码
zydm="0001" #专业代码
#========================上面这些是需要自己改的第一个地方
#请求地址
url = 'https://bpm.qust.edu.cn/bpmx/platform/form/bpmFormHandler/save.ht'
#请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36\
(KHTML, like Gecko) Chrome/83.0.2785.104',
'cookie':cookiee
}
def one():
#============在这改日期,(1,32)指从1号一直打卡到31号,下面的2022-03,需要自己改月份
for i in range(1,32):
riqi=i
fdata='{{"main":{{"fields":{{"xm":"{xmm}",\
"xh":"{xuehao}",\
"xy":"{xy}",\
"bj":"{bj}",\
"zy":"{zy}",\
"nj":"{nj}",\
"sjh":"{sjh}",\
"tjsj":"2022-03-{riqi} 10:25:32",\
"jssj":"2022-03-{riqi} 10:25:32",\
"xydm":"203",\
"zydm":"{zydm}",\
"bjdm":"{dm}",\
"dqszdz":"{dizhi}",\
"stzkqt":"","jrtw":"37.2℃及以下","jrstzk":"健康","gfxqyjcs":"否","ysbrjcs":"否","ysbl":"否",\
"yxgl":"否","jkmys":"绿色","brcn":"是"}}}},"sub":[],"opinion":[]\
}}'.format(xmm=xmm,xuehao=xuehao,xy=xy,bj=bj,zy=zy,nj=nj,sjh=sjh,riqi=riqi,dizhi=dizhi,dm=dm,zydm=zydm)
data={'formData':fdata,'tableId':'2000000000030000'}
#开始请求
m = requests.post(url,data=data,headers=headers,verify=False)
#返回响应码
print(m.text)
print("第",i,"日打卡成功")
# print(m.status_code)
one()#开始运行
需要修改两个地方:
一是提交的信息,像姓名、学号、学院等等,代码的开头标出来了。
二是提交的日期,在 one() 这个函数里。
2. 我还抓了另外一个接口,检测是否打卡成功
# https://bpm.qust.edu.cn/bpmx/platform/form/bpmDataTemplate/editData_xsjkdk.ht
import requests
requests.packages.urllib3.disable_warnings()
cookiee='填写你的cookie' #cookie
xuehao="123456789" #你的学号
#请求地址
url = 'https://bpm.qust.edu.cn/bpmx/platform/bpm/bpmFormQuery/doQuery.ht'
#请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36\
(KHTML, like Gecko) Chrome/83.0.2785.104',
'cookie':cookiee
}
def checkone():
# ======================查询不同日期内是否都打卡
for i in range(1,10): #1号到9号
riqi=i
query = '{{"F_XH":"{xuehao}","F_TJSJ":"2022-03-0{riqi}"}}'.format(xuehao=xuehao, riqi=riqi)
data = {'alias': 'cxxsjtsfyjdk', 'page': 1, 'pagesize': 1, 'querydata': query}
m = requests.post(url,data=data,headers=headers,verify=False)
print("打卡情况:",m.text)
for i in range(10,32): #10号到31号
riqi=i
query = '{{"F_XH":"{xuehao}","F_TJSJ":"2022-03-{riqi}"}}'.format(xuehao=xuehao, riqi=riqi)
data = {'alias': 'cxxsjtsfyjdk', 'page': 1, 'pagesize': 1, 'querydata': query}
m = requests.post(url,data=data,headers=headers,verify=False)
print("打卡情况:",m.text)
checkone()
这个简单,
填写学号和cookie就行了
结果
打卡成功:
检测结果:
本篇结束,下次见。