- 本项目仅适用于乐健体育
- 对代码改进有任何好的建议,欢迎提
Issues
,或者直接PR
,感谢:handshake::heart:!! - 如果对您有帮助,请顺手点个
Star
吧 - Author😃: sake
先用frida
配合此项目仓库的sake.js
来hook证书验证,干掉乐健体育的ssl pinning
,然后进行packetcapture
。通过分析packet
,向相应站点get
或post
不同的json
进行forward packet
,就可以实现无乐健体育式模拟跑步与活动签到。
为用户提供登录服务
采用post
方法,body
如下:
body = {"entrance":"1","password":"password","userName":"18888888888"}
返还的response
可以获取到很多关键数据:accessToken
,organizationId
采用get
方法,这里返还的response
我们只需要semesterId
body
要提供getCurrent
获取的semesterId
,这里返还的response
我们只需要limitationsGoalsSexInfoId
上传跑步数据
headers
中需提供Authorization
,采用了Bearer<token>
,可以通过获取登录的response
的accesstoken
拼接为Bearer accesstoken
采用post
方法,body
结构为
data ={
"scoringType": 1,
"semesterId": semesterId,
"signPoint": [],
"startTime": starttime,
"totalMileage": distance,
"totalPart": 0.0,
"type": 跑步类型,
"uneffectiveReason": "",
"avePace": random_time / distance * 1000 + random.randint(0,1) / 10,
"calorie": int(distance * random.uniform(70.0,75.0)),
"effectiveMileage": distance,
"effectivePart": 1,
"endTime": endtime,
"gpsMileage": distance,
"limitationsGoalsSexInfoId":limitationsGoalsSexInfoId,
"paceNumber": distance * (random.randint(50,150)),
"paceRange": random.randint(5,10),
"routineLine": [跑步路线]
}
获取课外活动列表
采用post
方法,这里返还的response
我们只需要ActivityId
活动报名
可以报名未开始的活动,服务端不验证报名是否开始。
采用post
方法,要提供getActivityList
获取的ActivityId
活动签到
进行活动的签到,活动签到不需要位置信息,位置信息仅在客户端验证
采用post
方法,要提供getActivityList
获取的ActivityId
直接将main.py文件 raw 到本地,然后在终端/命令提示符下输入python main.py 账号 密码 里程
- 在
Name
中填入username
,在Value
中填入你的账号,点击Add secret
; - 回到刚刚的界面,点击
New repository secret
,在Name
中填入password
,在Value
中填入你的密码,再点击Add secret
; - 再回到刚刚的界面,点击
New repository secret
,在Name
中填入distance
,在Value
中填入你想要跑的里程,再点击Add secret
。
-
本项目仅供学习参考之用,请勿用于违法用途,本项目及其作者不承担相应责任。
-
作者不需要使用乐健体育APP,纯属为爱码代码。
-
项目可能失效,随缘更新,欢迎大佬们PR。
-
如造成作者及其代码提供者损害,作者有权关闭此项目仓库。