【写在前面】
小燕同学:领导经常会在群里发红包,但是我经常一忙就没抢到红包,哎,感觉错过了一个亿。
鹏哥:那我帮你写个微信自动抢红包的程序? (一脸心虚,完全不会呀!python的wechat库都已经被封了,根本连登录微信都还不会搞)
过 了N久以后,
鹏哥:正巧,在工作中 遇到了一个叫Sikuli的图形自动化工具,借来一用。
【效果如下】
【实现原理】
1、先大致简介下Sikuli软件
Sikuli本身是通过图形识别,将对应的图形与用户的操作进行相关联。
界面大致如下 :
通过自定义的函数,可以实现用户操作,比如find实现查找某一图片;click实现鼠标单击操作。从我个人的感觉来说,可以模拟一切界面自动化。
2、Sikuli安装:
Sikuli软件安装也是免费的,有两种方法可以实现。
(1)Sikuli官网下载:https://launchpad.net/sikuli/+download。当然需要安装JDK 8.0以上版本。然后可以通过sikulixsetup-1.1.3.jar联网下载。
在安装开始时,选择1和2,其他都用默认选项即可。
(2)Sikuli免网络下载:由于家里网络不好,无法通过联网下载。因此我又找到了免下载的安装包。
https://dl.pconline.com.cn/download/812455.html
3、微信抢红包的实现:
(1)问题一:桌面版微信看不到红包。
因为 sikuli软件可以在window系统上运行,因此一开始我安装了微信的桌面版。但是发现桌面版微信是看不到红包的,而且也不能发红包。
解决方法:
平时经常看各种主播玩手游,因此想到了通过安卓模拟器来使用微信。
没想到有一天,我解决问题是 因为我平时爱看直播,哈哈。对了,我用的是雷电模拟器。
(2)问题二:Sikuli自带 数太少,无法进行功能优化,如对已抢红包不处理等。
由于Sikuli自带函数比较少,只有一些最基本的查找、比对、单击、右键、双击、拖拉等按钮,因此对微信抢红包的优化暂没有投入研究。
从其他博客中 ,有看到,可能 将python selenium与sikuli结合起来使用,那下次再学习下。
(3)问题三:目前代码还未实现自动登录微信的功能,因此需要用户提前在雷电模拟器上登录进微信。
【示例代码】
我代码逻辑是每隔5S进行红包检测,如果发现有红包就进行抢红包;如果没发现红包,就sleep(5)。
由于最近发现CSDN上好多资料下载需要积分,因此就将源码上传到CSDN网站了,以此换积分吧。
Sikuli软件还是很简单的,可以自己快速入手的。
【写在最后】
革命尚未成功,吾将继续努力!