声明:该项目已不再维护,完美校园可能有改动地方,此文章内容不一定适用,暂不提供技术支持,请酌情使用,谢谢!
1.功能概括
🎨 自动获取打卡信息(前提是有打过卡)
🎨 体温随机在36.1-36.6之间
🎨 打卡时间为执行时间
🎨 打卡结果会发送到你的邮箱
🎯 当前仅支持单账号,多账号过几天会出来的
目前仅在我自己的学校试验成功了,听网上说有的学校健康打卡还不一样,具体我也不是很清楚,所以大家首次执行的时候,一定要仔细确认下输出日志,有问题可以在Issues
中提问或发送到我的邮箱arecie@qq.com
。
♨️ 项目开源地址:HCI-AC
2.使用教程
💡 我这里用的是腾讯云-云函数
,没有腾讯云的请自行注册,怎么注册请自行百度,这里不多做说明。
2.1 创建云函数
2.1.1 环境选择
创建方式
选择自定义创建
函数类型
选择事件函数
函数名称
和地域
随便部署方式
选择代码部署
运行方式
选择Python3.6
2.1.2 代码部署
先去Gitee
下载项目压缩包:HCI-AC
下载好不要着急上传,因为Gitee
下载的会套一层文件夹,如果直接上传会新建失败,报找不到方法入口的错误
正确的做法是:将下载的压缩包解压后,不带文件夹直接打包,如图
一定要保证文件是在一级目录下,如果嫌麻烦,我这里也提供有打包好的:HCI-AC
然后在云函数项目代码
中选择本地上传zip包
,执行方法保持默认的index.main_handler
2.1.3 高级配置设置
在高级配置-环境配置
中,内存选多少都行,将执行超时时间设置为900
秒,环境变量中,按图上填入TZ
和Asia/Shanghai
2.1.4 触发器配置
创建触发器
选择自定义创建
触发方式
默认定时触发
定时任务名称
随便触发周期
选择自定义触发周期
关于Cron表达式
,你们可以自行百度是什么,这里我放几条用作参考:
每天早上8点:0 0 8 * * * *
每天上午10:30:0 30 10 * * * *
每天上午9点、下午2点:0 0 9,14 * * * *
会举一反三了吧?
配置好后点完成
等它创建好就行了
2.2 代码配置
2.2.1 安装依赖
依次输入:
cd src
pip install -r requirements.txt -t .
💡 一定要在src
目录下执行!
2.2.2 config.py配置
将config.py
中的手机号phone
和密码password
填成你自己,
关于邮箱配置,我们可以用QQ邮箱来发邮件,
发件人邮箱user
填你自己的QQ邮箱,收件人填要接收邮件的邮箱,发件人授权密码pwd
需要在QQ邮箱中申请,申请步骤:
电脑登录QQ邮箱后,点击设置-账户
,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
后,开启服务并点击生成授权码
,根据提示获取到授权码填入配置中即可。
💡 其他字段可以根据注释适当更改。
3.测试和部署
代码配置填完后,就可以测试和部署了。
首先我们先在index.py
中的结尾处,加上这一行代码:
# 下面两个参数1随便填,没有影响,但一定要规范!
main_handler(1, 1)
# 如果在src目录下第一行就不用输入了
cd src
python3 index.py
如果没报错,会提示验证码已发送,接着最下面会有一行Please Input SMS Code:
字样,这时候只要等待短信,短信到了后把验证码填到里面并回车就可以了,不出错的话下面就会提示打卡成功
等字样,因为我这边部署过了,所以用不了验证码登录,就不放图了。
将测试好的代码保存后,点击右上角的测试
进行调用测试,会提示部署后才能测试,点击是
代码部署后会自动开始测试,如果最后显示测试成功,说明代码调用没问题
测试成功后我们再去日志中看看是否打卡成功(成功的话你的邮箱会收到邮件,去看不看日志已经无所谓了),如果调用成功的日志中有成功
、打卡成功
字样,就说明部署没问题了
4.问题补充
🛠️ 如果日志中成功了,却没收到邮件,请检查邮箱配置是否正确,日志是否有报错。
🛠️ 部署后首次打卡,一定要校验打卡信息是否正确!
🛠️ 因为完美校园会检测设备,所有极有可能造成云函数中打卡后,手机端却提示新设备需要验证码登录,手机端登陆后,服务端也会再次让你用验证码登录,对于这个问题,如果你会的话,可以在config.py
中的deviceId
设备id改为你手机id,那么这个问题就可以解决了,不会的同学只能老老实实二选一了。
🛠️ 因为主修C#
、.Net
,Python
写的比较简单,如过代码有问题的话,请及时反馈,谢谢!
2021-08-25 问题补充:
📌 如果执行python3 index.py
的时候,报以下错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range
只要有'ascii' codec can't encode
这样的错误,那就是编码格式的错误,
在Python2中,默认编码格式是ascii
,在Python3中,默认编码是utf-8
,如果Python的编码格式为ascii
时运行index.py
,就会出现'ascii' codec can't encode
这样的错误,解决方式很简单,只要更改下Python的编码方式为utf-8
即可,首先我们要先确认下编码格式:
在控制台输入python3
或python
进入Python中,依次输入以下代码:
import sys
print(sys.getdefaultencoding())
如果输出结果为utf-8
,那就不用管了,如果是ascii
,那就需要改变下编码方式,
有一点需要说下,云函数的Python版本是2.7和3.6的,如果输入的是python
,那么使用的是Python 2.7
,如果输入的是python3
,那么使用的是Python 3.6
,以下方法仅适用于Python2
,所以Python 3.6
就可以绕过了,反正Python 3.6
默认的是utf-8
编码,也不需要改
先输入python
进入Python中,依次输入以下代码:
import sys
import imp
imp.reload(sys)
sys.setdefaultencoding('utf8')
如果更改后还是报错,那可能是系统编码也不是utf-8
,在控制台输入以下代码就可以解决:
export LC_ALL="en_US.utf8"
没有其他提示啊
我这输入完之后不提示Please Input SMS Code:怎么办??
@liu
AreCie 作者有其他报错信息么?
@湖北武汉
湖北武汉博主也可以私聊我,有偿。QQ:750211539
[root@ws-mcdufu-0 src]# python3 index.py
from Crypto import RandomTraceback (most recent call last):
File "index.py", line 13, in <module>
ModuleNotFoundError: No module named 'Crypto'
大佬怎么解决?0.0
{"result_":false,"message_":"手机号或者设备的该业务,已经大于今天的最大发送数","code_":"800115006"},这个是要等明天才能试了吗
@九三
easy money同问这个问题怎么解决呢
怎样可以多人打卡呀
为什么测试后显示没有输出日志啊(ฅ´ω`ฅ)
@123trsg
AreCie 作者检查下云函数是否开启日志功能
@AreCie
123trsg还是不会orz
@123trsg
123trsg弄好了,感谢大佬(ㅇㅅㅇ❀)
ERROR: Could not find a version that satisfies the requirement charset-normalizer==2.0.4 (from -r requirements.txt (line 2)) (from versions: none)
ERROR: No matching distribution found for charset-normalizer==2.0.4 (from -r requirements.txt (line 2))博主大大这个怎么解决啊
@lee
AreCie 作者requirements.txt文件里面的charset-normalizer换个版本
@AreCie
lee谢谢博主大大,成功解决了,大家下载的时候直接去码云下载,博主的整合包是老版本的,码云的版本按步骤执行一切正常,再次感谢博主大大OωO
@AreCie
电脑小白直接修改版本号吗
@电脑小白
番茄西红柿这个版本号改成多少啊?
博主,我运行index出错啊,但编码格式是utf-8,我在终端就运行不了index文件,就没地方输入验证码,我直接测试,就给我手机号发验证码,但我拿这个验证码有什么用呢,困惑了好几天了,希望博主帮我解决解决
@小彭友
安兄弟成功了没
@安
小彭友用了两个月了
@小彭友
。。。你每天都有验证码短信吗?
@。。。
小彭友没有,第一次验证就不用了
@小彭友
AreCie 作者输入这个试试,编码问题解决方法就这几个
export LC_ALL="en_US.utf8"感谢博主,一点只有初中学的基础就能搞定了,解决了我天天被团支书diss的烦恼
@冰糖橙佐料多
AreCie 作者不错,学以致用,加油
@Mr.Seaning
AreCie 作者