Pwner's Blog

能全力以赴不尽力而为

0%

今日校园自动打卡 NBU

更新日志:

  • 2021 年 3 月 23 日:

    • PushPlus 功能波动,更换成钉钉机器人通知(钉钉机器人密钥获取请自行参考官方文档)

    • 修复接口错误,默认配置为宁波大学,其他大学请自行在 index.py 中设定

      设定办法:

      1. 访问 https://mobile.campushoy.com/v6/config/guest/tenant/list 获取本校 id
      2. 访问 https://mobile.campushoy.com/v6/config/guest/tenant/info?ids = 学校 id
      3. 获取 idsUrlampUrlampUrl2 填入 index.py
      4. 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 的注释,对小白更友好。

说明

项目地址:PwnerZhang/Auto_Sign_For_NBU

本项目 2020.05.03 前所有代码均为本人原创,自 2021.01.24 后更新的代码参考子墨大佬的 ZimoLoveShuang/auto-submit。至于为何不再重构自己去年写的代码,文末会提到。

本人修复了 Bug,移除了不必要的代码并适配了宁波大学的每日信息填报打卡(理论上适配宁波大学所有学院)。

如果对你有帮助,请给 PwnerZhang/Auto_Sign_For_NBU点上一个 Star⭐。

使用方法

准备

Clone 本项目

1
git clone https://github.com/PwnerZhang/Auto_Sign_For_NBU.git 

信息填写

  1. config.yml 中填写自己的个人信息

    示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
users:
- user:
#此字段填写你的学号
username: '17600****'
#此字段填写你的今日校园登录密码
password: '******'
#此字段填写你的地址,即定位信息,如下图
address: 中国浙江省xx市xx区xx路
#email 接受通知消息的邮箱
email: xxxxxxxxxx@qq.com
#school 学校全称
school: 宁波大学
位置信息
  1. config.yml 中填写表单信息

    表单内容可能会发生变化,后期如果表单内容更新频繁的话可能会写一个表单内容自动更新 API,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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: 否
  1. config.yml 中填写通知接口信息

    此处用于每天自动打卡后发送通知。由于 QQ 或者邮件通知配置过程对小白来说会复杂一些,将这两种通知方式移除,仅仅保留 ServerChan 通知。获取 ServerChan 的密钥的方法详见文档

部署

可以部署在自己的云服务器上或者直接使用云服务商的云函数。

云函数

参考文档。(学思路,不要照抄啊喂🤪)

云服务器(推荐)

当然,如果你手头没有云服务器,还是推荐使用云函数来执行脚本,毕竟可以省钱。

  1. 上传填写好个人信息的项目文件上传到你已经安装好 Python3.X 的云服务器;

  2. 进入项目根目录,安装依赖;

1
pip3 install -r requirements.txt
  1. 手动执行脚本,测试是否可以正常运行,如果运行结果显示模拟登陆成功...,则说明环境已经配置完毕。
1
python3 index.py
  1. 根据自己的目录,添加定时任务。笔者的项目根目录为 /opt,每天下午 15:01 执行脚本,并作了日志的记录。
1
01 15 * * * root /usr/local/bin/python3 /opt/index.py >> /opt/sign.log 2>&1 &

部署就到此结束了。

最后,说几句闲话:

想起之前一位从事信息安全行业的朋友说过的话:通常给自己的代码做安全,不会使用强度最大的加密方法(不要试图一劳永逸),而是会选用中等强度的加密方式,并且不定时地更换加密算法,以此来增加逆向的成本而不仅仅是增加逆向的难度。

至于为何不再重构去年的代码了,因为今日校园的工程师为了刷 KPI(为了让你们自己打卡),也在不定时地维护系统(更换打卡的接口)。想来无非也是以上的道理。今日校园升级版本后,抓包有了一定的门槛(需要用到基本的计算机网络知识和一定的逻辑分析能力。当然难度也不是非常非常大,相信在座的各位只要是有学习过相关的知识,花费一定的时间(也许是两个小时,也许是两天…),也可以自己从头开始写一个打卡脚本。

可以,但没必要。毕竟,去年我是亲历者。

所有除了感情以外的事情,切记权衡成本和收益。如有必要,及时止损。

疫情还没有彻底结束,大家一定要做好防范措施,如果有接触高危地区高危人群,也请及时报告。这是你的责任,也是你的义务。

最后,祝每一个看到这里的朋友,新年快乐❤️!

如果文章对你有用,可以请我喝杯咖啡~
  • 本文作者: Pwner
  • 本文链接: https://pwner.cn/posts/7fdc2e69.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!