京东App秒杀抢购流程接口分析(基于pypp技术)
App数据抓包必需工具
必需工具:小米手机,Charles,HttpCanary
从2022年2月后,京东只限于从app发起抢购,所以,网上的很多工具已经无效了。只能分析app端的底层协议和流程。
github地址:https://github.com/geeeeeeeek/jd_mt
通过抓包可以发现,整个抢购流程分为七个步骤,如下:
- 第一步是genToken ,这一步需要sign签名,charles抓包下来的sign签名是可以重复利用的,请求后获得Token与下一步需要跳转的url:
http://api.m.jd.com/client.action?functionId=genToken&clientVersion=10.1.2&build=89743&client=android&d_brand=OPPO&d_model=PCRT00&osVersion=5.1.1&screen=1920*1080&partner=lc023&oaid=&eid=eidAe81b812187s36z8QOkxpRJWzMceSvZJ6Ges/EbXnbK3TBxc/JEcutXxuELIRMJDVeTNJFcAF/+tx1qw9GllLTdSnFeV3ic6909a697SbDL9zxEc4&sdkVersion=22&lang=zh_CN&aid=21e9fa9db1e4e15d&area=19_1601_3633_63257&networkType=wifi&wifiBssid=unknown&uts=0f31TVRjBSsqndu4jgUPz6uymy50MQJw+3mGtYmx2hY8nVZkXFqGJ2D3wO8rvc+nAbe881zrDZjz3yU3z8vQgL8NZ7e39M3H2YpLER13q+3VUzHQXXLg4BMmeH+1W0+xQLR4Y58JMW9A9F9yD2BtQPynkeKYtBsYDCkOn35Tv9ci57mPbqxYWU0TDVJ8t7JBXRhLckTorzxtEAVucA==&uemps=0-0&harmonyOs=0&skuId=100012043978&sv=102&st=1639233570251&uuid=aa126fe5cf6dfc0a&sign=ef78cdeda16a5269f11d3fdf920e0b5e&body={"action":"to","to":"https://divide.jd.com/user_routing?skuId=100012043978"}
此处要注意,请求中的body一定要传:
{"action":"to","to":"https://divide.jd.com/user_routing?skuId=100012043978"}
请求后:
{
"code": "0",
"tokenKey": "AAEAMO6g-6W-wURCFfDn3vw7jvHvMfP_gGjoHwIwW_orBxjg62m844R-Urf4szuLvgfbDA1",
"url": "https://un.m.jd.com/cgi-bin/app/appjmp"
}
location: https://divide.jd.com/user_routing?skuId=100012043978&mid=Ys6S3Ax2ML**********PS9MLCKdo&lng=109.568546&lat=33.999595&sid=470f133fa4**********9d6cf6bew
set-cookie: pt_key=app_open***********; EXPIRES=Thu, 17-Jun-2021 04:04:07 GMT; PATH=/; DOMAIN=.jd.com; HTTPONLY
set-cookie: pt_pin=aa**********; EXPIRES=Thu, 17-Jun-2021 04:04:07 GMT; PATH=/; DOMAIN=.jd.com; HTTPONLY
set-cookie: pwdt_id=aa**********; EXPIRES=Thu, 17-Jun-2021 04:04:07 GMT; PATH=/; DOMAIN=.jd.com
set-cookie: sid=470f133f**********; EXPIRES=Thu, 17-Jun-2021 04:04:07 GMT; PATH=/; DOMAIN=.jd.com
location中的url即为下一步跳转的链接,后面几步请求都需要带上这四个set cookie
- divide 这一步也是get请求,完整的请求链接已经包含在第二步的response.headers[‘location’]中,请求后的response.headers:
Set-Cookie: seckillSku=100012043978;domain=divide.jd.com;path=/;expires=Tue, 18-May-21 04:06:07 GMT
Set-Cookie: seckillSid=470f133fa40**********6cf6bew;domain=divide.jd.com;path=/;expires=Tue, 18-May-21 04:06:07 GMT
Set-Cookie: mid=Ys6S3Ax2MLxvA91**********S9MLCKdo;domain=divide.jd.com;path=/;expires=Wed, 19-May-21 07:50:47 GMT
Location: https://marathon.jd.com/m/captcha.html?sid=470f133fa4**********d69d6cf6bew&lat=33.999595&mid=Ys6S3Ax2ML**********o2xF`PS9MLCKdo&skuId=100012043978&lng=109.568546
location中的url即为下一步跳转的链接,这三个set cookie是不需要的。
- captcha 验证,这一步成功的话就可以跳转到“填写订单”的页面,get请求后
location: https://marathon.jd.com/seckillM/seckill.action?skuId=100012043978&num=1&rid=1621310648
set-cookie: seckillSku=100012043978;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckillSid=470f1******************69d6cf6bew;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: mid=Ys6S3Ax2******************kPMgTjo2xFPS9MLCKdo;domain=marathon.jd.com;path=/;expires=Wed, 19-May-21 07:50:48 GMT
set-cookie: seckillSku=100012043978;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckillSid=;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: mid=Ys6S3Ax******************Tjo2xFPS9MLCKdo;domain=marathon.jd.com;path=/;expires=Wed, 19-May-21 07:50:48 GMT
set-cookie: seckill100012043978=wGPGg0Hl38hKCtL+qzDdnYtTACbdbHG4EHWZfrUevTmy91p9t9+FW1j25tuRKn/JUzz9kJndJuaQGu**********************************hPz+wKXOXNcWT0oP9/7aBzT6v51onNMwKNqL/oPq62tsnbn8hGgW;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:09:08 GMT
set-cookie: seckill100012043978=wGPGg0Hl38hKCtL+qzDdnYtTACbdbHG4EHWZfrUevTmy91p9t9+FW1j25tuRKn/JUzz9kJndJuaQGuZVd2z*****************************c8Zvh30ghPz+wKXOXNcWT0oP9/7aBzT6v51onNMwKNqL/oPq62tsnbn8hGgW;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:09:08 GMT
set-cookie: seckillSku=100012043978;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckillSid=;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckill100012043978=PQSX5FWmso33ZTy1qg3a59HQ/G3I4mZNiugB3jNblYyYsSjAqdcXmAtWIWizmwhWUHsfqEU1FzyruuESA/QMB6h25M*************************k2KrA8uJML5ClwGYMXV/JaCS9kfexcFQEYjzsErAwaF5Z3Q4zOOW+gjSRWTno/Z;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:09:08 GMT
location中出现
https://marathon.jd.com/seckillM/seckill.action?skuId=100012043978&num=1&rid=1621310648
代表验证成功,如果失败,则是:
https://marathon.jd.com/mobile/koFail.html
setcookie需要如下四个,后面的请求需要用到:
captcha_set_cookie = {
'seckillSku': ,
'seckillSid': '',
'mid': ,
'seckill100012043978': 'PQSX5FWmso33ZTy1qg3a59HQ/G3I4mZNiugB3jNblYyYsSjAqdcXmAtWIWizmwhWUHsfqEU1FzyruuESA/QMB6h25M*************************k2KrA8uJML5ClwGYMXV/JaCS9kfexcFQEYjzsErAwaF5Z3Q4zOOW+gjSRWTno/Z',
}
seckill100012043978在set cookie里重复出现,取最后一个即可。
- seckill.action请求,在app上就是填写订单,请求时需要带上captcha_set_cookie,如果请求成功,response.status_code为200,否则为302。需要说明的是,只有在抢购期间内才会请求成功,否则都是失败的,请求的response.headers为
set-cookie: seckillSku=100012043978;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckillSid=;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckillSku=100012043978;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckillSid=;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:06:08 GMT
set-cookie: seckill100012043978=+VxYCzRv8e9cKXdrgi***************************************z+wM0aVOm5AxZPjcq9CVPN3dmtUb73KdQOMbVCYrU/jZUvFE0WYNNz3DmvYjFaA8CmLY/SEYUyjyZrOMZSk2L/VdkA9AAydRRfNEM0Cj;domain=marathon.jd.com;path=/;expires=Tue, 18-May-21 04:09:08 GMT
content-language: zh-CN
这一步会拿到新的seckill100012043978数值,对应的cookie值需要更新。
- init.action post类型,需要提交的数据charles都可以抓到, url为
https://marathon.jd.com/seckillnew/orderService/
- 提交订单,post类型,需要提交的数据charles都可以抓到,url为
https://marathon.jd.com/seckillnew/orderService/submitOrder.action?skuId=100012043978
提交后返回:
{"errorMessage":"很遗憾没有抢到,再接再厉哦。","orderId":0,"resultCode":90016,"skuId":0,"success":false}
至此分析流程结束。
京东App秒杀抢购流程接口分析(基于pypp技术)的更多相关文章
- 2020-04-29:现在你有个秒杀抢购的app,用户不断大量增加,技术层面,你要怎么做
2020-04-29:现在你有个秒杀抢购的app,用户不断大量增加,技术层面,你要怎么做,才能既满足用户需求,又能扛住压力,还能帮公司合理支出?福哥答案2020-04-29: 限流(杀部分用户祭天). ...
- 移动应用/APP的测试流程及方法
1. APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先 ...
- APP测试基本流程以及APP测试要点
APP测试流程梳理 APP测试要点梳理 链接:http://pan.baidu.com/s/1gfaEZ1x 密码:07yt 1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开 ...
- App测试基本流程详解
1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间. 1.3测试资 ...
- SpringCloud(十一)- 秒杀 抢购
1.流程图 1.1 数据预热 1.2 抢购 1.3 生成订单 (发送订单消息) 1.4 订单入库 (监听 消费订单消息) 1.5 查看订单状态 1.6 支付 (获取支付链接 ) 1.7 支付成功 微信 ...
- app上线具体流程
前言:前两天有个同事问到我APP上传的问题,几个地方我竟然模糊不清了,查了些资料在这里整理一下.鄙人是一个懒猿,一直以来都是从各位大神的博客中汲取营养,却懒于写自己的.越来越觉得写博客对于一个开发者来 ...
- 移动APP项目研发流程及版本规划(转)
一个移动APP项目研发规模可大可小,但都离不开以下几个成员:产品经理.ui设计师.前端开发.后端开发.测试等.如何合理安排项目成员工作.确保项目顺利进行呢?一个清晰合理的项目研发流程控制很重要. 项目 ...
- redis使用watch完成秒杀抢购功能
Redis使用watch完成秒杀抢购功能: 使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表. 它的优点如下: 1. 首先选用内 ...
- redis使用watch完成秒杀抢购功能(转)
redis使用watch完成秒杀抢购功能: 使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表. 它的优点如下: 1. 首先选用内 ...
- redis使用watch完成秒杀抢购功能:
redis使用watch完成秒杀抢购功能: 使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表. 它的优点如下: 1. 首先选用内 ...
随机推荐
- 一个Servlet如何实现增-删-改-查的业务逻辑
一.业务场景 最近在教学生学习JavaWeb中的Servlet,它就是一个Java服务端的小程序,用来提供各种服务. 在讲解得时候,自己突然遇到一个问题,那就是现在没有使用什么SpringMvc框架, ...
- 【UniApp】-uni-app-处理项目输入数据(苹果计算器)
前言 上一篇文章完成了项目的基本布局,这一篇文章我们来处理一下项目的输入数据 项目的输入数据主要是通过按键来输入的,所以我们需要对按键进行处理 那么我们就来看一下 uni-app-处理项目输入数据 步 ...
- 解决C#连接MySQL数据库报错 MySqlConnector
如果主机不支持 SSL 连接,则不会使用 SSL 连接. 连接不上. 解决方案:在连接字符串后添加 sslmode = none. <add key="connstring" ...
- ElasticSearch之文件描述符的数量
ElasticSearch在运行过程中,涉及大量文件的打开.关闭.读.写等操作.因此当ElasticSearch进程的文件描述符数量不足时可能导致丢失数据等故障现象. 因此为保障ElasticSear ...
- 基于注解玩转excel导出导入-基于注解玩转excel导出导入
title: 基于注解玩转excel导出导入 date: 2021-05-01 15:55:13.53 updated: 2021-12-26 17:43:19.505 url: https://ww ...
- 【难受】SpirngCloud-Alibaba-nacos跨服务器访问接口的问题
原想法:我首先准备了 一个网关 2个服务 分别将两个服务部署到不同的远程服务器当中 实现跨服务器访问接口 网关为本地调用--这里就不一一介绍了 问题 利用gateway做路由时出现服务不可用的情况,看 ...
- .net Core中间件实战
新建一个ASP.NET Core Web Application 项目选中空模板 然后为项目添加一个Microsoft.Extensions.Logging.Console 由于我用的.net cor ...
- 中国汽车工业协会 SDV 软件定义汽车服务 API 第三版下载
开门见山,下载链接: https://files.cnblogs.com/files/tengzijian/SDV_API_Version3_Beta1_公众号:好记性如烂笔头.zip?t=16904 ...
- Windows环境下为Android编译OpenCV4.3
Windows环境下为Android编译OpenCV4.3 踩了三四天的坑,今天终于顺利跑通了,原来是toolchain的问题,外网的教程大多都是用opencv source里的toolchain,会 ...
- 云图说丨初识华为云OrgID:轻松实现统一帐号、统一授权
本文分享自华为云社区<[云图说]第282期 初识华为云OrgID:轻松实现统一帐号.统一授权>,作者: 阅识风云 . 组织成员帐号 OrgID是面向企业提供组织管理.企业成员帐号管理以及S ...