本文作者:梁鼕鼕
前言: 今天你擼茅臺了麼?? 擼茅臺已經成為社會現象?,茶餘飯後討論的最佳實踐?
2022年雙十一大促已經完美收官,兄弟姐妹克服種種困難與挑戰.. 備戰的會議室忙碌中帶著緊張,當峰值過後的喜悅不言而喻,今年備戰室裡聽著對面的兄弟講述了他搶茅臺的經過,以及對馬上來臨的整點茅臺活動期待,我也立馬參與進去,但是....沒搶到?, 帶著種種的疑問,百度了下網上搶茅臺的種種手段與方法,發現裡面的貓膩還真不少,同時作為風險人也想不斷的透過各種技術手段識別發現風險,讓羊毛黨無處躲藏;也許,競爭對手比你想象中要更加的強大, 今天就帶你走近搶茅臺的指令碼,領略下TA們有趣的靈魂;
下面的列表是我總結網路上普遍存在的一些搶購的方式,這些方式的共性是:模擬單人或多人的操作行為,在最短的時間內完成搶購流程;
型別 | 方式 | 熱度 | 先進性 |
---|---|---|---|
後端介面指令碼 | http協議 | ?? | ? |
webUI指令碼 | webdriver | ????? | ??? |
appUI指令碼 | webdriver and 無障礙模式 | ??? | ????? |
adb命令指令碼 | adb協議 | ?? | ?????? |
一、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裡面無限迴圈進行搶購商品
四、風險防守、識別篇:
再高明的攻擊手段,在智慧風控面前下,都會畢露無遺,風險側透過關聯黑名單、裝置指紋、生物探針、風險標籤(群控、裝置聚集性、陀螺儀、雲手機等等)可以識別出來人的操作軌跡,按壓行為等等,可快速識別風險,鎖定風險,消除風險;(注:由於機密性比較強,此處不做過多詳細說明?)