本打卡脚本仅供学习交流使用,请勿过分依赖。 开发者对使用或不使用本脚本造成的问题不负任何责任,不对脚本执行效果做出任何担保,原则上不提供任何形式的技术支持。
-
新增:
- 20220321: 适配新的封校报备格式.
- 20220319:适配新的健康打卡数据, <健康打卡>默认居住地为中校区. <封校报备>默认跨校区目的地为所有校区.
- 20220318:更改<出校报备>功能, 适配新的<封校报备>功能.
- 20210917:增加自动检测并报备<出校报备>功能.
- 20210821:使用pytesseract识别登录二维码,支持二维码验证登录打卡。
- 20210818:适配新的打卡数据, 将新增的敏感信息以参数方式传递, 放入secrets中。
-
原fork:
- 20200831:增强稳定性
- 20200827:增加打卡失败重试功能,增加License
- 20200826:为配合学校最新规定,切换至Github Actions实现一天三次打卡
-2. 请自行修改report.yml,以适配自身需求。fork后原始的report.yml有两条python命令可以给两人打卡,如不需要请删除第二个以免一直报错。
-1. 数据有两个,一个是在家data_athome.json(需要自行修改地址),另一个是在学校data_atschool.json(默认参数住中区)。请在report.yml中自行修改设置。
-
写在前面:请在自己fork的仓库中修改,并push到自己的仓库,不要直接修改本仓库,也不要将您的修改pull request到本仓库(对本仓库的改进除外)!如果尚不了解github的基本使用方法,请参阅使用议题和拉取请求进行协作/使用复刻和使用议题和拉取请求进行协作/通过拉取请求提议工作更改。
-
将本代码仓库fork到自己的github。
-
根据自己的实际情况修改
data.json
的数据,参看下文。开发者不保证这些模板的正确性。 -
将修改好的代码push至master分支。如果不需要修改
data.json
,请在README.md
里添加一个空格并push,否则不会触发之后的步骤。请在自己的仓库中修改,不要pull request到本仓库! -
点击Actions选项卡,点击
I understand my workflows, go ahead and enable them
. -
为保护隐私,需要将私人信息放入secrets中传递参数。点击Settings选项卡,点击左侧Secrets,点击New secret,创建名为
STUID
,值为自己学号的secret。用同样方法,创建名为PASSWORD
,值为自己**滑稽大学统一身份认证密码的secret。并接着创建EMER_PERSON
EMER_RELA
EMER_PHONE
三个secret,分别代表打卡界面的紧急联系人,与ta的关系,紧急联系人电话。这几个值不会被公开。 -
默认每6小时打卡一次。如需选择其它时间,可以修改
.github/workflows/report.yml
中的cron
,详细说明参见安排的事件,请注意这里使用的是国际标准时间UTC,北京时间的数值比它大8个小时。建议修改默认时间,避开打卡高峰期以提高成功率。 -
在Actions选项卡可以确认打卡情况。如果打卡失败(可能是临时网络问题等原因),脚本会自动重试,五次尝试后如果依然失败,将返回非零值提示构建失败。
-
在Github个人设置页面的Notifications下可以设置Github Actions的通知,建议打开Email通知,并勾选"Send notifications for failed workflows only"。
要在本地运行测试,需要安装python 3。我们假设您已经安装了python 3和pip 3,并已将其路径添加到环境变量。
apt install tesserart
pip install -r requirements.txt
pip install pillow pytesserart
python report.py [DATA] [STUID] [PASSWORD] [EMER_PERSON] [EMER_RELA] [EMER_PHONE]
其中,[DATA]
是存放打卡数据的json文件的路径,[STUID]
是学号,[PASSWORD]
是统一身份认证的密码明文。EMER_PERSON EMER_RELA EMER_PHONE,分别代表打卡界面的紧急联系人,与ta的关系,紧急联系人电话。
使用 F12 开发者工具抓包之后得到数据,按照 json 格式写入 data.json
中。
- 登录进入打卡系统,打开开发者工具(Chrome 可以使用 F12 快捷键),选中 Network 窗口:
- 点击确认上报,点击抓到的
daliy_report
请求,在Headers
下面找到Form Data
这就是每次上报提交的信息参数。
-
将找到的 Data 除
_token
(每次都会改变,所以不需要复制,脚本中会每次获取新的 token 并添加到要提交的数据中)外都复制下来,存放在data.json
中,并参考示例文件转换为对应的格式。 -
通过push操作触发构建任务,检查上报数据是否正确。
MIT License
Copyright (c) 2020 BwZhang
Copyright (c) 2020 Violin Wang
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.