zoukankan      html  css  js  c++  java
  • [完全脱离手机]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点运行,时间规则可以看下图

  • 相关阅读:
    cocos3 单击
    cocos3 帧动画
    cocos3 动作和帧动画
    cocos3 场景切换特效
    cocos3 场景切换
    cocos3 error C2440
    c++ 匿名函数
    【leetcode】生成每种字符都是奇数个的字符串
    【leetcode】山羊拉丁文
    【leetcode】字符串的最大公因子
  • 原文地址:https://www.cnblogs.com/jerryleesir/p/14819957.html
Copyright © 2011-2022 走看看