建议:在打卡提交之前增加蓝码检查
ProudZJU opened this issue · comments
ProudZJU commented
具体内容
在原来submit()
函数的基础上
Lines 205 to 210 in 858f2fd
增加用户蓝码的检查。如果发现用户拥有蓝码,而打卡的地点不在杭州、宁波等浙大校区所在城市,则立即返回警告并停止提交打卡。
伪代码
private async submit(): Promise<void> {
let errMsg = await this.page.evaluate((__verifyCode: string | null): string | undefined => {
try {
const { vm } = window
if (HasBlueCode() && vm.oldInfo["打卡地点"] != ${浙大各校区所在地}) {
throw new Error("❌警告:本次打卡终止。你当前拥有蓝码,但是本次打卡所在地不是校区所在地,继续打卡将让你失去蓝码。如果你确定这么做,请手动打卡")
}
for (const key in vm.oldInfo) {
// if it is an empty value ('', null, undefined), skip assigning
if (!vm.oldInfo[key]) continue
vm.info[key] = vm.oldInfo[key]
}
if (__verifyCode != null) {
vm.info.verifyCode = __verifyCode
}
// confirm 包含一系列前端校验
vm.confirm()
// 确认弹窗:「每天只能填报一次,请确认信息是否全部正确?」
document.querySelector<HTMLObjectElement>('.wapcf-btn-ok')?.click()
// save 直接发出后端请求
// vm.save()
} catch (err) {
return (err as Error)?.message
}
}, this.verifyCode)
此改动的原因
我作为用户肯定是希望这个打卡服务启用后完全不用我管,但是为了减小风险,我在离校后会手动打一次卡,把定位改到我所在的城市。所以返校之后一旦忘记关闭Actions,就会导致第二天失去蓝码:sob:(本人已数次踩坑)
致谢
本来我是想直接为这个项目贡献代码的,奈何本人没有前端经验,虽然看得懂代码但是不知道如何下手,只好提交这个issue来麻烦开发者实现功能了。感谢upupming和其他的contributors!
Yiming Li commented
ProudZJU commented
不是,只要返校当天的申请通过就可以获得蓝码,无论当天是否打卡以及打卡的位置。所以我才踩了好几次坑:sob:
Yiming Li commented
如果使用cookie登录,应该是没有权限获取蓝码状态的。这会导致现在使用cookie方式登录的同学无法使用。