一篇文章教你使用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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...