/BUAAAutoUpdate

北京航空航天大学自动报平安脚本

Primary LanguagePython

BUAAAutoUpdate

北航打卡。 北京航空航天大学自动填写”疫情防控通“的每日上报信息。 Telegram

2021.03.06 学校打卡系统升级,感谢@Leib-Niz更新的in_school3.0.py

2020.09.23更新新功能——累计每日晚检未打卡名单

Telegram

新增功能

  • 可以统计到目前为止未打卡名单
  • 使用pyplot做图
  • 推送到邮箱
  • 需要统一认证账号有查看未打卡名单的权限

操作步骤

脚本依赖

  • Python 3.6 或以上
  • requests
  • openpyxl
  • matplotlib.pyplot

修改py脚本中的个人信息

your_name = '统一认证账号'
your_pwd = '统一认证密码'
dir_name = 'C:\\Users\\xxx\\xxx\\xxx\\' #存放数据文件的地址 注意要使用绝对路径
file_name = dir_name+time.strftime("%m-%d", time.localtime())
dataBase_name = 'dateBase.xlsx'

msg_from = 'xxx@qq.com'  # 发送方邮箱
passwd = 'xxxxx'  # 填入发送方邮箱的授权码
msg_to = 'xxxx@qq.com'  # 收件人邮箱

设计定时启动或手动运行

  • 运行后邮箱即可收到图片
  • dataBase.xlsx即为数据库文件

2020.08.14更新2.0版本

新增功能

  • 新增了out_school2.0.py和in_school2.0.py
  • 舍弃了selenium,改用更方便的request库
  • 可以通过腾讯云函数实现代码托管,参考了这位同学
  • 当然也可以只在本地运行,自动运行参考1.0说明文档

实现原理

  • 获取每次提交时的源代码并记录,之后每天按照记录的源代码重复提交

操作步骤

获取需要提交的信息

  • 使用chrome浏览器,打开并登录疫情防控通校外/疫情防控通校内
  • 如果无法获取定位,可以参考Chrome 自定位置
  • 校外同学:在页面中填好全部信息之后,打开F12控制台,输入vm.save(),然后查看network标签中的save项。点击后查看Headers标签,点击Form Data右侧的view source,复制备用。
  • 校内同学:在页面中填好全部信息之后,点击提交,然后查看network标签中的save项。点击后查看Headers标签,点击Form Data右侧的view source,复制备用。

修改py脚本中的个人信息

将个人账号密码、Server酱key和上面获取到的form_data替换掉对应的内容

your_name = '统一认证账号'
your_pwd = '统一认证密码'
wechat_key = '填入你的Server酱key'
form_data = '复制的form_data'

新建云函数

这里以腾讯云为例,进入腾讯云函数页面,点击侧栏的函数服务,新建一个函数。 函数名称随意,运行环境选择python3.6,创建方式选择空白函数即可,点击完成。 选择函数代码标签,将修改完的python脚本代码替换掉原来的hello world代码,选择保存并测试。测试绿色表明成功同时会收到微信推送提示,失败的话请检查相关字符串是否正确。

设置触发器

选择左侧触发管理,创建一个新的触发器。选择定时触发,出发周期自定义,自己根据想要自动提交的时间输入Cron数据即可。推荐使用0 1 0,8 * * * *即可,该触发时间为每天的0:01和8:01,防止因为系统或某方面原因而失败。

Enjoy

以下是1.0版本的内容

使用前提

  • 该脚本的工作方式为:通过ChromeDrive模拟打开填报页面,模拟鼠标点击位置、选择温度并提交
  • 分为校外版本out_school.py和校内版本in_school.py
  • 本脚本参考了这位同学,仅为学习开发使用,请勿瞒报谎报疫情信息,否则后果自负

脚本依赖

  • Python 3.6 或以上
  • selenium库(以及对应浏览器的驱动程序)

注: 如果您需要让该脚本定期自动运行:

  1. Linux/macOS 用户可以配置 cron 等工具。参考教程:
    1. https://www.ibm.com/developerworks/cn/education/aix/au-usingcron/index.html
    2. https://crontab.guru/
  2. Windows 用户可以使用系统的「任务计划」功能。参考教程:
    1. https://www.cnblogs.com/jjliu/p/11505720.html

windows 10环境配置

  • 建议使用Anaconda进行环境配置
  1. 下载并安装Anaconda,需要记住安装位置。
  2. 创建虚拟环境并激活,安装selenium库
conda create -n web python=3.6 
conda activate web
conda install selenium
  1. 安装ChromeDrive,注意版本对应:如果您使用的是Chrome版本85,请下载ChromeDriver 85.0.4183.38
  • 需要将解压出来的chromedriver.exe分别放到chrome浏览器的根目录和Anaconda对应虚拟环境的根目录
  • 例如C:\Program Files (x86)\Google\Chrome\Application D:\Anaconda\envs\web

将运行结果推送到微信上

本脚本支持使用「Server 酱」将运行结果通过微信推送到手机上。

您只需要根据官网上的介绍,在「Server 酱」官网登录并绑定微信后,将网站提供的 SCKEY 作为参数传入脚本文件即可:

wechat_key = 'your key'

运行示例

假设您北航统一认证的账户和密码是:

  • 用户名: user
  • 密码: password

修改您所需要用的脚本文件,例如out_school.py

user_name = 'user'
pwd = 'password'

运行即可

版权

使用 MIT 协议发布,著作权由代码的贡献者所有。