相信多数学校都会在假期要求每天进行健康打卡,今天就教大家如何简单的实现自动打卡
分为这几个部分:
微信公众号:喵提醒
Fiddler抓包工具安装
微信电脑端
腾讯云(或者其他能运行云函数的都行,比如:华为云、阿里云等),需完成实名认证
然后随便输入一个标题,点击保存
然后我们就能看到这样一个界面,记住界面里的这个喵码,待会要用到
Filddler官网:https://www.telerik.com/fiddler
官网下载不动的可以选择百度云:
链接: https://pan.baidu.com/s/1lLDNrBgWcXtcM5Vy07duCQ 提取码: vxdd
安装以后注册账号,界面是这样的
然后点击这个小齿轮
然后点击这个选项,选择“是”,就会有一个证书文件出现在你的桌面
这时候打开浏览器,这里以谷歌浏览器为例子:
点击右上角省略号→设置→隐私和安全性→安全
往下翻,找到“管理证书”并点击
然后选择刚刚桌面上的证书文件按步骤导入就可以了
到这一步,Fiddler工具的设置就完成了
4.点击我在校园小程序,能在Fiddler左侧找到这样的信息:
以student.wozaixiaoyuan.com/ 打头,点击进去
其中 User-Agent和Referer分别是你的设备和学校信息,这个不会变动,token相当于是你的用户令牌,用来证明身份
token会3到4天失效一次,所以要熟悉这个抓包的过程
把这三项信息记录下来
搜索腾讯云并点击进入
点击在弹出的界面里这样设置
然后在点击“函数服务”
将下面的代码粘贴进去并用你自己记录下来的信息替换其中用xxxx代替的地方:
import json
import logging
import requests, time, random
import datetime
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# 健康打卡提交后字典的参数,返回中文
def get_status(self):
if self['code'] == 0:
return "自动打卡(健康打卡)成功"
elif self['code'] == 1:
return "健康打卡时间结束"
elif self['code'] == -10:
return "Token已失效,请及时更换Token值"
else:
return "发生未知错误,请及时检查!"
class Do:
def __init__(self):
# 喵提醒通知
self.notifytoken = 'xxxxxxx' # 喵码 填入第一步申请的喵码
self.api = "https://student.wozaixiaoyuan.com/health/save.json" # 健康打卡 提交地址
self.headers = {
"Host": "student.wozaixiaoyuan.com",
"Content-Type": "application/x-www-form-urlencoded",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
"User-Agent": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", # 用Fiddler抓包的User-Agent值修改
"Referer": "https://servicewechat.com/xxxxxxxxxxxxxxxxxxxxxxx/xxx/page-frame.html", # 用Fiddler抓包的Referer值修改
"token": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxx", # 用Fiddler抓包的token值(需定期更换)修改 一个token大约能用3到4天
"Content-Length": "29",
} # 以上都可以在抓包中获取参数信息 可修改
# 健康打卡数据
self.data = {
"answers": '["0","0","0","0","0","xxxxxxx","0"]',
# answer是健康打卡的问题答案,从左到右依次是第一题到最后一题的答案
# 其中选择题的0代表第一个选项,1代表第二个选项,填空题直接打字进去就行
"latitude": "xxxxxxx ", # 维度
"longitude": "xxxxxxxx ", # 经度
# 填入你家所在位置的经纬度,直接在地址后面加经纬度 然后百度就知道了
# 都可以自己填经纬度了,改定位不用我教了吧
"country": "中国",
"city": "xx市",
"district": "xx区",
"province": "xx省",
"township": "xx街道",
"street": "xx路",
# 省市县路这些信息自己填进去就行
} # 位置信息也是通过抓包获取之前是记录
def run(self):
res = requests.post(self.api, headers=self.headers, data=self.data, ).json() # 健康打卡提交
msg = {
"id": self.notifytoken,
"text": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "\n" + "现在进行云端自动打卡" + "\n" + get_status(res),
"type": "json"
}
print(type(msg))
requests.post("http://miaotixing.com/trigger", data=msg) # 喵提醒的地址,会返回执行信息情况.
return True
if __name__ == "__main__":
Do().run()
def main_handler(event, context):
logger.info('got event{}'.format(event))
return Do().run()
点击函数配置 点击编辑
将相关参数修改成和图里一样,然后往下翻,点击保存
然后在代码页点击测试,在弹出的窗口点击部署并测试,如果运行成功会在喵提醒发送如下信息给你:
光设置到这里还不能够让它自动运行,我们点击触发管理
点击创建触发器,将触发周期改为自定义触发周期
下面的Cron表达式格式是这样的:
选择好自己想要的时间后点击提交,到这一步就彻底完成啦!就静静的等待它为你自动打卡了。
Fiddler的配置参考了这篇博客:“https://www.cnblogs.com/liulinghua90/p/9109282.html”
代码方面在这篇博客的基础上做了自己想要的优化:“https://blog.csdn.net/King_why_love/article/details/110860778”
既然能够自动打卡,是否也能自动干一些其他的事情呢?
比如:
班干部朋友们最痛恨的催打卡环节
我们可以设置自动提醒,每天定时提醒你哪些憨憨同学还没有打卡
实现方法和健康打卡差不多
头文件和健康打卡的保持一致即可
传入数据方面我们需要和健康打卡作出区别,健康打卡需要地址、问题等信息,查询未打卡人员只需要日期和type类型即可完成
但是健康打卡只是提交数据,查询未打卡人员需要获取数据并且对获取到的json数据进行处理
这里只是给大家一个思路,实现起来比健康打卡稍难一些,具体的实现效果是这样的: