暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

脚本自动化 | 我在校园日检日报自打卡

长安念姑苏 2021-09-28
6622
要步骤:
  • 抓包token值

  • 云函数部署脚本打卡

工具:

  • 电脑或笔记本

  • 电脑端微信

  • 任意浏览器

  • 腾讯云账号(实名认证)

一、抓包获取token值

抓包教程为利用Fiddler抓包配置教程

1、下载Fiddler

下载最新版fiddler ,可以在官网下载:

    https://www.telerik.com/download/fiddler

    公众号内回复【我的校园】获取

    2、安装及配置Fidder

    ① 正常安装,下一步,下一步,可以修改软件安装地址,安装完毕后,打开软件。

    ② 打开Fiddler,点击工具栏中的Tools—>Options

    ③ 点击https设置选项,勾选选择项

    ④ 点击Actions,点击第二项:Export Root Certificate to Desktop

    这时候桌面上会出现证书FiddlerRoot.cer文件,点击OK设置成功,关闭fiddler

    ⑤ PC端,在浏览器中导入证书FiddlerRoot.cer,以谷歌浏览器为例说明,在浏览器上输入: chrome://settings/ 然后进入高级设置,搜索管理证书

    ⑥ 在受信任的根证书颁发机构,对证书进行导入(一直下一步就行)

    ⑦ 重新打开fiddler,就可以在电脑上进行https抓包了。如果不成功请看参考文章后面解决方案

    3、获取token值

    登录电脑端微信,打开我在校园日检日报
    留意最下方出现的 
    student.wozaixiaoyuan.com
    双击打开

    出现的这一串token字符串值就是我们需要的了,第一步任务已经实现。如果后续登录失效了,重新抓包获取这个值即可,一般来说,这个登录能保持四天左右。

    二、云函数部署脚本打卡

    1、登录腾讯云

    如果没有用的过话先注册,实名认证!

    注册完成后在产品中搜索云函数,点击管理控制台

    2、创建云函数

    点击左侧的函数服务

    点击新建

    方式选择自定义创建,填写函数名称为autocheck,运行环境选择Python3.6

    然后底下点击完成

    3、获取喵码

    手机微信中搜索公众号喵提醒,注册后添加提醒,保存后获取喵码


    记住这个喵码待会代码中要用到

    4、Python代码修改

    根据注释修改代码
    分别为token值、打卡人昵称、喵提醒中的喵码和打卡人地址(可从Fiddler中看到之前打卡的位置信息)

    自动执行代码已更新2.0 支持中文提醒等,不是下面这个,获取需关注公众号回复【我在校园】
      import json
      import logging
      import requests, time, random
      import datetime


      logger = logging.getLogger()
      logger.setLevel(logging.INFO)




      class Xiao:
      def __init__(self):
      # Token 列表
      # 修改1
      self.tokenArray = ["将这段话替换为抓包软件中获取的Token"]
      # 如:
      # self.tokenArray = ["98bf740e-9f38-45c0-a163-688f7831b8a8"]
      self.tokenName = ["我的校园日检日报自动打卡"]


      # 喵提醒通知
      # 这里填喵提醒中获取的喵码
      self.notifytoken = '填写在这里'
      self.api = "https://student.wozaixiaoyuan.com/heat/save.json"
      self.headers = {
      "Host": "student.wozaixiaoyuan.com",
      "Content-Type": "application/x-www-form-urlencoded",
      "Accept-Encoding": "gzip, deflate, br",
      "Connection": "keep-alive",
      "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",
      "Referer": "https://servicewechat.com/wxce6d08f781975d91/147/page-frame.html",
      "token": "",
      "Content-Length": "360",
      }
      # 和我本校同地区的不用修改这里,如果其他地方请根据抓取的数据填写(详细方法请按照下面的教程获取)
      self.data = {
      "answers": '["0"]',
      "seq": self.get_seq(),
      "temperature": self.get_random_temprature(),
      "latitude": "34.3564216100 ", # 维度
      "longitude": "108.7080001800", # 经度
      "country": "中国",
      "city": "咸阳市",
      "district": "渭城区",
      "province": "陕西省",
      # "township": "某某街道",
      "street": "文林路",
      }


      # 获取随机体温
      def get_random_temprature(self):
      random.seed(time.ctime())
      return "{:.1f}".format(random.uniform(36.2, 36.7))


      # seq的1,2,3代表着早,中,晚
      def get_seq(self):
      current_hour = datetime.datetime.now()
      current_hour = current_hour.hour + 8
      if 0 <= current_hour <= 8:
      return "1"
      elif 11 <= current_hour < 15:
      return "2"
      elif 17 <= current_hour < 21:
      return "3"
      else:
      return 1


      def run(self):
      num = 0
      for i in self.tokenArray:
      self.headers["token"] = i
      print("Token:" + self.headers["token"])
      print(datetime.datetime.now())
      res = requests.post(self.api, headers=self.headers, data=self.data, ).json()
      time.sleep(1)
      print(res)
      print(random.randint(1,100))
      msg = {
      "id": self.notifytoken,
      "text": "Token" + '\n' + self.tokenName[num] +self.headers["token"] + '\n' + json.dumps(res, ensure_ascii=False),
      "type": "json"
      }
      print(type(msg))
      requests.post("http://miaotixing.com/trigger", data=msg)
      num = num + 1
      return True




      if __name__ == "__main__":
      Xiao().run()




      def main_handler(event, context):
      logger.info('got event{}'.format(event))
      return Xiao().run()
      将修改后的代码贴到index.py中
      其他同学想要替换定位地址,请按照说明获取自己的经纬度信息

      1.打开我的校园小程序,打开【每日健康打卡页面】,点击下面的位置定位

      2.利用抓包软件fiddler 找到restapi.amap.com
      开头的url链接

      3.点击右侧JSON,获取位置的JSON信息

      4.根据代码名称填写即可

      5、设置定时触发

      点击左侧触发管理,创建触发器

      起一个定时任务名称,将触发周期设置为最下面一个自定义触发周期


      参数值为0 0 7,13,19 * * * *

      分别代表着秒 分 时 日 月 星期 年

      这里参数表示每天的上午7点、下午1点和晚上7点定时触发我们的云函数


      ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍那么到了这一步基本上我们的自动打卡也就完成了,如果有什么其他问题,可以多百度一下,享受探索的快感。

      结尾

      关注我的公众号,号码内回复【我的校园】即可获取完整代码与所需工具,扫描下方二维码即可!
      点击使用小程序打开此篇文章

      扫描二维码获取

      更多精彩

      长安念姑苏


      文章转载自长安念姑苏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论