應(yīng)國(guó)慶
(北京源石云科技有限公司(上海分公司) 上海市 200000)
為了提高鞋友的中簽率,以及能中到想要的尺碼,我們整合平臺(tái),為潮鞋朋友選擇,以及入駐搶鞋功能,NIKE 鞋不同的國(guó)家發(fā)布時(shí)間是不一樣的,款式也不一樣,官網(wǎng)隔幾日就有幾款鞋發(fā)售,官網(wǎng)發(fā)售鞋是不定時(shí)的,有突襲模式,有預(yù)售模式,有抽簽?zāi)J剑S時(shí)登錄官網(wǎng)查看發(fā)售情況,一點(diǎn)也不智能。所以設(shè)計(jì)一套智能提醒,智能代搶,智能推介等系統(tǒng),借助我們開(kāi)發(fā)好的工具進(jìn)行搶鞋,為潮友中簽帶來(lái)希望。
爬蟲架構(gòu)如圖1所示。
(1)用Tornado 框架搭建。Tornado 本身就是異步框架,其中包括兩個(gè)方面:服務(wù)端和客戶端。無(wú)論服務(wù)端和客戶端,具體的異步模型又可以分為回調(diào)(callback)和協(xié)程(coroutine),所以爬取效率將大大提高。另外整個(gè)過(guò)程需要頁(yè)面解析,增加日志,超時(shí)重啟,使用代理以及大量User-Agent 進(jìn)行偽裝成普通用戶。
(2)App 端和PC 端商品數(shù)據(jù)采集:爬取NIKE 大陸官網(wǎng)商品詳情信息(鞋的spu,sku)以及商品發(fā)售日歷,發(fā)售價(jià)格。
(3)部署在阿里云服務(wù)器定時(shí)任務(wù),每天上午8 點(diǎn)40 分更新數(shù)據(jù)。
(4)數(shù)據(jù)上報(bào):數(shù)據(jù)清洗之后通過(guò)json 格式上報(bào)業(yè)務(wù)端存儲(chǔ)。
(1)主要實(shí)現(xiàn)數(shù)據(jù)持久化,因?yàn)閿?shù)據(jù)與日俱增。
(2)為業(yè)務(wù)端提供數(shù)據(jù)上報(bào)接口,方便拉取數(shù)據(jù)。
首先要用到Airtest 自動(dòng)化測(cè)試框架,該工具主要是面向游戲UI 測(cè)試基于圖像識(shí)別,如游戲框架unity, Cocos-js 以及網(wǎng)易內(nèi)部的游戲框架,同時(shí)也支持原生Android App 的基于元素識(shí)別的UI 自動(dòng)化測(cè)試。主要目的是通過(guò)Airtest 腳本模擬人為去操作云手機(jī)并注冊(cè)大量用戶,并與真實(shí)用戶賬號(hào)一起加入搶鞋隊(duì)列中。
用戶注冊(cè)系統(tǒng)全部由華為云手機(jī),為大量用戶提供授權(quán)注冊(cè)登錄,系統(tǒng)架構(gòu)如圖2所示。
(1)華為云手機(jī)端:在500 臺(tái)云手機(jī)安裝SNKRS 應(yīng)用。
(2)Airtest 自動(dòng)化測(cè)試腳本部署10 臺(tái)Windows 服務(wù)器,并用腳本操控500 臺(tái)云手機(jī),每臺(tái)Windows 服務(wù)器,操控50 臺(tái)云手機(jī)。
(3)數(shù)據(jù)采集:收集用戶注冊(cè)信息,區(qū)分已注冊(cè)和未注冊(cè),并將注冊(cè)數(shù)據(jù)保存。收集用戶行為數(shù)據(jù)并保存。
(4)數(shù)據(jù)處理與存儲(chǔ):整個(gè)系統(tǒng)會(huì)對(duì)注冊(cè)賬號(hào)進(jìn)行清洗和歸納,然后存儲(chǔ)到阿里服務(wù)器數(shù)據(jù)庫(kù)。
(5)智能推薦:利用注冊(cè)用戶的行為軌跡,分析該用戶對(duì)那款鞋比較感興趣,推送類似款式給到用戶,并將相關(guān)鞋的信息一并推送到用戶。
為了優(yōu)化用戶在發(fā)售日歷的體驗(yàn),發(fā)售日歷頁(yè)需不展示同款潮鞋的女版,幼童版,大童版等潮鞋
(1)潮鞋的女版,大童版,幼童版潮鞋的發(fā)售信息在同款的發(fā)售詳情頁(yè)展示,展示模塊相關(guān)原型如下:
同理女版,大童版,幼童版發(fā)售詳情頁(yè)也要展示出自身外的相關(guān)發(fā)售模塊。
(2)相關(guān)發(fā)售展示分為兩類:多個(gè)相關(guān)發(fā)售,單個(gè)相關(guān)發(fā)售:
1.相關(guān)發(fā)售潮鞋卡片區(qū)域展示元素見(jiàn)下方原型:配圖、潮鞋標(biāo)題、發(fā)售價(jià)、智能代搶按鈕或已發(fā)售標(biāo)記。
2.有多個(gè)相關(guān)發(fā)售時(shí),可左右滑動(dòng)查看相關(guān)發(fā)售,排序優(yōu)先級(jí)為:女版、大童版、幼童版。
3.點(diǎn)擊非(智能代搶)按鈕區(qū)域跳轉(zhuǎn)至對(duì)應(yīng)潮鞋發(fā)售詳情頁(yè)。
4.點(diǎn)擊(智能代搶)按鈕,跳轉(zhuǎn)至發(fā)售詳情頁(yè)。
(3)相關(guān)發(fā)售區(qū)域的(智能代搶)按鈕分為四種狀態(tài):可搶、正在搶、已中簽、未中簽四種狀態(tài)。
(4)外加一種已發(fā)售狀態(tài)。
(5)發(fā)售前的潮鞋且用戶未對(duì)基發(fā)起智能代搶,則對(duì)該用戶為可搶狀態(tài),前端展示文案由后臺(tái)下發(fā)為:智能代搶,用戶點(diǎn)擊進(jìn)入智能代搶詳情頁(yè)。
(5)若用戶未登錄,則發(fā)售日歷&智能代搶詳情頁(yè)按照潮鞋的狀態(tài)決定智能代搶按鈕是否展示,若展示其可搶狀態(tài)。
(7)用戶若對(duì)某款潮鞋發(fā)起了智能代搶,且該款潮鞋是當(dāng)天發(fā)售的,在未拿到該用戶中簽結(jié)果前,前端展示文案由后臺(tái)下發(fā)為:搶+鞋碼+對(duì)號(hào)。
1.主要是幫助用戶更容易搶到自己喜歡的潮鞋,收集的注冊(cè)會(huì)員信息充分發(fā)揮了作用,注冊(cè)用戶越多搶的鞋基數(shù)概率就越高。
2.首先通過(guò)授權(quán)SNKRS 賬號(hào)才能智能搶鞋。

圖1:爬蟲架構(gòu)圖

圖2:用戶注冊(cè)系統(tǒng)架構(gòu)圖
3.授權(quán)之后不影響該賬號(hào)在SNKRS 的正常登錄。
4.智能中簽系統(tǒng)可以幫助用戶最多授權(quán)10 個(gè)代搶賬號(hào),將幫你同時(shí)進(jìn)行智能搶鞋。
5.智能代搶連接發(fā)單人,接單人,滿足供需雙方的需求。
6.推送今天預(yù)發(fā)售的潮鞋信息,讓用戶自己選擇喜歡的款式,進(jìn)行智能代搶。發(fā)售提醒功能。
通過(guò)瀏覽器進(jìn)入SNRKS 國(guó)區(qū)官網(wǎng),右擊鼠標(biāo),選中“檢查”,選擇“Network”,刷新頁(yè)面后選擇第一條信息,獲取潮鞋中簽接口,由于該網(wǎng)頁(yè)為防止惡意采集信息而使用反爬蟲設(shè)置,從而拒絕用戶繼續(xù)訪問(wèn),爬蟲并發(fā)時(shí)受到限制。然后通過(guò)模擬瀏覽器的頭部信息來(lái)進(jìn)行訪問(wèn),也無(wú)法解決反爬蟲問(wèn)題,甚至更換代理也無(wú)濟(jì)于事。針對(duì)這些問(wèn)題采取以下措施:
(1)用Airtest 自動(dòng)化養(yǎng)號(hào),更換賬號(hào)頭像,模擬人的行為軌跡,例如,在頁(yè)面上點(diǎn)贊,收藏。
(2)用redis 作為賬號(hào)池,提前10 分鐘,鎖定10 萬(wàn)個(gè)賬號(hào)進(jìn)入賬號(hào)池,然后設(shè)置1 萬(wàn)并發(fā)同時(shí)排隊(duì)搶鞋,等到9 點(diǎn)準(zhǔn)時(shí)進(jìn)入接口搶。
(3)代理池需要2 萬(wàn)個(gè)IP 代理,才能滿足10 萬(wàn)個(gè)賬號(hào)同時(shí)搶鞋。
(1)請(qǐng)確保每個(gè)賬號(hào)收貨地址填寫完整,收貨地址不完整通過(guò)代碼識(shí)別后剔除。這樣才能保證每個(gè)賬號(hào)中簽幾率將大大提高。
(2)潮鞋發(fā)售前一小時(shí),提前鎖定賬號(hào)進(jìn)入賬號(hào)池中,提前10 分鐘進(jìn)入排隊(duì)。

圖3:中簽監(jiān)控系統(tǒng)流程圖
(3)請(qǐng)務(wù)必開(kāi)啟消息通知,搶購(gòu)成功將通知你去SNKRS 中進(jìn)行付款。
(4)主程序每天早上8:50 自動(dòng)啟動(dòng)腳本。為了滿足10 萬(wàn)個(gè)順利進(jìn)入到排隊(duì)中,必須提前檢查程序是否運(yùn)行正常。
(5)代理池是否滿足需求。
中簽系統(tǒng)就是爬蟲加并發(fā)的過(guò)程,只輪詢一個(gè)流程,若未中簽只能等到下次中簽,爆款基本秒殺。所以代理質(zhì)量要求非常高,一但失敗第二次請(qǐng)求肯定沒(méi)有希望,一定要做到萬(wàn)無(wú)一失,才能確保走完流程,即便走完也未必能中,所以只能用大量賬號(hào)來(lái)提高中簽率。中簽監(jiān)控系統(tǒng)流程圖如圖3所示。
潮鞋發(fā)售監(jiān)控模塊:實(shí)時(shí)監(jiān)控SNKRS 線上預(yù)售列表,及監(jiān)控線下門店發(fā)售情況。
線上發(fā)售監(jiān)控模塊:主要是國(guó)區(qū)發(fā)售列表監(jiān)控,獲取國(guó)區(qū)發(fā)售潮鞋價(jià)格,尺碼,主圖,以及發(fā)售時(shí)間。
門店發(fā)售監(jiān)控:主要通過(guò)爬蟲抓取各大門店公眾號(hào)及網(wǎng)站大量信息進(jìn)行比對(duì),以及線下門店發(fā)布信息,門店網(wǎng)站信息,提前通過(guò)短信通知用戶。
發(fā)售時(shí)間模塊:主要是線上線下發(fā)售時(shí)間,為什么要監(jiān)控,因?yàn)镾NKRS 發(fā)售模式有好幾種:
線上模式三種:
(1)FLOW 模式:代表先到先得,主要靠手速和網(wǎng)速,主要針對(duì)的是一些專屬購(gòu)買的球鞋,耐克官方會(huì)通過(guò)短信等方式通知具有購(gòu)買權(quán)限的會(huì)員進(jìn)行專屬通道的購(gòu)買,先到先得。同時(shí),在一些球鞋補(bǔ)貨的時(shí)候,F(xiàn)LOW 模式也會(huì)被用到。
(2)LEO 模式:是目前最多發(fā)售方式,可以簡(jiǎn)單理解成小抽簽,抽簽時(shí)長(zhǎng)為15 分鐘。主要針對(duì)的是一些中端市場(chǎng)的球鞋。通常會(huì)有黃金2 分鐘的說(shuō)法,就是說(shuō)在抽簽開(kāi)始前兩分鐘的參與用戶中進(jìn)行1 輪抽簽,此次抽簽的球鞋數(shù)量對(duì)應(yīng)庫(kù)存的70%-80%,在2分鐘之后參與的用戶則需要在剩余20%-30%的庫(kù)存內(nèi)進(jìn)行競(jìng)爭(zhēng),所以這個(gè)模式下,也是越早參與,中簽的概率越高。
(3)DAN 模式:這個(gè)模式就是所謂的大發(fā)售,抽簽時(shí)長(zhǎng)通常為30 分鐘,針對(duì)的是一些非常top 的球鞋,比如倒鉤、ts 聯(lián)名等等。這種抽簽?zāi)J皆诔楹灥娜魏螘r(shí)間段內(nèi)的中簽概率都是一樣的,而且沒(méi)有人數(shù)上限,所以專門會(huì)出現(xiàn)服務(wù)器爆炸的情況,大家就多多嘗試就好。
線下模式一種:
(1)Pass 模式:就是基于地理位置的線下發(fā)售,根據(jù)定位,會(huì)對(duì)在發(fā)售門店內(nèi)一定區(qū)域的用戶顯示預(yù)約頁(yè)面,在APP 上進(jìn)行線上預(yù)約,次日去指定門店進(jìn)行購(gòu)買即可。
城市選擇模塊:主要選擇監(jiān)控一線城市為主,因?yàn)樾枨罅看螅钍烬R全。
爬蟲模塊:10 萬(wàn)個(gè)賬號(hào)同時(shí)依次進(jìn)入中簽,其中會(huì)根據(jù)用戶選擇的款式,尺碼去觸發(fā)爬蟲,然后大量賬號(hào)中簽不同的款式及尺碼。
中簽通知模塊:主要通知用戶是否中簽,若中簽用短信方式提醒用戶,及時(shí)線上付款。
線下通知模塊:主要通知用戶線下門店發(fā)售潮鞋款式以及數(shù)量。但是這個(gè)人為去門店排隊(duì)購(gòu)買。
潮鞋的圈子主要以90 后、00 后年青人為主,一雙潮鞋能夠展示自己的個(gè)性品位和生活方式。AJ 和 Yeezy 是當(dāng)下最受歡迎的品牌系列。他們有時(shí)間,有精力投身于潮鞋市場(chǎng)。有著敏銳的眼光洞察爆款。想盡辦法擁有一款屬于自己的爆款潮鞋。并且還能把潮鞋當(dāng)著一種投資理財(cái)?shù)拈T道。當(dāng)然,入行需謹(jǐn)慎,投資有風(fēng)險(xiǎn)。我們的目的主要是幫助用戶提高潮鞋中簽率。為了用戶能中簽到心儀的潮鞋,是我們最大的動(dòng)力。不斷優(yōu)化升級(jí)系統(tǒng),服務(wù)好用戶。當(dāng)APP 借助推薦系統(tǒng)3.0 架構(gòu)設(shè)計(jì),并且爬蟲結(jié)合算法,推出3.0 智能代搶工具時(shí),中簽更加精準(zhǔn),速度更快。到時(shí)會(huì)給APP 帶來(lái)巨大的客流量,或許能在整個(gè)球鞋市場(chǎng)有立足之地,穩(wěn)步發(fā)展。對(duì)于球鞋愛(ài)好者來(lái)說(shuō)也是一種福音。