直接进入正文。京东抢购模式有很多种。
- 普通商品无货,定时查询库存蹲抢
- 普通商品定时发售(库存由0变为有货),定时提前构造订单请求抢
- 预售商品(需要先预约),可以加入购物车,通过购物车结算。这种用常规购物车结算订单接口就行,当然也可以用抢购接口。
这种体现为可以加购,抢购时候显示两个按钮,加入购物车(黄色)和立即购买(淡绿色)。
- 预售商品(需要先预约),无法加入购物车,电脑端无法预约,必须手机端预约。这种采用marathon.jd.com/seckillnew/… 接口完成抢购,有完整流程验证和tokenKey(sign),sk验证。
这种体现为 无法加入购物车,必须手机端才能预约,可购买时候只显示一个红色按钮立即抢购
逻辑参考GitHub大佬给出的思路。
第一步:获取跳转链接
跳转链接是指形如:un.m.jd.com/cgi-bin/app… 的链接,获取该链接,还需要一个前置步骤,即获取token和拼接url。先说获取token,获取token是通过genToken接口获取的,然后将获取到的tokenKey和url拼接起来,得到跳转链接。
第二步:访问跳转链接
拿到跳转链接后,直接将该跳转链接仍给浏览器即可,浏览器会经过两次302跳转得到sekill.action链接,从而渲染出提交订单页面,此时我们需要模拟点击“提交订单”按钮,实现抢购。(可以使用Selenium、Pyppeteer或Playwright等类库 来模拟浏览器)
访问跳转连接,及提交订单的时候需要提供移动端的APP参数抓包获取
。Android抓包较为简单,IOS的也不麻烦,就是步骤多了一些。
然后提取Hades头的信息组成以下参数
query_params = {
"functionId": "genToken",
"clientVersion": "12