写点什么

剖析一下"抢茅台"脚本底层逻辑

  • 2022-11-21
    北京
  • 本文字数:1697 字

    阅读完需:约 6 分钟

剖析一下"抢茅台"脚本底层逻辑

本文作者:梁东东

前言: 今天你撸茅台了么? 撸茅台已经成为社会现象,茶余饭后讨论的最佳实践

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 里面无限循环进行抢购商品


四、风险防守、识别篇:

再高明的攻击手段,在智能风控面前下,都会毕露无遗,风险侧通过关联黑名单、设备指纹、生物探针、风险标签(群控、设备聚集性、陀螺仪、云手机等等)可以识别出来人的操作轨迹,按压行为等等,可快速识别风险,锁定风险,消除风险;(注:由于机密性比较强,此处不做过多详细说明)

发布于: 刚刚阅读数: 4
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
剖析一下"抢茅台"脚本底层逻辑_接口_京东科技开发者_InfoQ写作社区