[完全脱离手机]python实现青岛农业大学每日云端自动上报并推送上报成功信息到手机

 

 

云端上报从开发到部署大致分为以下几个步骤:

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点运行,时间规则可以看下图

原文地址:https://www.cnblogs.com/jerryleesir/p/14819957.html