剖析一下"搶茅臺"指令碼底層邏輯

京東雲開發者發表於2022-11-21

本文作者:梁東東

前言: 今天你擼茅臺了麼? 擼茅臺已經成為社會現象,茶餘飯後討論的最佳實踐

2022年雙十一大促已經完美收官,兄弟姐妹克服種種困難與挑戰.. 備戰的會議室忙碌中帶著緊張,當峰值過後的喜悅不言而喻,今年備戰室裡聽著對面的兄弟講述了他搶茅臺的經過,以及對馬上來臨的整點茅臺活動期待,我也立馬參與進去,但是....沒搶到, 帶著種種的疑問,百度了下網上搶茅臺的種種手段與方法,發現裡面的貓膩還真不少,同時作為風險人也想不斷的透過各種技術手段識別發現風險,讓羊毛黨無處躲藏;也許,競爭對手比你想象中要更加的強大, 今天就帶你走近搶茅臺的指令碼,領略下TA們有趣的靈魂;

下面的列表是我總結網路上普遍存在的一些搶購的方式,這些方式的共性是:模擬單人或多人的操作行為,在最短的時間內完成搶購流程

剖析一下"搶茅臺"指令碼底層邏輯


一、webUI指令碼解析:

下面是一段網路上比較常見的某寶的一種搶茅臺的指令碼,底層邏輯是: 模擬人點選操作路徑,透過指令碼重放,迴圈實現定時、自動化、多併發等操作,最終實現程式碼替代人工操作搶走商品;

像人一樣控制瀏覽器:指令碼里是基於webdriver的一種瀏覽器驅動方式,可以透過驅動來控制瀏覽器實施控制頁面操作,例如裡面使用頻繁的find_elemnt_by_id是透過頁面ID識別的(ID可以透過控制檯元素定位獲取到),find_element_by_link_text透過精準匹配頁面上的文案,是辨識元素的一種方式;click()是識別元素後的滑鼠點選動作;

像人一樣進入登入:指令碼里面的run_driver方法,裡面呼叫了login_in方法,裡面的邏輯大概是模擬使用者輸入使用者名稱+密碼,點選登入按鈕後,實現登入;

像人一樣的迴圈搶購商品:搶購茅臺會有對應的搶購時間,這裡的times就是作者設定的搶購時間,迴圈體裡面會判斷當前時間是否大於等於times時間,如果出現大於等於後,會進入到第二個迴圈體,尋找下單的按鈕然後進行點選操作;在點選成功後繼續進入到提交訂單頁面,透過link_text識別文案,進行點選操作,最終成功搶購商品成功,進入到待付款頁面;else,如果搶購後無法結算,指令碼會透過驅動重新開啟商品頁面,然後選擇商品,重新走判斷時間的邏輯,以上。

剖析一下"搶茅臺"指令碼底層邏輯


二、後端介面指令碼解析

下面的程式碼是之前GitHub很火的搶購京東飛天茅臺jd_seckill指令碼,一度被很多人使用(現專案已經停止),底層邏輯:繞過前端UI,整體流程透過協議介面層串聯,可以透過自定義控制搶購的速度,最終實現程式碼替代人工操作搶走商品;

後端介面串聯整體流程實現登入:透過登入訪問二維碼頁面、獲取Token票據、校驗票據,獲取cookies

串聯介面實現搶購流程:點選“搶購”按鈕後,會有兩次跳轉302,最後達到訂單結算頁面,這裡返回第一次跳轉後的URL,作為商品的搶購連結;

剖析一下"搶茅臺"指令碼底層邏輯


三、APPUI指令碼 以及 adb命令方式 解析

APPUI指令碼方式 底層邏輯是:透過手機端(安卓、IOS或模擬器等)透過UI自動化工具或adb命令的方式控制app以及webview來模擬人操作,實施搶購的過程;

直接進入商品搶購頁面,透過adb命令操作搶購:os.system是py呼叫shell的一種方式,adb的全稱為Android Debug Bridge,就是起到除錯橋的作用; 透過adb shell input tap命令,可以控制手機操作點選手機區域(注:區域為傳遞的X,Y軸的座標),透過這種方式可以連續操作手機進行搶購活動

剖析一下"搶茅臺"指令碼底層邏輯


appUI指令碼攻擊方式,是透過工具化的手段,例如Uiauto.js、uiautomator、appium等等,實現的手機控制app(內建的webviewH5需要結合webdriver)實現模擬人為操作,實施搶購;

setup方法:封裝了驅動的一些必要引數,系統的型別、裝置名稱、app包名、首頁面活動頁、使用的瀏覽器驅動的地址(H5)等等關鍵核心驅動說明

appium:此案例裡面使用了appium工具操作,所以remote方式連結appium-server

核心模擬路徑:所有的操作路徑,業務邏輯封裝在test_search裡,透過座標點選 以及 H5頁面的操作,在while True裡面無限迴圈進行搶購商品

剖析一下"搶茅臺"指令碼底層邏輯


四、風險防守、識別篇:

再高明的攻擊手段,在智慧風控面前下,都會畢露無遺,風險側透過關聯黑名單、裝置指紋、生物探針、風險標籤(群控、裝置聚集性、陀螺儀、雲手機等等)可以識別出來人的操作軌跡,按壓行為等等,可快速識別風險,鎖定風險,消除風險;(注:由於機密性比較強,此處不做過多詳細說明)


相關文章