使用腾讯云ServerLess函数 实现自动化疫情通填写

腾讯云ServerLess云函数 实现自动化疫情通填写

本人所在学校要求填写疫情通,(基于微信企业号的填写方式)
由于每天被催填写太难了,又比较懒,在同学推荐下,找到了一个帖子,介绍了以下的方法,通过实践与调试摸索,最后成功实现并且自动发送提示消息到本人邮箱,做出填报反馈,效果不错,写个帖子记录一下:

  1. 填写疫情通的相关源代码:
# -*- coding: utf8 -*-
# -*- coding: utf8 -*-
import json
import time
import requests
import smtplib
import datetime
from email.mime.text import MIMEText
//消息发送模块引包

def main_handler(event, context):

    sendEmail("xxxxxx:"+eval(requests.post(url=url, data=data, headers=headers).text)['m'])
    return("调用成功")

def sendEmail(message):
  msg_from = 'xxxxxxx@qq.com' # 发送方邮箱(此处默认是自己的邮箱给自己的邮箱发送消息,因此 上下填写一样的即可)
  passwd = 'xxxxxxx' # 发送方邮箱的授权码 授权码请看文章末尾的讲解
  msg_to = 'xxxxxxx@qq.com' # 收件人邮箱
  subject = "疫情通-xxx-xxxxxx" # 主题
  msg = MIMEText(message)
  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('[' + str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) + "]邮件发送成功,邮件内容:" + message)
  except s:
    print('[' + str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) + "]邮件发送失败,邮件内容:" + message)
  finally:
    s.quit()
url = "https://app.xxxxx/xxxx/xxx"
headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
      'Accept': 'application/json, text/javascript, */*; q=0.01',
      'Accept-Language': 'zh-cn',
      'Accept-Encoding': 'gzip, deflate, br',
      'Host': 'app.xxxx.xxxxx.xxx',
      'Origin': 'https://app.xxx.xxx.xxx',
      'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) '
             'Version/13.1 Safari/605.1.15',
      'Connection': 'close',
      'Referer': 'https://app.xxx.xxx.xxx/xxx/xxx/xxxx',
      'Content-Length': 'xxxx',
      # Cookie是身份标识
      'Cookie':'eai-sess=xxxxxxx;'
                'UUkey=xxxxxxxxxx;'
                'Hm_lvt_xxxxxxxxxxxxxx=xxxxxx;'
                'Hm_lpvt_xxxxxxxxxxxxx=xxxxxxxxx',
      'X-Requested-With': 'XMLHttpRequest',
      }
data = {
  'uid': '"xxxxxxx"', 'date': str(datetime.date.today() - datetime.timedelta(days=1)).replace("-", ""),
  'tw': '36.4', # 体温:第三项,36.5-36.9
  'sfcxtz': '0', # 是否出现
  'sfyyjc': '0', # 是否医院检查
  'jcjgqr': '0', # 检查结果确认
  'sfjcbh': '0', # 是否接触病患
  'sfcxzysx': '0', # 是否出现

    'address': 'xxxxxxxxxxxxxxx',# 地址
    'area': 'xxxxxxxxxxxx',
    'province': 'xxxx',
    'city': 'xxxxx', # 城市
  # 伽利略定位系统详情
      'geo_api_info': '{"xxxxxxxxxxxxxxxxxx"}',#根据自己抓包疫情通的发送内容进行实际填写,其他xxxx都是一样,根据自己的实际内容进行个性化定制
      'created': str(int(time.time())), # 创建时间
      'sfzx': '0', # 是否在校 否
      'sfjcwhry': '0', # 是否接触武汉人员 否
      'sfcyglq': '0', # 是否处于隔离期 否
      'sftjwh': '0', # 是否途径武汉 否
      'sftjhb': '0', # 是否途径湖北 否
      'fjsj': '0',
      'sfjchbry': '0', # 是否接触湖北人员 否
      'sfsfbh': '0', # 是否
      'jhfjsftjwh': '0', # *****是否途径武汉 否
      'jhfjsftjhb': '0', # *****是否途径湖北 否
      'szsqsfybl': '0',
      'sfygtjzzfj': '0', # 是否
      'sfjcjwry': '0', # 是否接触境外人员 否
      'id': 'xxxxxxxx',
      'ismoved': '0', # 与上次地点是否有不同
}
    

在实现自动话填写的前提是,自己在发送信息的时候自己打开fiddler抓包进行request和response监控,获取到各种headers和data 然后搬过来即可
(其实嫌麻烦也可以直接复制微信填写页面的链接地址,到浏览器登录,然后再浏览器页面填写之后,再提交之前打开f12开发者调试模式,找到network进行网络访问监控,一定要调整到每次请求完不刷新,否则你的请求可能瞬间被掩盖;这样就可以看到你的具体请求双击查看详情,复制相应的内容即可)

  1. 以上便是填写功能的是实现,接下来如何实现定时发送给的自动化呢?
    请出Tecent ServerLess 的云函数来帮忙:
    百度搜索腾讯云,注册账号并且进入云函数界面:
    在这里插入图片描述
    如图,便是已经打开了云函数,并且创建了一个云函数服务,这里还用不到serverless的应用部署,只用其中云函数即可:
    在这里插入图片描述
    如图,打开后,创建一个在线的python函数,把刚才的代码复制进来,点击测试,会向你的邮箱发送一个消息,这样就算成功了;

  2. 补充说明: 关于QQ邮箱的授权码,便是你打开QQ邮箱之后:
    在这里插入图片描述
    点击设置之后,选择账户设置:在这里插入图片描述
    在这里插入图片描述
    点击这里,生成授权码即可,此时会要求你进行相关的安全验证,因为有了授权码你就可以用第三方代码进行相关的邮件发送,而不依赖于QQ邮箱本身,要注意相关的安全隐私保护;

以上就可以成功发送是否填写成功疫情通了;
在这里插入图片描述
如果已经填报了,那会返回相应的反馈信息,若是没有填写, 就会返回已填写;大功告成!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daniel_Smith

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值