应国庆
(北京源石云科技有限公司(上海分公司) 上海市 200000)
为了提高鞋友的中签率,以及能中到想要的尺码,我们整合平台,为潮鞋朋友选择,以及入驻抢鞋功能,NIKE 鞋不同的国家发布时间是不一样的,款式也不一样,官网隔几日就有几款鞋发售,官网发售鞋是不定时的,有突袭模式,有预售模式,有抽签模式,随时登录官网查看发售情况,一点也不智能。所以设计一套智能提醒,智能代抢,智能推介等系统,借助我们开发好的工具进行抢鞋,为潮友中签带来希望。
爬虫架构如图1所示。
(1)用Tornado 框架搭建。Tornado 本身就是异步框架,其中包括两个方面:服务端和客户端。无论服务端和客户端,具体的异步模型又可以分为回调(callback)和协程(coroutine),所以爬取效率将大大提高。另外整个过程需要页面解析,增加日志,超时重启,使用代理以及大量User-Agent 进行伪装成普通用户。
(2)App 端和PC 端商品数据采集:爬取NIKE 大陆官网商品详情信息(鞋的spu,sku)以及商品发售日历,发售价格。
(3)部署在阿里云服务器定时任务,每天上午8 点40 分更新数据。
(4)数据上报:数据清洗之后通过json 格式上报业务端存储。
(1)主要实现数据持久化,因为数据与日俱增。
(2)为业务端提供数据上报接口,方便拉取数据。
首先要用到Airtest 自动化测试框架,该工具主要是面向游戏UI 测试基于图像识别,如游戏框架unity, Cocos-js 以及网易内部的游戏框架,同时也支持原生Android App 的基于元素识别的UI 自动化测试。主要目的是通过Airtest 脚本模拟人为去操作云手机并注册大量用户,并与真实用户账号一起加入抢鞋队列中。
用户注册系统全部由华为云手机,为大量用户提供授权注册登录,系统架构如图2所示。
(1)华为云手机端:在500 台云手机安装SNKRS 应用。
(2)Airtest 自动化测试脚本部署10 台Windows 服务器,并用脚本操控500 台云手机,每台Windows 服务器,操控50 台云手机。
(3)数据采集:收集用户注册信息,区分已注册和未注册,并将注册数据保存。收集用户行为数据并保存。
(4)数据处理与存储:整个系统会对注册账号进行清洗和归纳,然后存储到阿里服务器数据库。
(5)智能推荐:利用注册用户的行为轨迹,分析该用户对那款鞋比较感兴趣,推送类似款式给到用户,并将相关鞋的信息一并推送到用户。
为了优化用户在发售日历的体验,发售日历页需不展示同款潮鞋的女版,幼童版,大童版等潮鞋
(1)潮鞋的女版,大童版,幼童版潮鞋的发售信息在同款的发售详情页展示,展示模块相关原型如下:
同理女版,大童版,幼童版发售详情页也要展示出自身外的相关发售模块。
(2)相关发售展示分为两类:多个相关发售,单个相关发售:
1.相关发售潮鞋卡片区域展示元素见下方原型:配图、潮鞋标题、发售价、智能代抢按钮或已发售标记。
2.有多个相关发售时,可左右滑动查看相关发售,排序优先级为:女版、大童版、幼童版。
3.点击非(智能代抢)按钮区域跳转至对应潮鞋发售详情页。
4.点击(智能代抢)按钮,跳转至发售详情页。
(3)相关发售区域的(智能代抢)按钮分为四种状态:可抢、正在抢、已中签、未中签四种状态。
(4)外加一种已发售状态。
(5)发售前的潮鞋且用户未对基发起智能代抢,则对该用户为可抢状态,前端展示文案由后台下发为:智能代抢,用户点击进入智能代抢详情页。
(5)若用户未登录,则发售日历&智能代抢详情页按照潮鞋的状态决定智能代抢按钮是否展示,若展示其可抢状态。
(7)用户若对某款潮鞋发起了智能代抢,且该款潮鞋是当天发售的,在未拿到该用户中签结果前,前端展示文案由后台下发为:抢+鞋码+对号。
1.主要是帮助用户更容易抢到自己喜欢的潮鞋,收集的注册会员信息充分发挥了作用,注册用户越多抢的鞋基数概率就越高。
2.首先通过授权SNKRS 账号才能智能抢鞋。
图1:爬虫架构图
图2:用户注册系统架构图
3.授权之后不影响该账号在SNKRS 的正常登录。
4.智能中签系统可以帮助用户最多授权10 个代抢账号,将帮你同时进行智能抢鞋。
5.智能代抢连接发单人,接单人,满足供需双方的需求。
6.推送今天预发售的潮鞋信息,让用户自己选择喜欢的款式,进行智能代抢。发售提醒功能。
通过浏览器进入SNRKS 国区官网,右击鼠标,选中“检查”,选择“Network”,刷新页面后选择第一条信息,获取潮鞋中签接口,由于该网页为防止恶意采集信息而使用反爬虫设置,从而拒绝用户继续访问,爬虫并发时受到限制。然后通过模拟浏览器的头部信息来进行访问,也无法解决反爬虫问题,甚至更换代理也无济于事。针对这些问题采取以下措施:
(1)用Airtest 自动化养号,更换账号头像,模拟人的行为轨迹,例如,在页面上点赞,收藏。
(2)用redis 作为账号池,提前10 分钟,锁定10 万个账号进入账号池,然后设置1 万并发同时排队抢鞋,等到9 点准时进入接口抢。
(3)代理池需要2 万个IP 代理,才能满足10 万个账号同时抢鞋。
(1)请确保每个账号收货地址填写完整,收货地址不完整通过代码识别后剔除。这样才能保证每个账号中签几率将大大提高。
(2)潮鞋发售前一小时,提前锁定账号进入账号池中,提前10 分钟进入排队。
图3:中签监控系统流程图
(3)请务必开启消息通知,抢购成功将通知你去SNKRS 中进行付款。
(4)主程序每天早上8:50 自动启动脚本。为了满足10 万个顺利进入到排队中,必须提前检查程序是否运行正常。
(5)代理池是否满足需求。
中签系统就是爬虫加并发的过程,只轮询一个流程,若未中签只能等到下次中签,爆款基本秒杀。所以代理质量要求非常高,一但失败第二次请求肯定没有希望,一定要做到万无一失,才能确保走完流程,即便走完也未必能中,所以只能用大量账号来提高中签率。中签监控系统流程图如图3所示。
潮鞋发售监控模块:实时监控SNKRS 线上预售列表,及监控线下门店发售情况。
线上发售监控模块:主要是国区发售列表监控,获取国区发售潮鞋价格,尺码,主图,以及发售时间。
门店发售监控:主要通过爬虫抓取各大门店公众号及网站大量信息进行比对,以及线下门店发布信息,门店网站信息,提前通过短信通知用户。
发售时间模块:主要是线上线下发售时间,为什么要监控,因为SNKRS 发售模式有好几种:
线上模式三种:
(1)FLOW 模式:代表先到先得,主要靠手速和网速,主要针对的是一些专属购买的球鞋,耐克官方会通过短信等方式通知具有购买权限的会员进行专属通道的购买,先到先得。同时,在一些球鞋补货的时候,FLOW 模式也会被用到。
(2)LEO 模式:是目前最多发售方式,可以简单理解成小抽签,抽签时长为15 分钟。主要针对的是一些中端市场的球鞋。通常会有黄金2 分钟的说法,就是说在抽签开始前两分钟的参与用户中进行1 轮抽签,此次抽签的球鞋数量对应库存的70%-80%,在2分钟之后参与的用户则需要在剩余20%-30%的库存内进行竞争,所以这个模式下,也是越早参与,中签的概率越高。
(3)DAN 模式:这个模式就是所谓的大发售,抽签时长通常为30 分钟,针对的是一些非常top 的球鞋,比如倒钩、ts 联名等等。这种抽签模式在抽签的任何时间段内的中签概率都是一样的,而且没有人数上限,所以专门会出现服务器爆炸的情况,大家就多多尝试就好。
线下模式一种:
(1)Pass 模式:就是基于地理位置的线下发售,根据定位,会对在发售门店内一定区域的用户显示预约页面,在APP 上进行线上预约,次日去指定门店进行购买即可。
城市选择模块:主要选择监控一线城市为主,因为需求量大,款式齐全。
爬虫模块:10 万个账号同时依次进入中签,其中会根据用户选择的款式,尺码去触发爬虫,然后大量账号中签不同的款式及尺码。
中签通知模块:主要通知用户是否中签,若中签用短信方式提醒用户,及时线上付款。
线下通知模块:主要通知用户线下门店发售潮鞋款式以及数量。但是这个人为去门店排队购买。
潮鞋的圈子主要以90 后、00 后年青人为主,一双潮鞋能够展示自己的个性品位和生活方式。AJ 和 Yeezy 是当下最受欢迎的品牌系列。他们有时间,有精力投身于潮鞋市场。有着敏锐的眼光洞察爆款。想尽办法拥有一款属于自己的爆款潮鞋。并且还能把潮鞋当着一种投资理财的门道。当然,入行需谨慎,投资有风险。我们的目的主要是帮助用户提高潮鞋中签率。为了用户能中签到心仪的潮鞋,是我们最大的动力。不断优化升级系统,服务好用户。当APP 借助推荐系统3.0 架构设计,并且爬虫结合算法,推出3.0 智能代抢工具时,中签更加精准,速度更快。到时会给APP 带来巨大的客流量,或许能在整个球鞋市场有立足之地,稳步发展。对于球鞋爱好者来说也是一种福音。