蝌蚪签到源码的简单分析
最近学院的签到升级了,改成了微信小程序签到,用的是蝌蚪签到。这个是东华大学计算机专业的几个大三学生写的。很自然的,就想看看它的内部逻辑是怎么样的。本文只是单纯的技术讨论,没有别的意思。由于自己太菜,所以如果有错误还请指出。另外,最近deadline比较多,所以本文不会做过于详细的分析。
一、初窥
这个项目在GitHub上有(https://github.com/jiaogong/tadcap),但是作者有一年没更新了。但是显然现在微信中的版本比仓库里的要新的多。这个项目不开源了是一个遗憾。
目录结构目录结构和大多数小程序一样。app.js 文件的主要作用是充当微信小程序的脚本文件,监听处理小程序的生命周期函数、声明全局变量,调用框架提供的丰富的 API。app.json文件是配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题的重要文件。app.wxss文件是规定了小程序的样式。project.config.json主要是项目的一些配置参数。
可以看到还有三个目录,images主要是存储用到的图标素材,pages就是各个页面的代码,utils则是一些公用的脚本。
因为我主要是想看看签到过程,所以着重看pages目录下的对应页面的代码。
二、签到模块
pages目录下主要有这些目录:
pages下的目录结构因为时间有限,大概看了几个相关的页面。
创建签到部分,这份源码应该是最初的,没有加入动态二维码功能,所以就不看了。
创建签到二维码生成部分,比较遗憾的是这个是静态的,不是新版本中动态的二维码。
生成二维码扫二维码签到。
首先是默认用户是“abcd”,所以如果为默认值会创建一个id账户并且写入缓存。这样子,一个微信号只能签一个。
这份源码的逻辑好像是先直接根据定位信息来签到。
扫描二维码我们发现,onlyFromCamera的值为true,所以只能通过相机扫二维码,不能通过相册扫。
三、有趣的地方
这份源码有很多有意思的地方。这里列举其中的一部分。
四、总结
项目作者比较坑,只开放了前期源码,后期就闭源了。而前期源码中没有动态二维码这个功能,所以也就没有办法研究它的内部实现。关于蝌蚪签到,现在已知的结果主要是:(1)签到屏蔽了通过相册扫二维码的功能;(2)二维码动态更新,但这份源码没实现这个功能;(3)一个微信号可以签一个人,多个人信息会进行覆盖并且以最后一个信息为准。
总得说来,这份源码风格良好,写得也很规范,没什么花里胡哨的操作,并且实现的功能也比较简单,很适合微信小程序开发学习。等过段时间有空再好好探索。