对自己的身体负责
前言
因为每天打卡很麻烦又容易忘,所以想到做这个
微信小程序本质就是网页,用的是JS+CSS+HTML5语言,但正常游览器是打不开的,之前托人整了一份校趣多小程序的源码,但并没有找到有用的东西,手机上抓包也抓不到数据。听闻新版PC版微信能打开小程序就立刻整来看了
过程
之前早有猜想打卡就是个POST发包,包里带上json格式文本就是我们打卡的内容,实际上发的是POST的默认格式 x-www-form-urlencoded ,原理都是一样的,所以我们要做的就是找到发到了哪,然后模拟发包就好了
通过电脑抓包软件我们可以看到,进小程序时,我们发送了3个包,这里用了authcode的加密运算,看返回可知得到了我们的用户信息,比如学号,名字等
/api/auth/weChatLogin
/api/auth/getUserInfoByAuthCode/
/api/auth/getContentList
当点击健康打卡,/api/redirect/d3b47307f6a104332ac6d14b8b22060d8d1998874c69809fe51b58e03eb8209686054713c0f3153ec74f6da8dffdc349/go?authCode=
我们可以看到访问时依旧带了authCode,然后返回了一个了https://mps.zocedu.com/corona/submitHealthCheck
前缀的链接并进行302跳转,跳转过去后会发现返回了一个cookie,Set-Cookie: JSESSIONID=XXXXX
而这个cookie就是我们打卡要传过去的,也就是告诉服务器,我们打卡打的是哪个账号
点击打卡,可以看到用POST访问/corona/submitHealthCheck/submit,请求头带上cookie, 带上格式是 x-www-form-urlencoded的 数据包 ,数据包里便是我们打卡的内容
更新:由此可知,cookie是从 authCode 得来的,因而直接记下 authCode ,在每次请求前去先请求cookie,再用cookie打卡,就能防止cookie会失效的问题(虽然 authCode 看似每次打开会变,其实是永久有效的)
打卡程序
链接: https://github.com/hd80606b/xiaoquduo
为了方便使用windows自带的计划任务来循环打卡,以及QQ机器人监控完成状态,特意写的是控制台程序,具体的如何操作看看github吧,那边的md文件写的很详细了
感谢评论的提醒,这里是需要开启https监听的,在Tools—Fiddler Options—HTTPS中勾选“Decrpt HTTPS traffic”即可,如图
已经没法抓到对应的cookie了
2021年2月17日测试,依旧是可行的,不仅是在github里那张图所截的(也就是文章里写的302跳转这里)其实下面有个post,发往 /corona/submitHealthCheck/getCurrentInfo 的地方也用到了cookie,在那里可以直接在请求头得到cookie。当你点击“健康打卡”时,这一套都是一起出来的,图更新在上面了
fiddler2需要开启https监听才能抓到对应的cookies,这个萌新可能不懂,你可以加到说明一下设置