Skip to content

Dominic-KK/autocheck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌹我可以不在校园🌹

📢公告

小更新

📰VERSION 4.3.1

  • 修复已知bug
  • 针对本版本的Process exited unexpectedly before completing request (duration: 827ms, maxMemoryUsage: 18MB)错误,请首先在云函数编辑器内执行一次(点击编辑器右上的三角形),再通过部署代码 测试函数运行

📰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 -

📢 小喇叭

  • 学习过程中有任何疑问,请优先从文档最后的Q&A寻找答案,两位作者都有自己的事情,不一定能随时回复😄。

  • 如有学习之前版本的需求,可以点击分支或标签😗。

image-20221126161452095

🔖 To Do List

  • TG机器人提醒

📱 联系我们


🔔特别声明

❗ 本仓库发布的文章及代码等全部内容,仅用于测试和学习研究,禁止用于商业用途,作者不保证其准确性、完整性以及合法性,请使用者依个人情况自行合理判断。

❗ 因私自用于商业或非法用途,所产生的后果由使用者自负,均与作者无关。

❗ 本仓库项目所有文章及资源,除引用第三方内容外,禁止任何自媒体进行任何形式的转载、发布。

❗ 若任何单位或个人认为该仓库内容可能存在侵犯其权力的行为,应及时通知作者并提供身份证明、所有权证明,作者在收到之后将在第一时间删除相关内容。

❗ 疫情反复均属未知,请保护好自己,健康生活,认真打卡。

⭕ 无论您以任何途径、任何方式,一旦您一经下载或使用本仓库内容,即代表您 ✅已接受 以上声明,请知悉。


[TOC]


本教程灵感来源于生活。

**《食用前必读.txt》**真的很重要,建议阅读(不听作者言,吃亏在眼前)。

整体的实现逻辑是代码实现打卡,云函数实现自动,邮箱实现成功提醒。

有不少朋友问我有没有微信公众号提醒方式,目前不打算写(以后也不打算),相关缘由可以看看下面的Q5.为什么不用"喵提醒”、"oushplus推送加“"等公众号作为打卡提醒方式

所有文件以及相关代码已在文件列表上传,下载即可使用

image-20221126161312697

🐍Python 代码

1.经纬度获取

😆嗨害!不需要啦!

2.打卡题目

在代码文件中,预设了基本通用的题目答案,但打卡题目不一定都相同,若和下图的题目相同,则无需修改代码。否则一定要修改代码。

3.日检日报

此版本暂时没有这个功能。

4.健康打卡

代码中的“xxx”部分都需要手动填入,其中包括上面步骤中保存的那些内容,代码文件已上传至文件列表下载即可编辑使用

image-20230213001701025

5.定位签到

定位签到由作者 **小白**🔗 协助完成,点击链接跳转:我在校园定位签到🔗。

📈阿里云函数

注册过程就不再赘述,注册完记得完成实名认证,这里给出阿里云官网链接:阿里云(aliyun.com) 🔗

1.使用云函数

进入阿里云先登录,搜索函数计算FC

Untitled

开通并进入管理界面

Untitled

创建一个新服务,名称自定义,其他设置默认即可

Untitled

进入到刚刚创建的服务,创建一个新函数

Untitled

按照图示进行设置

image-20230212235221889

image-20230212235258925

这里尤其注意:一定要设置超时时间

image-20230212235343789

创建完成后双击打开代码文件,将代码粘贴进去,并根据要求填入信息

Untitled

执行代码

image-20230212234718606

不出意外的话会出现意外,请翻到最下面的Q11 新增依赖包fun_timeout 来解决

image-20230213000915056

成功则会在控制台看到信息,如果需要邮件和钉钉提醒功能,请翻阅下面的教程

image-20230212234939307

最后一定要部署代码

image-20230213001126998

2.定时触发

设置定时触发之后,就可以按照自己的时间定时运行一次代码,这样就解放了双手

触发器管理 → 创建触发器

Untitled

触发周期选择自定义,这里要输入 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中也讲解一下

Untitled

## 📬*提醒功能:QQ邮箱(自选)

获取授权码

用QQ邮箱发件也需要登录,不是用账号密码,而是授权码(更安全),接下来获取授权码

进入QQ邮箱网页版,进入设置,选择账户

Untitled

往下翻找到 POP3/SMTP服务,确保第一项是已开启状态,如果不是,点击后面的开启,然后选择下面的生成授权码

Untitled

根据提示验证后,得到授权码,和抓包步骤一样,把授权码复制保存下来备用。

Untitled

📳*提醒功能:钉钉机器人(自选)

创建机器人

首先需要有一个只有你自己的钉钉群(只是为了避免打扰别人啦),手机端钉钉面对面建群即可实现单人群的创建,这里就省略步骤了。

在群内新建一个机器人,点击群设置,找到智能群助手

image-20230212233353325

添加机器人

image-20230212233439383

image-20230212233459703

image-20230212233526567

image-20230212233744180

image-20230212233833900

之后将复制到的webhook链接、密钥都写入代码的对应位置即可。

🌃*上传图片(非必选)

最新的健康打卡可能存在上传图片的要求,如果检查并不是很严格,可以选择不上传图片。

如果不填写图片项,代码会默认上传一张纯白色的图片。

如果需要上传,首先准备好需要上传的图片(一张图片天天传),有必要的话可以p掉图片上的时间

打开云函数控制台,在图示位置鼠标右键,上传即可。

image-20220806104548153

之后,在代码修改10的位置写上图片全名,一定要全名,例如上图的QRcode.jpg,所以也建议把准备好的图改一个简单的名字。

🌐*Fiddler 抓包工具(非必选)

1.安装和配置

安装包下载:Fiddler 安装包和 Fiddler 证书生成器

蓝奏云链接:https://dominic.lanzouq.com/iKszLzyh5gh 🔗

下载后解压,先双击 FiddlerSetup.exe 进行安装,另一个是证书生成器,暂时不用。

打开 Fiddler ,点击工具栏中的 ToolsOptions

Untitled

点击 HTTPS 标签,勾选框住的三项,然后点击右边的 Actions,选择第二项,会弹出一个弹窗,点击确定,之后点击 OK 完成设置

Untitled

这时会发现桌面上多了一个证书文件(如下图),接下来马上会用到

Untitled

打开电脑上任何一个浏览器,在这里我用的是 win10 自带的 Edge,打开设置,找到证书管理,实在找不到也可以直接搜索

Untitled

点击管理证书,点击导入进入证书导入向导

Untitled

点击下一页继续

Untitled

点击浏览,选择要导入的文件

Untitled

在桌面找到刚刚导出的证书文件,点一下证书文件,选择打开

Untitled

之后一直点击下一步,直到完成证书导入。到这里配置工作基本完成,可以进行抓包了,刚刚导出在桌面的证书文件也可以删除

2.*抓取重要信息(非必选)

在本版本中,提供了所需的信息,(如不嫌弃)可以直接使用。

接下来从微信电脑端打开我在校园小程序,然后打开日检日报或者健康打卡,会发现 Fiddler 中显示了很多内容,我们找到gw.wozaixiaoyuan.com这一行(图是旧图,大概就这么个意思,看懂就好),双击打开,在右边选择Headers标签,复制 User-AgentReferer

Untitled

如果抓包失败,请参考最下面的Q8:Fiddler抓包失败以及Q9:抓不到小程序

复制的内容可以发给你的工具人小伙伴,或者你的小号,总之先保留下来备用。

3.*抓取图片(已弃用 供学习)

这一部分内容是一开始的4.0版本用到的,但是紧接着4.1就改了,这一部分内容感兴趣的童鞋可以看看研究。

最新的健康打卡存在上传图片的情况,如果检查并不是很严格,可以选择不上传图片。

如果需要上传,目前的解决方案如下:

由于目前打开系统有所限制,故需要使用fiddler抓取手机端的网络包,关于这一点网上的教程很多,本文在最后也提供了可用的参考:Q10.fiddler手机抓包

使用手机打卡,准备好需要上传的图片(一张图片用一年),有必要的话可以p掉图片上的时间,点击打卡之后,会在fiddler中看到如图信息,在下方切换到JSON栏,复制data后面的链接,这就是需要的图片了,之后填入代码中的对应地方。

image-20220805173541701

♿Q&A

最后在这里放一个问答板块,如果大家有什么问题可以在评论区提问(评论区可能回复不及时,推荐使用qq联系),我会定期更新在这里

重要:账号或密码错误

  1. 账号密码登录,代码有时候会报密码错误,如果出现错误,可以做一次修改密

码操作,新密码与旧密码可以一样

  1. 当然,如果还是报错,继续修改密码,(新旧密码可以相同,这里没有检测机制 ,所以只改密码,不用改代码里的密码),直到成功为止
  2. 如果手机端进我在校园发现需要重新登陆,这时候如果用账号密码登录了,那么 代码那边也会报错误,所以记得及时再改密码
  3. 这个目前没有解决方案,只能说没什么特别的事(比如签到)尽量不去开小程序

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号

Untitled

绑定好之后,点击微信上方的搜索,搜“QQ邮箱提醒”功能并启用,这样就可以在微信收到邮件了

Untitled

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_handlerhandler ,具体操作:在编辑器中按下键盘上的ctrl + H 调出查找替换,点击全部替换;之后填写触发器Cron表达式也应当注意两边的差异,详情参考Q1:Cron表达式

Untitled

7.阿里云函数计算FC免费额度

详情参考官方帮助文档 🔗

注意:免费额度仅适用弹性实例,并且函数使用过程产生的公网出流量不在免费额度中,但其费用极小,几乎可以忽略,如有产生相关费用,支付即可(几毛几分钱没有人会特别在意的吧)

免费额度

函数计算每月为您提供一定的免费额度(每月约46元,年度总计约552元)。您的阿里云账户与RAM用户共享每月免费的调用次数和执行时间额度。免费额度不会按月累积,在下一自然月的起始时刻,即01号零点,会清零然后重新计算。

公网出流量

函数计算根据每月使用的公网出流量总和计费。公网出流量费用=函数内数据传输流量×流量单价+函数请求响应流量×流量单价+CDN回源流量×流量单价。

  • 函数内数据传输流量:通过函数访问公网,函数向公网发起网络请求(Request)时所产生的流量。
  • 函数请求响应流量:通过公网调用函数,函数执行完成,返回响应(Response)时所产生的流量。
  • CDN回源流量:以函数计算作为CDN的源站,CDN回源时所产生的流量。
计量项 单价 免费额度(每月)
函数内数据传输流量 0.80元/GB
函数请求响应流量 0.50元/GB
CDN回源流量 0.50元/GB

8.Fiddler抓包失败

卸载证书 - 重启电脑 - 重装证书

卸载证书 - 重启电脑 - 重装证书

卸载证书 - 重启电脑 - 重装证书

抓包失败的原因是证书安装失败,需要重装,参考:Fiddler证书清除并重新配置🔗

注意:卸载干净后一定重启电脑,再重装!

卸载证书 - 重启电脑 - 重装证书

卸载证书 - 重启电脑 - 重装证书

卸载证书 - 重启电脑 - 重装证书

9.抓不到小程序

是由于小程序的更新,可以参考:fiddler抓包PC微信小程序失败解决方案🔗

该方案只可以临时使用,下次抓包可能还需要处理一次

10.fiddler手机抓包

推荐使用安卓手机,抓包时一定把电脑和手机连接同一个wifi

参考:使用Fiddler实现手机抓包 - EastJason - 博客园 (cnblogs.com)🔗

11.新增依赖包fun_timeout

云函数安装

在云函数控制台输入pip install -t . fun_timeout

image-20230213000619542

本地安装

在本机终端输入pip install fun_timeout

About

🌹我可以不在校园🌹

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages