3

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

 1 year ago
source link: https://blog.51cto.com/u_15714439/5873224
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文作者:梁冬冬

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

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

剖析一下

四、风险防守、识别篇:

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK