云端上报从开发到部署大致分为以下几个步骤:
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点运行,时间规则可以看下图