记录一次抓包修改WX/ZFB/QQ步数过程(附源码下载)
前段时间,看到微信运动上有各种大神一天几万步的,尤其是那些背景图自带嘲讽的占领了微信封面。就在想:“你们整天不睡觉么”?然后好奇的我,在搜索引擎上各种爬梯子,终于找到了一款网页刷步工具运动宝盒刷步数,很可惜,就用了一次就失效了,话说作为菜鸟程序员出身的我,当然不能忍。{:1_926:}{:1_926:}{:1_926:}以上都是废话,进入正题,此方法简单易懂,技术成本低,大体思路就是利用抓包工具抓取运动软件同步微信步数接口,通过模拟数据来请求微信,达到修改目的。
工具:
1.抓包工具(就用常用的Flidder)怎么用的话 可以百度 https://blog.csdn.net/ohmygirl/article/details/17846199
2. 运动软件 (就先拿乐心健康做案例,其实市面上的软件都大同小异)
方法:
1.下载乐心健康app
2.注册 登录 数据共享关联微信 支付宝
3.开启flidder抓取接口
我们摆几下手,就能看到有一条数据同步的接口,点击查看
step就是我们要同步上传的步数,OK 大功告成
4.模拟接口运行
关于模拟接口,有各种模拟办法,我们就用最简单的js来做吧,随便用个express搭个服务器写个接口就行,其中填入自己抓的数据值到对应字段里
router.post('/proxy', function(req, res, next){
var bodyData={list: [{
DataSource: 2,
active: 1,
calories: 0.12,
created: new Date().format("yyyy-MM-dd hh:mm:ss"),
dataSource: 2,
dayMeasurementTime: new Date().format("yyyy-MM-dd"),
deviceId: "M_NULL",
distance: 51,
exerciseTime: 0,
id: "输入您抓取的对应的id",
isUpload: 0,
measurementTime: new Date().format("yyyy-MM-dd hh:mm:ss"),
priority: 0,
step: Number(req.body.bushu),//这里就是您要同步的步数
type: 2,
updated: new Date().getTime(),
userId: "输入您抓取的userId"
}]};
var url="输入您抓取的接口地址“;
/*接口地址会加杂一些参数,依据实际情况填入即可,例如”https://sports.lifesense.com/sport_service/sport/sport/uploadMobileStepV2?country=%E4%B8%AD%E5%9B%BD&city=%E6%88%90%E9%83%BD&cityCode=510100&timezone=Asia%2FShanghai&latitude=30.570562&os_country=CN&channel=xiaomi&language=zh&openudid=&platform=android&province=%E5%9B%9B%E5%B7%9D%E7%9C%81&appType=6&requestId=6fe218d80aa74c59b66c4725e9bc13ec&countryCode=&systemType=2&longitude=104.062329&devicemodel=MI+9&area=CN&screenwidth=1080&os_langs=zh&provinceCode=510000&promotion_channel=xiaomi&version=4.5&areaCode=510107&network_type=wifi&osversion=10&screenheight=2135"*/
axios.post(url,bodyData,{
headers:{
"Cookie": "Cookie值",
"Content-Type": "application/json; charset=utf-8",
"User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10; MI 9 MIUI/V11.0.5.0.QFACNXM)",//这里有涉及手机型号
"Host": "sports.lifesense.com",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
"Content-Length": "352",
},
}).then(function(succ){
console.log(succ.data);//处理成功的函数 相当于success
res.send(succ.data)
}).catch(function(error){
console.log(error)//错误处理 相当于error
res.send(error)
})
写了个简单的页面来调用
输入步数,我们测试一下,25133 提交成功!
5.查看修改结果
在微信查看一下结果!
这图够嘲讽吧{:1_929:}
支付宝看一下结果
当然,这个只能修改你抓到的账户哈!简单的js接口,源码地址:https://github.com/shuaimoumou/editStep.git, 仅供学习!转载请注明出处哈,当然你不写我也没话说! 抓包之后用python request提交
但是只能最高修改一万步,这是为什么?
import requests
import time
import urllib3
import json
def change_Steps(steps):
url = 'https://sports.lifesense.com/sport_service/sport/sport/uploadMobileStepV2?country=%E4%B8%AD%E5%9B%BD&city=%E9%95%BF%E6%B2%99&cityCode=430100&timezone=Asia%2FShanghai&latitude=27.969713&os_country=CN&channel=huawei&language=zh&openudid=&platform=android&province=%E6%B9%96%E5%8D%97%E7%9C%81&appType=6&requestId=1cda94c5f7b7468c9419beb024b558cf&countryCode=&systemType=2&longitude=112.046989&devicemodel=HRY-AL00Ta&area=CN&screenwidth=1080&os_langs=zh&provinceCode=430000&promotion_channel=huawei&rnd=878f5f5e&version=4.6.2&areaCode=430182&requestToken=32b8a19b6cc9c5c9ba4e31aefbb00359&network_type=wifi&osversion=10&screenheight=2259'
bodyData = {
"list": [
{"active": 1,
"calories": 0,
"created": time.strftime("%Y-%m-%d %H:%M:%S"),
"dataSource": 2,
"dayMeasurementTime": time.strftime("%Y-%m-%d"),
"deviceId": "M_NULL",
"distance": steps // 3,
"id": "0536c843f14641e6a7221d6d8ed58fe8",
"isUpload": 1,
"measurementTime": time.strftime("%Y-%m-%d %H:%M:%S"),
"priority": 0,
"step": steps,
"type": 2,
"updated": int(round(int(time.time()) * 1000)),
"userId": "26799845",
"DataSource": 3,
"exerciseTime": 0
}
]
}
bodyData = json.dumps(bodyData)
headers = {
'Cookie': 'session=%7B%22accessToken%22%3A%225ff6daa624c74542abe9c4576b6120c5%22%2C%22appType%22%3A6%2C%22expireAt%22%3A1598090617906%2C%22loginId%22%3A%2226799845%22%2C%22userType%22%3A99%2C%22gray%22%3Afalse%7D; appType2=6; accessToken2=5ff6daa624c74542abe9c4576b6120c5; expireAt2=1598090617906; loginId2=26799845; userType2=99; gray2=false; session=%7B%22accessToken%22%3A%225ff6daa624c74542abe9c4576b6120c5%22%2C%22appType%22%3A6%2C%22expireAt%22%3A1598090617906%2C%22loginId%22%3A%2226799845%22%2C%22userType%22%3A99%2C%22gray%22%3Afalse%7D; userType2=99; expireAt2=1598090617906; accessToken=D2A6AFB93531605DBE56DC2EEE74C4C9A2A9D448D7091FD682B71C94EA82651DACF21FA1EE36EF7A3C242B9712DA0194A460995D3611B4A14377E3900DF9806005FF025EE32D40925CDD613E04A72BA53A1CEA85B62B1E5876B669542B221078.FC800F8B2F9A81A037BB247BA981EB947D2D665249B3B78646975B1A1A48AF2B; accessToken2=5ff6daa624c74542abe9c4576b6120c5; loginId2=26799845; gray2=false; appType2=6',
"Content-Type": "application/json; charset=utf-8",
"User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10; HRY-AL00Ta Build/HONORHRY-AL00Ta)",
"Host": "sports.lifesense.com",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
"Content-Length": "390"
}
urllib3.disable_warnings()
response = requests.post(url, data=bodyData, headers=headers, verify=False)
data = json.loads(response.text)
print(data["code"], end=' ')
print(data["msg"], end=' ')
print(len(data["data"]["pedometerRecordHourlyList"]), end=' ')
print(data["data"]["pedometerRecordHourlyList"]['step'].split(','))
# print(int(data["data"]["pedometerRecordHourlyList"]["step"].split(',')))
if __name__ == '__main__':
change_Steps(29000)
本帖最后由 神灵小将军 于 2020-7-18 17:58 编辑
折腾好久 总算成功了
1、安装node.js
2、下载github里面的源码
3、下载fiddler,在工具-选项-HTTPS打开解密HTTPS流量,连接处允许远程计算机连接
4、手机跟电脑在同一局域网内,手机设置代{过}{滤}理经过电脑的IP
5、捉包
6、更改github里面的源码index.js里的内容,注意:post里的内容也要更改
7、在作者提供的源码文件夹下 以管理员模式运行CMD
8、安装express npm install express --save
9、装一下Express 应用生成器 npm install express-generator -g
10、安装应用 npm install
11、启动express服务器 npm start
12、网页输入:http://localhost:1000/
哈哈,这图够嘲讽,拿走去嘲讽别人去咯,谢谢 小白来学习了,支持老师,老师辛苦了,感谢分享:handshake 学习学习 想问问爱疯的thor能否实现手机抓这个包? 修改成功,可是数据不同步微信和支付宝害 网页版不是还能用吗? 好像很复杂的操作呀!!! 很好,思路清奇啊,感谢分享 我看到抓包看到WX和ZFB还以为能修改余额呢。:lol 紫灬曦 发表于 2020-4-1 18:54
哈哈,这图够嘲讽,拿走去嘲讽别人去咯,谢谢
在动物园拍的羊驼{:1_926:}