说明
项目地址:BytePrince/Auto_Sign_For_NBU
本项目2020.05.03前所有代码均为本人原创,自2021.01.24后更新的代码参考子墨大佬的ZimoLoveShuang/auto-submit。至于为何不再重构自己去年写的代码,文末会提到。
本人修复了Bug,移除了不必要的代码并适配了宁波大学的每日信息填报打卡(理论上适配宁波大学所有学院)。
如果对你有帮助,请给BytePrince/Auto_Sign_For_NBU点上一个Star⭐。
使用方法
准备
Clone本项目
|
|
信息填写
- 在
config.yml
中填写自己的个人信息
示例如下:
users:
- user:
#此字段填写你的学号
username: '17600****'
#此字段填写你的今日校园登录密码
password: '******'
#此字段填写你的地址,即定位信息,如下图
address: 中国浙江省xx市xx区xx路
#email 接受通知消息的邮箱
email: xxxxxxxxxx@qq.com
#school 学校全称
school: 宁波大学
- 在
config.yml
中填写表单信息
表单内容可能会发生变化,后期如果表单内容更新频繁的话可能会写一个表单内容自动更新API,示例如下:
cpdaily:
#表单组默认选项配置,按照说明填写即可。
defaults:
#表单默认选项配置,按顺序,注意,只有标必填项的才处理
- default:
#表单项类型,对应今日校园接口返回的fieldType字段,1代表文本,2代表单选,3代表多选,4代表图片
type: 2
#表单项标题
title: 1. 今日您的健康情况是?(如有发热等呼吸道症状,请第一时间报备辅导员)
#表单项默认值
value: 健康
- default:
type: 2
title: 今日您的甬行码颜色是?
value: 绿色
- default:
type: 2
title: 今日您是否存在其他异常情况?
value: 无
- default:
type: 2
title: 明日你是否有出行计划(离开居住地所在市)
value: 否
- 在
config.yml
中填写通知接口信息
此处用于每天自动打卡后发送通知。由于QQ或者邮件通知配置过程对小白来说会复杂一些,将这两种通知方式移除,仅仅保留ServerChan
通知。获取ServerChan
的密钥的方法详见文档。
部署
可以部署在自己的云服务器上或者直接使用云服务商的云函数。
云函数
参考文档。(学思路,不要照抄啊喂🤪)
云服务器(推荐)
当然,如果你手头没有云服务器,还是推荐使用云函数来执行脚本,毕竟可以省钱。
上传填写好个人信息的项目文件上传到你已经安装好
Python3.X
的云服务器;进入项目根目录,安装依赖;
1
pip3 install -r requirements.txt
手动执行脚本,测试是否可以正常运行,如果运行结果显示
模拟登陆成功...
,则说明环境已经配置完毕。1
python3 index.py
根据自己的目录,添加定时任务。笔者的项目根目录为
/opt
,每天下午15:01执行脚本,并作了日志的记录。1
01 15 * * * root /usr/local/bin/python3 /opt/index.py >> /opt/sign.log 2>&1 &
部署就到此结束了。
更新日志
2021年3月23日:
PushPlus功能波动,更换成钉钉机器人通知(钉钉机器人密钥获取请自行参考官方文档)
修复接口错误,默认配置为
宁波大学
,其他大学请自行在index.py中设定
设定办法:
- 访问 https://mobile.campushoy.com/v6/config/guest/tenant/list 获取本校
id
- 访问 https://mobile.campushoy.com/v6/config/guest/tenant/info?ids=学校id
- 获取
idsUrl
、ampUrl
、ampUrl2
填入index.py login_url
请自行设定
2021年1月30日:
- Serverchan近期服务不稳定,将微信通知改成更稳定的PushPlus
2021年1月28日:
修复离校签到改成常规签到了,已经修复,下载新的
index.py
替换原来的index.py
即可,配置文件config.yml
不需要变动。2021年1月27日:
- 移除了冗余代码,适配了宁波大学的校外每日签到任务;
- 修复了今日校园更换接口导致原有接口失效的问题;
- 修复了今日校园修改生成算法的密钥导致
Cpdaily-Extension
失效的问题; - 移除已失效的邮件通知功能,改为微信通知,需要调用Serverchan,配置方法详见注释;
- 完善了容错机制,增加了两处可能产生错误之处的告警通知;
- 完善了请求方式,不采用强制SSL;
- 完善了日志记录,去除了SSL警告;
- 完善了配置文件
config.yml
的注释,对小白更友好。
最后,说几句闲话:
想起之前一位从事信息安全行业的朋友说过的话:通常给自己的代码做安全,不会使用强度最大的加密方法(不要试图一劳永逸),而是会选用中等强度的加密方式,并且不定时地更换加密算法,以此来增加逆向的成本而不仅仅是增加逆向的难度。
至于为何不再重构去年的代码了,因为今日校园的工程师为了刷KPI(为了让你们自己打卡),也在不定时地维护系统(更换打卡的接口)。想来无非也是以上的道理。今日校园升级版本后,抓包有了一定的门槛(需要用到基本的计算机网络
知识和一定的逻辑分析能力。当然难度也不是非常非常大,相信在座的各位只要是有学习过相关的知识,花费一定的时间(也许是两个小时,也许是两天…),也可以自己从头开始写一个打卡脚本。
可以,但没必要。毕竟,去年我是亲历者。
所有除了感情以外的事情,切记权衡成本和收益。如有必要,及时止损。
疫情还没有彻底结束,大家一定要做好防范措施,如果有接触高危地区高危人群,也请及时报告。这是你的责任,也是你的义务。
最后,祝每一个看到这里的朋友,新年快乐❤️!