Skip to content

如何获取悦跑圈数据 #197

@yihong0618

Description

@yihong0618

这几天想给朋友分享如何把跑步数据同步到 NRC 发现自己当年一系列的操作几乎忘光了,他没有成功,有些遗憾。想着,如果当时写个博客就好了,以后跟人分享还方便,也能让更多的人转移成功。

于是,这些天尝试如何获取悦跑圈数据的过程,记录一下。

  • 尝试给 running_page 加入悦跑圈已经很久了,我是先本着凡事先搜索的原则找到了有人分享过悦跑圈逆向的加密。但我不知道接口,尝试抓包,嗯,不出意外 SSL Pinning
  • 为了解决这个,我先后学会了,装夜神模拟器,怎么 trust,怎么模拟器配合 charles 抓包,但是,不知道为什么还是失败。不过倒是学了一点逆向安卓,发现了 Xserver 这个项目
  • 放弃之际,ben-29 给我发来一条私信,说他抓到了悦跑圈的包,说是用低版本的 apk 可以,我一下就兴奋了。于是去下了一个3.0的,果然能抓到,好兴奋。
  • 接下来就是一系列破解接口的过程,具体方式方式不便讲。但发现了一个隐藏的项目 PKURunningHelper 里面直接有加密需要的两个 key。我用了一些其中的代码,但实在是不喜欢代码的 taste,几乎都重写了。
  • 但是带来了一个新问题,joyrun 更改了它的登陆策略,目前,只支持单设备登陆并且,如果是新设备必须用验证码登陆,这下就麻烦了,一下子必须 runner 必须具备抓包和搞到低版本的能力,这样是没法通用的。
  • 于是我想了从验证码就行突破找找运气,我尝试了只用验证码校验的接口是否能登陆成功,-- 在手机获取验证码,然后把验证码传入 python 端校验验证码的接口上,看起来我运气不错,搞定了。
  • 并且,登陆之后会有 sid, uid, 悦跑圈的 cookie 也是用这两个拼的,加密也是,只需要保留这两个大家就可以再用这个登陆了,方便很多,我加了个简单的用 sid, uid 登陆的方法。
  • 之后导入数据,转换成 GPX 和其它的软件类似,不过 joyrun 的数据格式做的太差了甚至和 keep 比都差很多,心率和海拔是分开的没有时间戳。。。转换成 GPX 造成了非常的大困难。我暂时没加这两个。

关于获取数据代码在这里

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions