一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

来源:https://www.cnblogs.com/qingdeng123/archive/2019/07/23/11234743.html
-Advertisement-
Play Games

本文介紹如何利用Python+uiautomator2 每日自動賺取支付寶積分。 支付寶的積分有啥用?誘惑誘惑你: 可以兌換視頻網站的VIP會員。 可以兌換各種優惠券。 可以在年底活動中兌換蘋果手機。 其他,一言難盡... 比如,我喜歡買知識課堂的課程。(知識付費時代,我用積分買知識) 好了,有了動 ...


 

一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

 

 

本文介紹如何利用Python+uiautomator2 每日自動賺取支付寶積分。

支付寶的積分有啥用?誘惑誘惑你:

  • 可以兌換視頻網站的VIP會員。
  • 可以兌換各種優惠券。
  • 可以在年底活動中兌換蘋果手機。
  • 其他,一言難盡... 比如,我喜歡買知識課堂的課程。(知識付費時代,我用積分買知識)

 

 

一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

 

 

一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

 

好了,有了動機,我們就來開始動手吧。

贏取積分的思路: 在支付寶里,有個猜股市漲跌的功能。每日13:00前,用賬戶的積分下註,如果猜中了漲跌,就能按比例贏到對手的積分。有時押200,贏400.

 

一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

 

 

從賭博的概率講,只要猜對的概率高於50%,就是穩賺不賠的,值得玩一玩。根據下圖可以找到支付寶猜漲跌功能。

 

一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

 

 

 

怎麼玩?

不懂股票,別慌。先說思路:股市開盤時間段每天上午9:30-11:30,下午13:00-15:00。所以,一般來說,每天中午吃飯的時候,你只需要打開股票軟體,看一下11:30收盤的漲跌趨勢,就可以大致猜出當天的趨勢。 註意:你必須在下午13:00之前下註,過了13:00就是預測第二天的漲跌了。

如果當天11:30收盤漲跌不明顯,你就賭很少積分,如果趨勢明顯,你就用200積分。就這麼簡單。

 

 

具體策略是:

1)根據當日漲跌方向,判斷漲跌方向。如當日漲>=0%, 則賭漲, 反之賭跌。

2)根據當日漲跌幅度,選擇賭積分的數量。

漲跌絕對值 >=0.4%, 200積分;

漲跌絕對值 在0.4~0.3之間,100積分;

漲跌絕對值 在0.3~0.2之間,50積分;

漲跌絕對值 <0.2, 20積分;

截止目前,手動應用策略的戰況如何呢?支付寶統計勝率83%,相當的高。(19.2月份,支付寶活動還可以選擇現金,不要積分)。如圖:

一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

 

 

但是遺憾的是,很多時候午飯吃High了,就忘記下註了。

 

 

怎麼辦?怎麼辦?

作為技(ai)術(zhe)控(teng)的人, 我決定寫個Python程式,找個舊安卓機,讓賺積分自動跑起來。當然這一切主要依靠Python強大的第三方庫uiautomator2功能,所以前期準備環境少不了。

  1. 安裝Python環境(建議3.6或3.7以上版本) + Pycharm編輯器(最新的免費社區版即可). 具體方法,可以百度,此處跳過細節。
  2. 確保電腦中有adb命令文件夾,並加入到環境變數中。adb具體可以在安卓開發工具的platform-tools下找到
  3. 為Python 安裝手機自動化UI工具 Uiautomator 2, 在dos下,使用pip 命令:
  4. pip install --upgrade --pre uiautomator2
  5. 安裝 Weditor (控制項屬性識別工具),完美搭配Uiautormator2.
  6. pip install --pre -U weditor
  7. 找一臺舊手機,打開開發者模式,並連接家裡wifi,(不需要插入SIM卡),安裝支付寶並登錄賬號至少一次。
  8. 保持手機USB 連接電腦,執行下麵的命令,自動安裝UIautomator2所需要的設備端程式:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch
  9. python -m uiautomator2 init
  10. 在dos命令下,為Python安裝第三方庫Tushare,以便輕鬆查詢上證指數漲跌。Tushare是一個免費、開源的python財經數據介面包,功能十分強大。這裡我們只用一點點指數查詢功能。
  11. pip install tushare
  12. 在dos命令下,啟動Weditor,定位支付寶猜漲跌各個UI的元素:
  13. python3 -m weditor

 

以上8個步驟都做了,理論上,我們就可以開始寫程式了。如果對於獲取控制項元素,不瞭解,請本文的底部參考鏈接。

開始寫Python 程式:

#導入必備的Python庫
import uiautomator2 as u2
import time
import tushare as ts
import schedule
from datetime import datetime 
# 連接設備,下麵連接用的序列號可由adb devices,手動查出來
d = u2.connect_usb("FUH0216830003040") # 華為 P9
# 喚醒設備d.screen_on() # turn on the screen
time.sleep(2)
# unlock screen,不能設置複雜圖形或者密碼哦
d.unlock( u")
time.sleep(2)# return to home
d.press("home")
# 等待
time.sleep(2)
# 啟動支付寶應用,併進入猜漲跌界面,支付寶package name, 百度可查
d.app_start("com.eg.android.AlipayGphone")
# wait until the ui object appears,以下元素名,均由Weditor獲得
if d(text=u"好的").wait(timeout=3.0): # return bool:
 d(resourceId="com.alipay.mobile.antui:id/ensure").click()
if d(text=u"點擊下方頭像登錄").wait(timeout=3.0): # return bool
 d(resourceId="com.ali.user.mobile.security.ui:id/userAccountImage").click()
if d(text=u"刷臉登錄").wait(timeout=3.0): # return bool
 d(resourceId="com.ali.user.mobile.security.ui:id/switchLoginMethodCenter").click()
if d(text=u"密碼登錄").wait(timeout=3.0): # return bool
 d(resourceId="com.alipay.mobile.antui:id/item_name", text=u"密碼登錄").click()
 d(resourceId="com.ali.user.mobile.security.ui:id/content", className="android.widget.EditText",instance=1).set_text("寫支付寶密碼")
 time.sleep(2)
 d(resourceId="com.ali.user.mobile.security.ui:id/loginButton").click()
if d(text=u"更多").wait(timeout=3.0):
 d(text=u"更多").click()
if d(text=u"股票").wait(timeout=3.0):
 d(text=u"股票").click()
if d(text=u"漲跌").wait(timeout=3.0):
 d(text=u"漲跌").click()
# 利用Tushare庫,從dataframe數據中,拿上證指數000001的漲跌情況
df = ts.get_index()
for i in range(26):
 if df.loc[i][''000001''] == index_code:
 up_or_down = df.loc[i]['change']
# 根據上午漲跌幅,選擇漲跌方向,並選擇用多少積分下註(20, 50, 100, 200)
if up_or_down >= 0: # 根據支付寶規則,大盤不漲不跌,視為上漲
 # 點擊漲按鈕
 d.click(0.281, 0.784)
 # 等待下個UI出現
 time.sleep(3)
 # 下麵根據漲的幅度情況下賭註
 if up_or_down > 0.4: # 如果當日漲幅超過4%,賭200積分;
 my_print("當日漲幅超過0.4%,賭200積分")
 d.click(0.741, 0.416)
 elif 0.3 < up_or_down <= 0.4: # 如果當日漲幅在0.4 和0.5之間,賭100積分;
 my_print("當日漲幅在0.3 和0.4之間,賭100積分")
 d.click(0.58, 0.416)
 elif 0.2 < up_or_down <= 0.3: # 如果當日漲幅在0.3 和0.4之間,賭50積分;
 my_print("當日漲幅在0.3 和0.2之間,賭50積分")
 d.click(0.415, 0.416)
 elif up_or_down <= 0.2: # 如果當日漲幅在0.3以下, 賭20積分
 my_print("當日漲幅在0.2以下, 賭20積分")
 d.click(0.25, 0.416)
else: # up_or_down <= 0, 估計這個位置是跌
 # 點擊跌按鈕
 d.click(0.727, 0.784)
 # 等待
 time.sleep(3)
 # 下麵根據跌的幅度情況下賭註
 if up_or_down < -0.4: # 如果當日跌幅超過5%,賭200積分;
 # 點擊200積分賭註
 my_print("當日跌幅超過0.4%,賭200積分")
 d.click(0.741, 0.416)
 elif -0.4 <= up_or_down < -0.3: # 如果當日跌幅在0.4 和0.5之間,賭100積分;
 my_print("當日跌幅在0.4 和0.3之間,賭100積分")
 d.click(0.58, 0.416)
 elif -0.3= < up_or_down < -0.2: # 如果當日跌幅在0.3 和0.4之間,賭50積分;
 my_print("當日跌幅在0.3 和0.2之間,賭50積分")
 d.click(0.415, 0.416)
 elif up_or_down <= -0.2: # 如果當日跌幅在0.3以下, 賭20積分
 my_print("當日跌幅在0.2以下, 賭20積分")
 d.click(0.25, 0.416)
 # 點擊確定按鈕,下註成功
time.sleep(3)
d.click(0.477, 0.759)

 

以上代碼(除了import段落) 封裝起來取函數名 guess_up_down。

勝利在望,再加一個函數負責每日15:31 檢查 當日輸贏情況,並選擇要積分還是要現金。函數名 index_final_check().

部分代碼如下:

 

my_print("上午收盤上證漲跌幅%.2f%%" % morning_change)
my_print("下午收盤上證漲跌幅%.2f%%" % final_change)
if morning_change >= 0 and final_change >= 0:
 my_print("賭漲成功!(根據支付寶規則,大盤不漲不跌,視為上漲)")
elif morning_change < 0 and final_change < 0:
 my_print("賭漲成功:最終如期下跌")
elif final_change < 0 <= morning_change:
 my_print("賭漲失敗:押註上漲,最終下跌!")
elif morning_change < 0 <= final_change:
 my_print("賭跌失敗:押註下跌,最終上漲!")
# 點亮屏幕,並重新登錄程式。
connect_device_wake_unlock()
# 先退出程式,因為只有重新進入,才能看到獲得積分還是現金。
d.app_stop("com.eg.android.AlipayGphone")
time.sleep(5)
# 重新進入程式
launch_app_enter_guess()
# 點擊界面,選擇領取積分還是現金。 
# 當然是選擇現金
d(description=u"兌換權益").click()

 

 

下圖,當天自動下註20積分,贏取40積分,換成了現金獎勵0.2(兌換權益)。

 

一篇文章教你使用Python自動賺取支付寶積分,網友:發家致富?

 

 

 

好了,程式看似功能實現了,但是還不行。我們總不能每天都手動運行程式吧? 那跟中午手動點一下區別不大呢。

所以,我們來定義一個主函數,利用schedule 方法按時調用我們的任務。

本次在主函數調用了一個today_is_holiday函數(具體代碼略過,代碼的實現方式為:周一到周五而且非法定節假日則為交易日,否則視為holiday),該函數檢查當前是否為交易日,如果是,則休息24小時,下一日繼續檢查。否則(是交易日)則定時調用 guess_up_down 和 index_final_check函數,完成任務。

def main():
 my_print("***程式跑起來無眠無休,每個交易日為您賭積分***")
 schedule.every().day.at("11:31").do(guess_up_down)
 schedule.every().day.at("15:15").do(index_final_check)
 while True:
 if today_is_holiday():
 time.sleep(24 * 60 * 60) # sleep 24個小時
 else:
 # 每10秒檢測一次
 schedule.run_pending()
 time.sleep(10)
if __name__ == '__main__':
 main()

  

 

好了自動運行效果如視頻(本文寫在周末,所以沒有真的下註,只看看效果):

程式運行起來,可以全年無休,自動在每個交易日下註,自動選擇拿積分還是拿現金。

需要註意的是,下午檢查積分到賬的時間,不能早於15:15,因為支付寶最早於15:15公佈結果。

如果想讓程式更酷一點,可以微信發送結果給自己(參見:簡單實用的微信消息推送神器:server醬),也可以寫日誌文件,記錄每日盈虧情況。

Enjoy~~啦啦啦~~~

 

提醒:

1)由於支付寶的下註UI的控制項元素無法被獲取,所以採用了坐標值方法來點擊絕對位置。如果換做其他手機型號,就必須自己重新獲取位置,並修改對應代碼。建議破舊二手安卓機(>=4.4 OS),來做這件事就好了。

2)uiautomator2 系統要求:

  • Python 要求 Android >= 4.4 Python >=2.7 || <= 3.7

3)我們測試機可以根據場景自動再次登錄支付寶,以防止你用其他手機做過登錄。要實現這點,需要你在代碼 set_text("寫支付寶密碼") 處,替換為你支付寶密碼。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本章內容主要分享多個module中的實體類集合生成到一個jar包中,並且發佈到遠程庫;這裡採用maven-assembly-plugin插件的功能來操作打包,內容不長卻貼近實戰切值得擁有,主要節點內容如: 多個module實體類集合打jar包 jar包打入本地庫 jar包上傳至遠程庫 多個modul ...
  • 位元組碼指令   Java虛擬機的位元組碼指令由一個位元組長度,代表著某種特定操作含義的操作碼以及跟隨其後的零至多個代表此操作所需參數的操作數所構成的。如果忽略異常,JVM的解釋器通過下麵的偽代碼可有效工作: 操作位元組碼   可以利用開源庫直接操作位元組碼,如CGLi ...
  • 手把手教你破解文件密碼、wifi密碼、網頁密碼 1、破解文件密碼: 有時候我們在網上下載一個壓縮包後,必須要關註或者支付一定費用才給你解壓密碼,實屬比較噁心。在這裡手把手叫你實現破解文件解壓密碼。 1、首先我們要導入模塊拿到能解壓的文件包 1 import zipfile 2、拿到你需要解壓的文件( ...
  • 一、 1.連續列印舉例 #打開文件,三個字元一組讀出來內容,然後顯示在屏幕上,每讀一次,停一秒 2.tell函數 (1)用法:用來顯示文件讀寫指針的當前位置 (2)格式:文件.tell() (3)舉例: (4)註意:上面的例子說明瞭:tell返回數字的單位是byte;read是以字元為單位的 3.文 ...
  • 第十章 實戰:ELK日誌分析系統 ElasticSearch、Logstash、Kibana簡稱ELK系統,主要用於日誌的收集與分析。 一個完整的大型分散式系統,會有很多與業務不相關的系統,其中日誌系統是不可或缺的一個,集中式日誌系統需要收集來自不同服務的日誌,對它進行集中管理存儲以及分析。ELK就 ...
  • Java中鎖的概念 自旋鎖 : 是指當一個線程在獲取鎖的時候,如果鎖已經被其他線程獲取,那麼該線程將迴圈等待,然後不斷判斷鎖是否能夠被成功獲取,直到獲取到鎖才會退出迴圈。 樂觀鎖 : 假定沒有衝突,在修改數據時如果發現數據和之前獲取的不一致,則讀最新數據,修改後重試修改 悲觀鎖 :假定會發生併發衝突 ...
  • 一、 函數list (1)定義:用打開的文件作為參數,把文件內的每一行內容作為一個元素 (2)格式:list(文件) (3)例子: 2.函數read (1)作用:按照字元進行讀取文件內容 (2)格式:文件.read(數字) 如果數字預設,那麼代表把所有的字元全都讀出來;如果裡面含有數字那麼代表一次性 ...
  • 9.9 線程理論 1、什麼是線程 線程指的是一條流水線的工作過程 進程根本就不是一個執行單位,進程其實是一個資源單位,一個進程內自帶一個線程,線程才是執行單位 2、進程VS線程 同一進程內的線程們共用該進程內資源,不同進程內的線程資源肯定是隔離的 創建線程的開銷比創建進程要小的多 同一進程內的線程們 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...