本帖最后由 情绪666 于 2020-11-9 18:32 编辑
起因(正片还没开始)
测试地址: http://suo.im/5CX6oI
|
######仅供学习参考,请勿用于非法用途(如有违规,联系删除)###### | 1、兑换K30S F码已经兑完,下次发放也许可以采用此方法(没尝试过,不敢保证可以) | 2、原理:抓包得到 链接、请求头、参数 进行POST提交 | 3、好处:手机页面看不到兑换的东西,可以使用这张方法进行尝试性兑换 | 4、兑换都是有条件的,例如K30S 需要:米金>1299 && 米久值>400 |
更新:
|----11/8 米金兑换信息表
list.zip
(13.43 KB, 下载次数: 98)
https://wwa.lanzouj.com/iQdmAi6i1ud
|
* 兑换都是合法请求,只是在允许兑换的范围内,进行提交兑换,并不是随意兑换,不存在恶意篡改,能够方便下一次放码的时候,立马进行兑换,比别人快一步。
|
1、最近都在抢K30S 我也在抢,刚好今天支持米金兑换F码,于是预约了一下就出现了下面界面,发现-限量抢兑换中-就感觉可能还要资格(当时小米商城已经看不到这个界面了)。
2、 于是开始抓包准备工具(非必须用这个,用其他的也可以,看着顺眼就用了这个)下载地址 :https://www.coolapk.com/apk/com.minhui.networkcapture
抓包工具
正片开始
1、 打开抓包工具 点小米商城-我的-米金商城-指甲钳(其他也可以)-打开抓包工具看会出现图2 图3这些信息,都有用 (id=24是指甲钳,id=125是8+256月光银,id=124是8+128月光银,不用管&符号)
图1
图2
图3
2、 然后开始操作,发送请求,根据前面抓到的【链接 (灰色字)】和【请求头 (红色字)】和【请求体 (红色字)】就是图二从上往下的圈出来的,就够我们用了,第一张图是后面发送的请求,第二张图是提交多了或者是别的情况,还不清楚,反正过一会又能了,出现第三张图就等一会继续抓或者重新获取新的请求头。
注意:后面所有的请求 header 填的全部都是 【请求头 (红色字,第二个大框内容)】 的东西,不要删除和修改最好
错误显示这个
错误展示
2、 请求成功之后,就能看到这些信息说明没问题,接下来发送兑换请求,继续抓包,方法和之前一样,建议不要轻易尝试,除非你米金多(为了证明真的能请求成功,花了两次5米金,也没截图)证明能够成功,然后发送请求真的发送了,见图4 就是兑换成功,再次发送就出现图5 ,手机也会显示图6,证明成功
开始测试-5米金兑换保温杯-并且提交-显示下面这个代表兑换成功
图4
为了证明真的兑换成了吗,就再发送一下请求,发现 兑换已达上限=======然后打开手机可以看到,确实兑换成功
图5
图6
3、 然后把上面的id=44换成id=125,再次发送请求,就是兑换K30S 8+256月光银,可惜现在是 兑换失败(时不时的去提交一下,指不定就有了呢)
POST请求 详细内容
接口名称(查看米金兑换信息接口)
1) 请求地址(POST)
http://api.m.mi.com:80/v1/retailmember/rights_detail
2) 请求参数:
POST参数:
字段名称 |
字段说明 |
类型 |
必填 |
备注 |
id |
string |
是 |
目前值可选1~125之间,125是K30S 8+256月光银 |
3) 请求返回结果:
{
"code": 0,
"info": "ok",
"desc": "成功",
"data": {
"id": 125,
"type": "fcode",
"product_id": 12982,
"name": "F码:K30S至尊纪念版 8G+256G 月光银",
"gallery": "https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/9513f5745f62b99331ffc0c4b9fb2fe0.jpg",
"price": 1299,
"points_price_text": "",
"buy_type": 1,
"notice_time": 0,
"start_time": 1604545020,
"end_time": 1604631350,
"rule": "",
"capacity": {
"title": "获取条件",
"desc": [
{
"desc": "米久值≧400°,1299米金兑换",
"is_select": true
},
{
"desc": "米久值<400°,不符合条件",
"is_select": false
}
]
},
"range": {
"title": "有效期限",
"desc": "兑换之日起1天内有效"
},
"detail": {
"title": "权益详情",
"desc": "1、您兑换的是F码购买资格,并非商品本身;\n2、F码购买资格适用于 K30S至尊纪念版 8G+256G 月光银,兑换后可先领取300元优惠券再下单;\n3、兑换完成后,APP端到“我的→钱包→购买资格”中使用,小程序端到“我的→F码”中使用;\n4、商品加入购物车后购买资格即刻失效,请勿将其从购物车中删除,如果你在加入购物车2小时内没有下单,这个资格将会失效且不再返还。"
},
"btn_status": 4,
"btn_text": "已兑完",
"tab_content": [
{
"view_type": "plain_view",
"plain_view": {
"img": "https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/9a552edb27e877619efcc3299f6a30d2.jpg?w=1080&h=1920"
}
},
{
手动省略。。。。。。
}
],
"total_num": 2522,
"now_time": 1604583137,
"coupon_code": "",
"goods_price_text": "",
"sub_type": ""
}
}
接口名称(发送米金兑换F码接口)
1) 请求地址 (POST)
http://api.m.mi.com:80/v1/retailmember/exchange
2) 请求参数:
POST参数:
字段名称 |
字段说明 |
类型 |
必填 |
备注 |
id |
string |
Y |
同上 |
3) 请求返回结果:
{
"code": 0,
"info": "ok",
"desc": "成功",
"data": {
"result": 1,
"type": "fcode",
"btn_status": 4,
"btn_text": "已兑完",
"toast": "兑换失败",
"exchange_id": 0,
"points": 0
}
}
前面是分析 直接使用看这
### 经过测试,提交只需要header有Cookie和Mishop-Client-Id这两个就行
获取Cookie 和 Mishop-Client-Id 视频教程 :
视频抓取Cookie 和 Mishop-Client-Id 教程地址(同上GIF一致):
https://wwa.lanzouj.com/iKmD4i470fe
简单的说就是打开抓包工具挂在后台,然后进入小米商城刷新一下页面,再回到抓包工具,找到我们要的信息就行
[Python] 纯文本查看 复制代码
import requests
def start(Cookie, ClientId, ShopId):
headers = {
'Cookie': Cookie,
'Mishop-Client-Id': ClientId,
}
# 查看兑换的商品信息:http://api.m.mi.com/v1/retailmember/rights_detail
# 兑换商品链接:http://api.m.mi.com:80/v1/retailmember/exchange
result = requests.post('http://api.m.mi.com:80/v1/retailmember/exchange', headers=headers, data={'id': ShopId})
print(result.text)
if __name__ == '__main__':
Cookie = 'serviceToken=这里填写你获取到的' # Cookie 里面的值--> Cookie: serviceToken=这些内容
ClientId = '一堆数字' # Mishop-Client-Id: 后面的值 -->Mishop-Client-Id: 这些内容
ShopId = 125 # 125是K30S 8+256 银,其他id可以自己测试
start(Cookie, ClientId, ShopId)
# 我的运行结果:
# {"code":0,"info":"ok","desc":"成功","data":{"result":1,"type":"fcode","btn_status":3,"btn_text":"兑换次数已达上限","toast":"兑换失败","exchange_id":0,"points":0}}
|