项目地址:Dominic-KK/autocheck: 🌹我可以不在校园🌹 (github.com)
📢公告
✔ 小更新
📰VERSION 4.3
⚠本次更新需要新增一个依赖包,具体操作翻阅最下面的Q11 新增依赖包fun_timeout
- 跟进新题型的更新😃。
- 新增钉钉机器人提醒,打卡失败时会
@你
哦😄。 - 新增登录态保持,避免每次执行时登录😄。
- 新增修改密码功能,密码错误时会发出提醒,并受到验证码短信,需要及时在控制台输入验证码😮。
- 重构代码,优化控制台输出,可读性更佳😃。
- 更新文档,替换旧的教程及步骤截图😃。
- 2023/2/12 16:21 -
📰VERSION 4.2-Bugfix
- 修复了几个已知Bug🐣。
- 2022.11.26 16:00 -
📰VERSION 4.2
- 新增题型,可以根据自己的需要选择对应代码😃。
- 重写了代码,同时格式化了控制台输出,实用性和可读性更佳😃。
- 由于业务更新,旧的版本逐渐无法使用,至此请全部转到本版本😮。
- 船新的
4.x
版精简了教程(尤其是去掉了复杂的抓包过程),增加了代码日志输出,美化了文档,使得整体更加好用和银杏🐣。
- 2022.08.10 21:30 -
🔔特别声明
❗ 本仓库发布的文章及代码等全部内容,仅用于测试和学习研究,禁止用于商业用途,作者不保证其准确性、完整性以及合法性,请使用者依个人情况自行合理判断。
❗ 因私自用于商业或非法用途,所产生的后果由使用者自负,均与作者无关。
❗ 本仓库项目所有文章及资源,除引用第三方内容外,禁止任何自媒体进行任何形式的转载、发布。
❗ 若任何单位或个人认为该仓库内容可能存在侵犯其权力的行为,应及时通知作者并提供身份证明、所有权证明,作者在收到之后将在第一时间删除相关内容。
❗ 疫情反复均属未知,请保护好自己,健康生活,认真打卡。
⭕ 无论您以任何途径、任何方式,一旦您一经下载或使用本仓库内容,即代表您 ✅已接受
以上声明,请知悉。
本教程灵感来源于生活。
**《食用前必读.txt》**真的很重要,建议阅读(不听作者言,吃亏在眼前)。
整体的实现逻辑是代码实现打卡,云函数实现自动,邮箱实现成功提醒。
有不少朋友问我有没有微信公众号提醒方式,目前不打算写(以后也不打算),相关缘由可以看看下面的Q5.为什么不用"喵提醒”、"oushplus推送加“"等公众号作为打卡提醒方式
所有文件以及相关代码已在文件列表上传,下载即可使用
🐍Python 代码
1.经纬度获取
😆嗨害!不需要啦!
2.打卡题目
在代码文件中,预设了基本通用的题目答案,但打卡题目不一定都相同,若和下图的题目相同,则无需修改代码。否则一定要修改代码。
3.日检日报
此版本暂时没有这个功能。
4.健康打卡
代码中的“xxx”部分都需要手动填入,其中包括上面步骤中保存的那些内容,代码文件已上传至文件列表,下载即可编辑使用。
5.定位签到
定位签到由作者 **小白**🔗 协助完成,点击链接跳转:我在校园定位签到🔗。
📈阿里云函数
注册过程就不再赘述,注册完记得完成实名认证,这里给出阿里云官网链接:阿里云(aliyun.com) 🔗
1.使用云函数
进入阿里云先登录,搜索函数计算FC
开通并进入管理界面
创建一个新服务,名称自定义,其他设置默认即可
进入到刚刚创建的服务,创建一个新函数
按照图示进行设置
这里尤其注意:一定要设置超时时间
创建完成后双击打开代码文件,将代码粘贴进去,并根据要求填入信息
执行代码
不出意外的话会出现意外,请翻到最下面的Q11 新增依赖包fun_timeout
来解决
成功则会在控制台看到信息,如果需要邮件和钉钉提醒功能,请翻阅下面的教程
最后一定要部署代码
2.定时触发
设置定时触发之后,就可以按照自己的时间定时运行一次代码,这样就解放了双手
触发器管理 → 创建触发器
触发周期选择自定义,这里要输入 Cron 表达式,例如 CRON_TZ=Asia/Shanghai 0 01 00 * * *
,表示每天00:01运行一次代码;例如 CRON_TZ=Asia/Shanghai 0 35 6,12,19 * * * *
,表示每天6:35、12:35、19:35各运行一次;其他设置保持默认即可,点击提交。如果需要其他时间打卡,可以直接更改 Cron表达式,为了方便大家更改,关于 Cron 表达式的语法在下面的Q&A
中也讲解一下
📬*提醒功能:QQ邮箱(自选)
获取授权码
用QQ邮箱发件也需要登录,不是用账号密码,而是授权码(更安全),接下来获取授权码
进入QQ邮箱网页版,进入设置
,选择账户
往下翻找到 POP3/SMTP服务
,确保第一项是已开启
状态,如果不是,点击后面的开启,然后选择下面的生成授权码
根据提示验证后,得到授权码,和抓包步骤一样,把授权码复制保存下来备用。
📳*提醒功能:钉钉机器人(自选)
创建机器人
首先需要有一个只有你自己的钉钉群(只是为了避免打扰别人啦),手机端钉钉面对面建群即可实现单人群的创建,这里就省略步骤了。
在群内新建一个机器人,点击群设置,找到智能群助手
添加机器人
之后将复制到的webhook链接、密钥都写入代码的对应位置即可。
🌃*上传图片(非必选)
最新的健康打卡可能存在上传图片的要求,如果检查并不是很严格,可以选择不上传图片。
如果不填写图片项,代码会默认上传一张纯白色的图片。
如果需要上传,首先准备好需要上传的图片(一张图片天天传),有必要的话可以p掉图片上的时间
打开云函数控制台,在图示位置鼠标右键,上传即可。
之后,在代码修改10
的位置写上图片全名,一定要全名,例如上图的QRcode.jpg
,所以也建议把准备好的图改一个简单的名字。
🌐*Fiddler 抓包工具(非必选)
1.安装和配置
安装包下载:Fiddler 安装包和 Fiddler 证书生成器
蓝奏云链接:https://dominic.lanzouq.com/iKszLzyh5gh 🔗
下载后解压,先双击 FiddlerSetup.exe
进行安装,另一个是证书生成器,暂时不用。
打开 Fiddler ,点击工具栏中的 Tools
→ Options
点击 HTTPS
标签,勾选框住的三项,然后点击右边的 Actions
,选择第二项,会弹出一个弹窗,点击确定,之后点击 OK
完成设置
这时会发现桌面上多了一个证书文件(如下图),接下来马上会用到
打开电脑上任何一个浏览器,在这里我用的是 win10 自带的 Edge,打开设置,找到证书管理
,实在找不到也可以直接搜索
点击管理证书
,点击导入
进入证书导入向导
点击下一页
继续
点击浏览
,选择要导入的文件
在桌面找到刚刚导出的证书文件,点一下证书文件,选择打开
之后一直点击下一步
,直到完成证书导入。到这里配置工作基本完成,可以进行抓包了,刚刚导出在桌面的证书文件也可以删除
2.*抓取重要信息(非必选)
在本版本中,提供了所需的信息,(如不嫌弃)可以直接使用。
接下来从微信电脑端打开我在校园小程序,然后打开日检日报或者健康打卡,会发现 Fiddler 中显示了很多内容,我们找到gw.wozaixiaoyuan.com
这一行(图是旧图,大概就这么个意思,看懂就好),双击打开,在右边选择Headers
标签,复制 User-Agent
、Referer
。
如果抓包失败,请参考最下面的Q8:Fiddler抓包失败
以及Q9:抓不到小程序
复制的内容可以发给你的工具人小伙伴,或者你的小号,总之先保留下来备用。
3.*抓取图片(已弃用 供学习)
这一部分内容是一开始的4.0版本用到的,但是紧接着4.1就改了,这一部分内容感兴趣的童鞋可以看看研究。
最新的健康打卡存在上传图片的情况,如果检查并不是很严格,可以选择不上传图片。
如果需要上传,目前的解决方案如下:
由于目前打开系统有所限制,故需要使用fiddler抓取手机端的网络包,关于这一点网上的教程很多,本文在最后也提供了可用的参考:Q10.fiddler手机抓包
使用手机打卡,准备好需要上传的图片(一张图片用一年),有必要的话可以p掉图片上的时间,点击打卡之后,会在fiddler中看到如图信息,在下方切换到JSON
栏,复制data
后面的链接,这就是需要的图片了,之后填入代码中的对应地方。
♿Q&A
最后在这里放一个问答板块,如果大家有什么问题可以在评论区提问(评论区可能回复不及时,推荐使用qq联系),我会定期更新在这里
!重要:账号或密码错误
- 账号密码登录,代码有时候会报密码错误,如果出现错误,可以做一次修改密
码操作,新密码与旧密码可以一样
- 当然,如果还是报错,继续修改密码,(新旧密码可以相同,这里没有检测机制 ,所以只改密码,不用改代码里的密码),直到成功为止
- 如果手机端进我在校园发现需要重新登陆,这时候如果用账号密码登录了,那么 代码那边也会报错误,所以记得及时再改密码
- 这个目前没有解决方案,只能说没什么特别的事(比如签到)尽量不去开小程序
1.Cron表达式
Cron表达式有7个字段,以空格分割
字段 | 区值范围和描述 |
---|---|
CRON_TZ | 这一部分为可选,不设置代表使用 UTC 时间。例如:CRON_TZ=Asia/Shanghai 代表北京时间。 |
秒 | 表达式中的第一位,取值范围为 0~59,不允许设置特殊字符。 |
分 | 表达式中的第二位,取值范围为 0~59,允许设置特殊字符 , - * /。 |
小时 | 表达式中的第三位,取值范围为 0~23,允许设置特殊字符 , - * /。 |
日期 | 表达式中的第四位,取值范围为 1~31,允许设置特殊字符 , - * ?/。 |
月份 | 表达式中的第五位,取值范围为 1~12 或 JAN~DEC,允许设置特殊字符 , - * /。 |
星期 | 表达式中的第六位,取值范围为 0~6 或 MON~SUN,允许设置特殊字符 , - * ?。 |
特殊字符说明
特殊字符 | 说明 |
---|---|
* | 表示任一或每一。例如:分钟字段 * 表示每分钟。 |
, | 表示列表值。例如:星期字段中 MON,WED,FRI 表示星期一,星期三和星期五。 |
- | 表示一个范围。例如:小时字段中 10-12 表示 UTC 时间从10点到12点。 |
? | 表示不确定的值。例如:如果指定了一个特定的日期,但您不在乎它是星期几,那么在星期字段中就可以使用问号这个特殊符号。 |
/ | 表示一个值的增加幅度,n/m表示从n开始,每次增加m。例如:在分钟字段中:3/5表示从3分钟开始,每隔5分钟执行一次。 |
示例
示例 | Cron 表达式 (UTC 时间) | Cron 表达式(北京时间) |
---|---|---|
每天12:00调度函数 | 0 0 4 * * * | CRON_TZ=Asia/Shanghai 0 0 12 * * * |
每天12:30调度函数 | 0 30 4 * * * | CRON_TZ=Asia/Shanghai 0 30 12 * * * |
每小时的26分,29分,33分调度函数 | 0 26,29,33 * * * * | CRON_TZ=Asia/Shanghai 0 26,29,33 * * * * |
周一到周五的每天12:30调度函数 | 0 30 4 ? * MON-FRI | CRON_TZ=Asia/Shanghai 0 30 12 ? * MON-FRI |
周一到周五的每天12:00~14:00每5分钟调度函数 | 0 0/5 4-6 ? * MON-FRI | CRON_TZ=Asia/Shanghai 0 0/5 12-14 ? * MON-FRI |
一月到四月每天12:00调度函数 | 0 0 4 ? JAN,FEB,MAR,APR * | CRON_TZ=Asia/Shanghai 0 0 12 ? JAN,FEB,MAR,APR * |
2.如何第一时间收到QQ邮件
如果每次都打开邮箱网页查看打卡状态,那自然很麻烦,最简单的方法就是手机下载QQ邮箱客户端,并打开消息提醒,这样每次代码运行结束都能及时收到打卡状态。如果不想下载软件,也可以用微信的QQ邮件提醒,不过这需要一些设置:
首先确保微信和QQ号已经绑定,找到【设置】-【账号与安全】-【更多安全设置】来绑定QQ号
绑定好之后,点击微信上方的搜索,搜“QQ邮箱提醒”功能并启用,这样就可以在微信收到邮件了
3.下载了QQ邮箱APP后,邮箱公众号收不到邮箱消息了
进入qq邮箱app,点开头像,选择新邮件提醒,拉到下面选择你的qq邮箱账号,然后关闭下面的仅在qq邮箱客户端提醒,然后公众号就可以正常接收信息了。
4.errorcode
若出现类似于{"errorCode":1,"errorMessage":"Traceback (most recent call last):\n ......,"statusCode":443}
的错误,可尝试重新建一个云函数,即重复步骤四
5.为什么不用”喵提醒“、”pushplus 推送加“等公众号作为打卡提醒方式
原因只有一个:麻烦。
用过的同学应该知道,这些提醒类公众号都有一个共性:需要发送激活48小时消息,也就是发送激活消息后才能收到提醒,这是为什么?这并不是公众号博主为了广告效应或是其他,而是由于公众号的后台限制:公众号后台无法回复用户超过48小时的消息(参考官方解释:客服帐号管理 | 微信开放文档 (qq.com) 🔗);那么自然无法发送打卡成功的提醒。
但是,如果真的喜欢用微信作为提醒渠道,可以参考上面Q2:如何第一时间收到QQ邮件
即可
6.如何将腾讯云函数的代码转移到阿里云函数计算FC
参考上文中使用阿里云函数的步骤之后,将腾讯云的代码复制到阿里云,修改代码中的main_handler
为handler
,具体操作:在编辑器中按下键盘上的ctrl + H
调出查找替换,点击全部替换;之后填写触发器Cron表达式也应当注意两边的差异,详情参考Q1:Cron表达式
7.阿里云函数计算FC免费额度
详情参考官方帮助文档 🔗
注意:免费额度仅适用弹性实例,并且函数使用过程产生的公网出流量不在免费额度中,但其费用极小,几乎可以忽略,如有产生相关费用,支付即可(几毛几分钱没有人会特别在意的吧)
免费额度
函数计算每月为您提供一定的免费额度(每月约46元,年度总计约552元)。您的阿里云账户与RAM用户共享每月免费的调用次数和执行时间额度。免费额度不会按月累积,在下一自然月的起始时刻,即01号零点,会清零然后重新计算。
公网出流量
函数计算根据每月使用的公网出流量总和计费。公网出流量费用=函数内数据传输流量×流量单价+函数请求响应流量×流量单价+CDN回源流量×流量单价。
- 函数内数据传输流量:通过函数访问公网,函数向公网发起网络请求(Request)时所产生的流量。
- 函数请求响应流量:通过公网调用函数,函数执行完成,返回响应(Response)时所产生的流量。
- CDN回源流量:以函数计算作为CDN的源站,CDN回源时所产生的流量。
8.Fiddler抓包失败
卸载证书 - 重启电脑 - 重装证书
卸载证书 - 重启电脑 - 重装证书
卸载证书 - 重启电脑 - 重装证书
抓包失败的原因是证书安装失败,需要重装,参考:Fiddler证书清除并重新配置🔗
注意:卸载干净后一定重启电脑,再重装!
卸载证书 - 重启电脑 - 重装证书
卸载证书 - 重启电脑 - 重装证书
卸载证书 - 重启电脑 - 重装证书
9.抓不到小程序
是由于小程序的更新,可以参考:fiddler抓包PC微信小程序失败解决方案🔗
该方案只可以临时使用,下次抓包可能还需要处理一次
10.fiddler手机抓包
推荐使用安卓手机,抓包时一定把电脑和手机连接同一个wifi
参考:使用Fiddler实现手机抓包 - EastJason - 博客园 (cnblogs.com)🔗
11.新增依赖包fun_timeout
云函数安装
在云函数控制台输入pip install -t . fun_timeout
本地安装
在本机终端输入pip install fun_timeout