云端上报从开发到部署大致分为以下几个步骤:
1.通过抓包软件获取学工系统每日上报的的各项信息
2.模拟登录
3.模拟上报
4.获取上报的反馈,由于判断给手机推送消息的内容
5.给手机发送信息(信息分三种:上报成功,已经上报过了,上报失败)
6.部署至云端服务器,每天定时运行
1.抓包
Fiddler是一个很常用的抓包软件,从官网可以免费下载,但是我不建议下载官网版本,原因是界面英文新手看不懂,一些网站抓包需要安装证书,没有免安装版本使用不方便,所以我提供了一个免安装的中文破解版,点击即用,需要的可以关注公众号农大CPU回复抓包获取。
我们首先运行Fiddler

再在电脑运行每日上报小程序

输入账号密码点击登录

点击登录的瞬间,左边出现的网址就是我们需要的信息,双击进入

获取上面这些信息后,通过代码获取token
url = 'https://zhxg.qau.edu.cn/xuegong/api/UserAuth/GetManUserLogin'
header = {
'Host': 'zhxg.qau.edu.cn',
'Connection': 'keep-alive',
'Content-Length': '58',
'AppType': '4#1.1.10',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',
'content-type': 'application/json',
'Referer': 'https://servicewechat.com/wx9af32b509e88340c/36/page-frame.html',
'Accept-Encoding': 'gzip, deflate, br',
}
json = {
"ApplyType": 3,
"LoginName": "你的学工帐号",
"Pwd": "密码"
}
row = requests.post(url,json = json,headers = header,verify=False).json()
token = row["ResultValue"]["Token"]
接下来就是要获取上报信息


进入网址,获取上报信息

rurl = "https://zhxg.qau.edu.cn/xuegong/api/Epidemic/AddEpidemicReporting"
Header = {
'Host': 'zhxg.qau.edu.cn',
'Connection': 'keep-alive',
'Content-Length': '613',
'AppType': '4#1.1.10',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',
'X-Token': 'eyJhbGciOiJIUzI1NiJ9.eyJJZCI6IjM5ZjQ3YTFjLWQ0ODUtZDcyMC1mMjA2LTliNzJmM2I0NTE3NyIsIkV4cCI6MTYyNDU3NDM1OCwiQXBwbHlUeXBlIjozfQ.7owiLKSAijuzon3DfBmax89NIxgPj9cs90FfWyaElig',
'content-type': 'application/json',
'Referer': 'https://servicewechat.com/wx9af32b509e88340c/36/page-frame.html',
'Accept-Encoding': 'gzip, deflate, br',
}
Json = {
'City': '青岛市',
'Country': '中国',
'County': '城阳区',
'CurrentPosition': '正阳中路201号',
'Province': '山东省',
'Report': [
{
'ConceptTime': '39f50535-812c-1356-4ac8-4589db4be1d3',
'TemperatureId': '36.5-36.9',
'TemperatureType': '39faf477-3b69-f6d3-4eca-4a12726c4547',
'timeType': '上午'
},
{
'ConceptTime': '39f50535-b600-11d5-bd99-5b48e601ef9b',
'TemperatureId': '36.5-36.9',
'TemperatureType': '39faf477-3b69-f6d3-4eca-4a12726c4547',
'timeType': '中午'
},
{
'ConceptTime': '39f50535-df49-dbbb-f713-8ea5fbad1c26',
'TemperatureId': '36.5-36.9',
'TemperatureType': '39faf477-3b69-f6d3-4eca-4a12726c4547',
'timeType': '下午'
}
],
}
row = requests.post(rurl,json = Json,headers = Header,verify=False)
2.上报成功后推送消息给手机
这里我们采用邮件的方式,来给手机推送,首先我们来到我们的qq邮箱,设置->账户

打开图中的第一项服务,获取授权码,然后,我们在上报py文件中写一个函数
def emailgo(msg_to, subject):
msg_from = '**********@qq.com' # 发送方邮箱 passwd = '*************' # 填入发送方邮箱的授权码 # msg_to = '***********@qq.com' # 收件人邮箱 # subject = "python邮件测试" # 主题 content = "****************!" # 正文 msg = MIMEText(content) msg['Subject'] = subject msg['From'] = msg_from msg['To'] = msg_to try: s = smtplib.SMTP_SSL("smtp.qq.com", 465) # 邮件服务器及端口号 s.login(msg_from, passwd) s.sendmail(msg_from, msg_to, msg.as_string()) print("发送成功") except s.SMTPException as e: print("发送失败") finally: s.quit()
判断条件为
if r.text == "{"ResultValue":null,"ResultCode":1,"ErrorCode":2,"RequestMsg":"疫情数据已上报,请勿重复上报","
""DevelopmentMessage":null}":
mase = today + "已经上报过了!
"
emailgo("2205237662@qq.com", mase)
else:
mase = today + "每日上报成功!
"
emailgo("2205237662@qq.com", mase)
with open("log.txt","a+") as f:
f.write(mase)
运行python文件就可以成功上报,并收到邮件提醒了
3.部署到服务器定时运行
首先你要有一台属于自己的服务器(学计算机的大学生鼓捣鼓捣云服务器挺好),然后将代码上传到你的服务器上
我上传到了/data/目录下
然后命令行输入crontab -e

默认vim编辑器,添加定时任务

我这里是每天6点运行,时间规则可以看下图
