雷速体育接口数据解析

背景

最近对前端请求数据加解密产生兴趣。雷速体育赛事模块,展示世界各地足球(还有篮球、网球项目)比赛的实时比分和胜率统计,数据具有一定价值。通过开发者工具的网络面板可以看到,他们对拉取对战直播数据的接口进行了加密,返回类似 base64 编码的字符串。

页面初始化时,会通过 match_live 接口拉回含有:国家(countries)、赛事(events)、对战(matches)、阶段(stages),等字段的完整信息。后续通过 mqtt 推送实时更新的增量数据,动态更新到页面。

请求参数加签,签名信息中包含时间戳,达到防重放目的。

返回数据用 zlib 库编码,还用类似凯撒密码的机制翻转拉丁字母,使得编码后的串无法直接用 base64 解码。

写了个简单 demo 页实现数据解析。效果见下方视频 。

视频号《雷速体育接口破解》

微信扫码打开视频号

改进

假设让我来实现前后端数据传输加密,会考虑将请求体(入参)进行二进制编码,增加阅读难度的同时,缩减请求尺寸 ———— 毕竟浏览器发送请求时未进行 gzip

而返回数据,可以去掉 zlib 步骤,理由是:

  • 1、服务端发出的数据一般都经过 gzip 压缩, zlib编码缩减尺寸效果不明显;
  • 2、解码都方法是通用的,追踪代码很容易找到方法,并未增加破解难度。反而导致正常用户额外加载 js 库文件,以及长字符串解码,增加性能负担。

接入加密通道,应该做到业务无感,开发少感。浏览器端通过重写 XMLHttpRequest 对象,劫持网页请求;服务器端使用网关接收加密后的请求,解密后转发到原始目标接口。这样,最终的效果就是页面载入一个 jssdk 文件,就完成了接口加解密接入。采用无入侵的接入方式,好处是业务方的前后端均无需改造。这就要求加解密方法尽量简洁,无依赖,否则额外的 jssdk 包尺寸太大,就不好。

声明

仅供学习,无不良引导。请不要通过任何途径直接索要雷速数据解析方式,问就是没有,删了。

广告时间

最后,最近还尝试了音乐创作,已有几首原创歌曲上架QQ音乐。实现AI对于普通人的第二层价值:个人增强(借鉴吴东子老师观点)

欢迎老铁们围观,打赏666者,可以私信留下邮箱,获取神秘礼品~

打赏谈天吉皮提

分享到:

评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理