学校的健康打卡制度是国家疫情防控的重要一环,违反疫情防控有关规定需承担刑事责任.此项目仅供学习交流,不可用于违法违规用途.使用本项目造成的任何后果使用者自行承担
本项目通过腾讯云函数部署,可以实现每日健康日报的自动打卡,防止您因繁忙的工作或学习,亦或是睡懒觉而忘记了健康日报的填写。使用步骤如下:
- 下载Release中的
depency.zip
文件,此为云函数依赖文件 - 下载Release中的
run.zip
文件,此为运行函数 - 请注意run.zip中的文件版本较为落后,一些bug可能未及时修复,建议clone本项目到本地或是下载源码
使用以下命令clone本项目到本地
git clone https://github.com/TimeonFly/NJMU-Report.git
- 解压
run.zip
或clone本项目到本地后,安装好依赖,填写ID.yaml
文件 ,填写后运行getinfo.py
,此函数用于获取您昨天填写的信息,并自动去除几个由index.py
文件自动生成的参数 - 运行
getinfo.py
后,疫情打卡提交信息.txt
文件已有内容后,压缩文件夹,待上传云函数 run.zip
文件中的index.py
等文件版本较为落后,建议您下载源文件,替换run.zip
文件中的文件以保持最新版本
由于腾讯云函数目前仅支持python3.6及3.7版本,且3.7版本缺乏必要的依赖库,因此本项目使用Python3.6开发。建议您使用Anaconda创建虚拟环境,并进行虚拟环境下依赖库管理,建议使用Pycharm编辑并运行代码。
解压run.zip
后,在解压的文件夹目录下打开cmd
运行此命令conda install --yes --file requirements.txt
,安装依赖。关于将conda添加到环境变量,您可以访问此网页 。
如果您使用的是pip安装指令,在解压的文件夹目录下打开cmd
运行此命令pip install -r requirements.txt
,以安装依赖,关于将pip添加到环境变量,您可以访问此网页 。
在Pycharm中使用pipenv创建环境时,会自动根据requirements.txt
文件安装所需依赖,如果下载依赖库速度慢,您可以科学上网或将Pipfile
文件中的[[source]]
下的url
更改为https://mirrors.aliyun.com/pypi/simple
,
有关pipenv环境的创建及激活,您可以参考此链接或是自行搜索
详见requirements.txt
文件
由于腾讯云函数的限制,此处的pyyaml
库并不是最新版本,使用的是旧版本开发,如果使用最新版本可能出现报错的情况,如有报错请根据报错信息,自行搜索替换函数
requests==2.27.1
pyyaml==3.12
pydes==2.0.1
pycryptodome==3.10.1
在ID.yaml
文件中按备注填写网上办事大厅的用户名(username)、密码(password);发送邮件的邮箱(sender),邮件授权码(password),接受邮件的邮箱地址(receivers),以及邮箱smtp服务器(smtp_server)等信息。
目前腾讯云函数已开始进行收费,新用户前6个月免费,建议通过学生身份购买学生优惠的套餐
使用腾讯云函数实现自动打卡,部署步骤如下:(如果您无法看到图片,您可以参考此链接修改hosts文件,或是采用科学上网)
展开查看
-
点击上方腾讯云函数超链接,注册认证后,进入控制台,点击左边的层。
-
点击新建,名称随意,然后点击上传zip,选择release中的dependency.zip上传,然后选择运行环境python3.6,然后点击确定。
-
点击左边的函数服务,新建云函数,名称随意,运行环境选择python3.6,创建方式选择空白函数,按如下步骤后,点击完成。
-
点击层管理,点击绑定,选中刚刚创建的层,点击确定。
-
左边点击触发管理,创建触发器,名称随意,触发周期选择自定义,然后配置cron表达式,下面的表达式表示每天早上7点55分执行,如果需要自定义,请参考腾讯云函数cron表达式帮助文档
0 55 7 * * * *
-
然后就可以测试云函数了,绿色代表云函数执行成功,红色代表云函数执行失败(失败的原因大部分是由于依赖造成的)。返回结果是success.,代表自动提交成功,如遇到问题,请仔细查看日志。
-
新版本的云函数的时间参数经过重新调整,不再需要手动输入打卡时间,而改为自动获取。但云函数中的时区为 UTC+0,不是 UTC+8,在云函数中使用时间时需特别注意。需要将其设置为 UTC+8,可以配置函数的环境变量,设置
TZ
为Asia/Shanghai
。
截图采用网络上提供的api,每月有100张免费的额度,已够用,数据采用保存在内存中的方式。
本项目使用邮件提醒您自动打卡是否成功,可能日后会有微信提醒。请按打卡配置配置好ID.yaml
文件,邮件授权码以163邮箱为例。
如果你也懂得一些python
知识,欢迎fork
...定制属于你自己的脚本
学校的健康日报打卡有多个入口:
- 今日校园
- 微门户
- 网上办事大厅
由于安卓抓包较为繁琐,所以本项目是基于网上办事大厅这个入口开发的,如果代码运行有问题,你可以通过网上办事大厅进入健康日报打卡,按下F12打开开发者工具,进行抓包分析。此外,苏康码的截图需要浏览器渲染,受制于腾讯云函数的限制,很难在云函数中实现,如果你有好的解决方法,欢迎提交commit
目前截图的问题,考虑到截图还需要保存到本地,云函数也无法提供文件保存这一功能(或许可以保存为二进制文件于内存中),所以目前较好的解决方法是本地使用selenium
进行截图,但这个方法需要电脑每天定时开机,云端的话使用云服务器较好,但有一定的费用,鉴于学校已经很久没有收集截图了,所以暂时搁置,如果你需要提交截图的话,可以采用本地的方法
- 是否需要截图验证
- 苏康码截图
- ***截图
- 微信打卡提醒
- 时间参数匹配
此项目参考了@ZimoLoveShuang大佬的 auto-submit项目,尤其是本项目的encrypt.py
文件,非常感谢。
感谢JetBrains提供的 PyCharm 教育版软件
如果您有建议或者bug提交,您可以通过Issues提交或是通过此邮箱[email protected]联系我