简介
之前在用飞猪抢火车票的时候,飞猪加速抢票的流程是先输入一个手机号,接着会弹出一个小框显示对应的淘宝账号,点击账号之后就可以加速了。
在这个过程中发现,手机号可以随便乱数,于是我就想着写个程序跑一下随便加速,结果发现自己还是太天真了,飞猪的接口竟然把参数加了签名,乱试了一通,还是解不了,最后放弃了挣扎。
今天,在抓包的时候,刚好有个同学在群了发了美团的抢票加速,就想着试一下,结果成功了。
实现
这边主要涉及两个请求。https://i.meituan.com/uts/train/qiangpiao/getGrabSpeedUpPackMsg 和 https://i.meituan.com/uts/train/qiangpiao/speedUp2Friend 。
1、用Charles抓包发现,第一个请求主要是获取已经给加速的好友。
具体的请求:
https://i.meituan.com/uts/train/qiangpiao/speedUp2Friend?uuid=&token=&userid=&ci=1&entrance=&version_name=&utm_medium=&utm_source=&train_source=miniprogram%40wap&utm_campaign=traingrab
请求参数:
我简单测试了一下,发现这个接口好像只校验qorder_id和openId这两个参数,其他的可以乱输。
{
"qorder_id": "订单号",
"openId": "微信的openId",
"nickName": "微信名称",
"headImgUrl": "微信头像地址",
"code": "01119bPPCWQ7LLQoo5r0UPrOo11Q9PCW",
"token": "",
"train_source": "miniprogram@wap",
"fingerprint": ""
}
返回结果:
{
"data": {
"friendSpeedUp": [{
"headImgUrl": "微信头像地址",
"nickName": "微信名称",
"openId": "微信的openId",
"speedUpPackNum": 2
}],
"gameAchievement": [],
"hasSpeedUp": false,
"speedUpPackNum": 13,
"state": 1,
"stationMsg": {
"fromStationName": "宝鸡",
"fromStationTelecode": "BJY",
"toStationName": "北京",
"toStationTelecode": "BJP"
}
},
"message": "ok",
"status": 0
}
{
"qorder_id": "订单号",
"openId": "微信的openId",
"nickName": "微信名称",
"headImgUrl": "头像地址",
"code": "0UPrOo17LLQo011PCWPCWQo19bP5r1Q9",
"token": "",
"train_source": "miniprogram@wap",
"fingerprint": ""
}
返回结果:
看着返回的字段名,大概能猜出是什么。不过不用管,毕竟已经加完速了。
{
"data": {
"rewardSpeedUpPack": {
"canReward": true,
"rewardId": "1042391979878149313",
"rewardPackNum": 2
},
"speedResult": [{
"selected": true,
"speedUpPackNum": 1
}, {
"selected": false,
"speedUpPackNum": 2
}, {
"selected": false,
"speedUpPackNum": 3
}, {
"selected": false,
"speedUpPackNum": 4
}],
"speedUpPackNum": 1
},
"message": "ok",
"status": 0
}
3、模拟发起请求
请求地址和请求参数都拿到了,接着就可以用postman发起请求了。美团的这个接口主要是校验微信的openId是否为这个订单加过速,而不校验真实性,因此只要把openId改一下就可以随便发请求加速了。对了,这个加速的接口连头部信息都不做校验,不是很严谨。
4、结果