【寫在前面】
小燕同學:領導經常會在羣裏發紅包,但是我經常一忙就沒搶到紅包,哎,感覺錯過了一個億。
鵬哥:那我幫你寫個微信自動搶紅包的程序? (一臉心虛,完全不會呀!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軟件還是很簡單的,可以自己快速入手的。
【寫在最後】
革命尚未成功,吾將繼續努力!