MM再也不用担心自己上光荣榜了
如果此程序对你有用,右上给个一键三连吧😂(雾)
2021/1/24
鉴于完美校园对新设备做出登录限制,必须通过验证码登录,我们的登录策略也要做出相应调整。
此前配置过DEVICE_SEED
或DEVICE_ID
参数的小伙伴应该不受此限制影响。
由于GitHub Action不支持在线输入验证码,Server酱也不支持从微信反向发送参数,因此在线自助配置已失效。
解决方案:在执行到本页的设置Secrets
步骤时,通过上面的链接方法得到DEVICE_SEED
参数,将其填入Secrets列表,再继续本页的步骤。
之前已经配置过却也遇到这个问题的小伙伴,只需按照步骤更新DEVICE_SEED
值即可。
使用之前可以逛逛Issues区,查看项目的最新情况,因为代码里的自述更新起来比较麻烦,所以不涉及代码更新的消息我都丢Issues里了,遇到问题在那里也可以提出新问题。
- 登录
- 密码登录(建议)
- 验证码登录(首次配置需要)
- Token登录
- 打卡
- 使用最后一次打卡数据
- 随机体温范围
- 随机定位范围
- 自动填写表单
- 启动时间配置(手动调节)
- 消息通知
- Server酱微信通知
- 控制台输出
- Actions工具
- 在线参数获取
- 消息发送测试
教程包含图文内容,如果加载不出图请稍等片刻。
不需要下载代码,也不用购买服务器,超级白嫖怪。
- 下载完美校园app并登录账号,完成一次打卡,之后的自动打卡依赖本次打卡所填写的数据。
- 注册GitHub账号,程序运行在GitHub服务器。
点击页面右上角的Fork
按钮,将仓库复制到自己账号
之后的操作全部在Fork后的仓库中进行
Server酱用于配置微信通知和获取参数。
可以用Github账号登录,很快啊,啪一下就登录了。
然后绑定你的微信,顺便发个消息试试。
登录注册之后就可以看到你的SCKEY
,记下来等下一步用。
配置程序运行参数,支持参数列表见Secret配置
位置:Settings
=>Secrets
=>New reposltory secret
建议的配置值如下
名称 | 值 |
---|---|
TYPE | password |
USERNAME | 用户名/手机号 |
PASSWORD | 密码 |
DEVICE_SEED | 通过此方法获取 |
APP_ID | 打卡项目ID,暂时不填,等下一步获取 |
SCKEY | 上一步拿到的SCKEY |
注意:Actions功能可能默认关闭,如果关闭就先启用一下(怎么启用我忘了)。
位置:Actions
=>Get AppId
=>Run workflow
=>Run workflow
点击绿色按钮运行GetAppID程序,运行完成后手机上应该收到一条通知,类似这样:
打卡项目 | APP_ID |
---|---|
教职工打卡 | teacher |
学生打卡 | student |
其他人 | other |
看好你所在的组,记下后面的APP_ID
,回到第三步:设置Secrets将APP_ID
添加到Secrets中
所有参数设置完毕,接下来运行打卡程序进行测试
位置:Actions
=>Time Helper
=>Run workflow
=>Run workflow
如果配置正确,手机上应该收到打卡成功的通知,否则可能会收到异常报告。
如果SCKEY
没有配置或错误,结果会输出到Action日志中。
运行时间暂时无法通过参数配置,只能通过修改仓库中的.github/workflows/timer.yml代码来完成
找到timer.yml
中的如下位置
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
- cron: "0 4 * * *"
其中每一行cron
都代表一个启动时间,点击查看详细cron
配置文档。
┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 日期 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12 或 JAN-DEC)
│ │ │ │ ┌───────────── 星期 (0 - 6 或 SUN-SAT)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *
Github的cron时区为UTC+0,而我们是UTC+8,因此我们的时间需要减去8后才是cron中的时间。
对于配置- cron: "0 4 * * *"
,其运行时间为UTC+0的凌晨4点0分,也就是我们UTC+8时区的中午12点整,实际运行时间会因服务器排队而延迟。
⚠注意:有时打卡会因为网络原因而失败,若发现有失败的情况,建议设置一天打两次卡。
更新:测试失败,此模式在Github服务器上不可用。
每天打卡都登录可能有点奇怪,因此程序提供了令牌免登录功能。
经过前几步配置并正常打卡后,用同样的步骤运行Actions中的`Get Token`程序
位置:`Actions`=>`Get Token`=>`Run workflow`=>`Run workflow`
稍后微信将会收到可用于服务器的Token配置,样子如下:
|名称|值|
|-|-|
|TYPE|token|
|TOKEN|*****|
参照[设置Secrets](#设置secrets)步骤将值更新至Secrets,再次运行打卡测试
位置:`Settings`=>`Secrets`=>`Update`
如果正常,微信应该收到打卡成功或频繁打卡通知。
运行命令前先克隆仓库到本地,并安装node.js 14.x版本(测试平台)
然后运行npm install
命令安装项目依赖
运行参数通过环境变量传递,例如设置DEVICE_SEED
参数:
bash
export DEVICE_SEED=6666
cmd
set DEVICE_SEED=6666
获取打卡项目ID
npm run appId
测试你的Server酱正不正常。
npm run send <标题> <内容>
配置向导可以引导你配置关键参数,并输出配置结果
npm run setup
运行之后开始打卡
npm run main
这里包含了所有支持在Secret中配置的字段。
建议设置。
必须设置DEVICE_SEED
或DEVICE_ID
字段来固定设备IDDEVICE_SEED
或DEVICE_ID
字段来固定设备ID。
名称 | 类型/可选值 | 默认值 | 说明 |
---|---|---|---|
TYPE | password、sms、token | 登录类型,password:密码、sms:短信,token:令牌 | |
USERNAME | string | 用户名/手机号 | |
PASSWORD | string | 密码 | |
TOKEN | string | 令牌,根据教程获取 | |
APP_ID | string | 打卡项目ID,根据教程获取 | |
DEVICE_ID | string | 设备ID(二选一) | |
DEVICE_SEED | number | Math.random()*0xFFFF0000 |
设备ID生成种子(二选一) |
TEMP_RANGE | string | 35.4-36.9 | 体温范围(可选) |
SCKEY | string | Server酱SCKEY(建议) | |
TEXT_OK | string | 芜湖~打卡完成! | 成功提示信息(可选) |
USER_AGENT | string | ... | 登录使用的UA(可选) |
USER_AGENT2 | string | ... | 打卡使用的UA(可选) |
MODEL | string | HUAWEI INE-AL00 | 设备型号(可选) |
MODEL_CODE | string | INE-AL00 | 设备代号(可选) |
SYSTEM_VERSION | number | 9 | 系统版本(可选) |
SYSTEM_TYPE | android | android | 系统类型(可选) |
PROXY_HOST | string | 代理主机(可选) | |
PROXY_PORT | number | 代理端口(可选) | |
APP_VERSION | number | 10525101 | 完美校园版本(可选) |