写个脚本来定时健康打卡

再也不用辅导员提醒打卡。。

Posted by LEODPEN on 2020-11-23

海妖杀手好用吗


  使用和下载直接拖到最后就完事


发生甚么事了?

  疫情严重,学校也搞了个健康打卡小程序,要求同学每天打卡。但是常常会有同学忘记打卡,于是则会被早上10点微信消息+辅导员挂在群里双重提醒。。。

  我猜想部分同学是忘记了,部分同学则是早上10点还没起床,这个时候就需要一个”兄弟“帮忙打卡(当然你要保证自己是健康的。。。)

大意了,抓不到包

  首先就是一个Charles来抓手机https的包,但是现在的微信小程序很强,抓不得。紧接着看了很多其他解决方案,回头想尝试,发现是自己华为手机,于是只有另寻出路。

  偶然发现知乎有人说Mac的微信能打开小程序了,而我尝试多次还是冰冷一行”请在手机上打开“,一看版本已然最新,猜想因为下载源是AppStore,于是重新下官网版,果然针不戳。

  紧接着便是抓包分析,写shell脚本。

请求有大问题

  POST时候的内容无非就是校园卡信息、时间戳、token等等。当然token是客户端加盐了然后取了md5传上去的,不知道学校其他地方的token是不是也是这样,就不放出来了(真想看就反编译小程序吧)。

  本来小程序当天打卡后会显示已经打卡,然后不会再给打卡的按钮。但是似乎限制只在客户端存在。。。我换了下学号和姓名,轻松”帮“几个朋友”再打卡“(当然只是改了备注,没改温度、地点信息等)。然后再看打卡日历,发现显示的是最新的打卡信息了,说明取数据的时候可能还limit 1了一下。不管怎么说,这玩意儿只有希望大伙讲武德了,别乱搞别人的打卡信息。

区别对待

下载的脚本文件是不需要额外下载操作的

  为了机器能直接跑,不下载额外的包,要选择用机器内置的东西,所以Mac和Linux下脚本还是有点区别的。比如datemd5sum等等,毕竟Mac下用date是取不到纳秒的,还是只有用gdate(当然Mac也可以下载coreutils然后直接设置下软链接,如下)

1
2
brew install coreutils
sudo ln -sv /usr/local/bin/gdate /usr/local/bin/date

  然后有类似下图则说明OK了。如果要Mac下用md5sum也是类似的。

完事

  写好了之后自然是点到为止,但是想了一下还是决定加个密。于是用了shc来加密了脚本,注意加密的时候把脚本的用户权限,不是可执行的话改一下就行。

  最后scp传到服务器上去,写个定时任务跑,比如我设置的就是每天早上9:28打卡。【如果Mac下发现定时任务跑不了,大概率是其磁盘的权限不够,看这里解决】

下载使用

  下面是脚本文件的下载链接:

  建议直接新建一个文件夹将脚本放进去,每天的打卡状态及提示会在你调用后写到日志文件health.log中,不需要的话删除就行。

  假设服务器是腾讯云的,且所在文件夹名字为health:

1
2
3
4
5
6
7
8
9
10
11
# 到绝对路径/health目录下
# 一般腾讯云服务器上都已经会有一些自带的定时任务了
crontab -e

# 在已有的任务后下面一行【需要其他时间改一下表达式即可】
28 9 * * * /health/health_linux.sh.x <学号> <名字>
# 最后可以crontab -l 看看任务情况;不需要了直接在删掉这一行就行

#### #### #### #### #### ####
# 当然也可以直接单次调用,不用定时
./health_linux.sh.x <学号> <名字>