⽶游社数据分析实战(⼀)数据的获取、解析与存储
⾃从发布了 「原神」细节向初体验 这篇⽂章之后,粉丝朋友们纷纷感叹“原来你也(开始)玩原神”。
android旧版本app不过刚开始是因为等级不够,后来是不到⼈,再后来是在做主线,⽬前我还没和别⼈联机过。
⼊坑⼀个多⽉⼀来,⾝边的朋友不停的向我安利⽶游社这个 App,终于,我下载下来看了看。
不得不说,如果是重度玩家的话,这个 App 确实能提升游戏体验,不过作为资深观景玩家,⼤地图是不可能⽤的。
于是我盯上了⾸页的信息流,想着⾝为技术⼈,不爬点数据下来有点对不起⽶哈游的 Slogan“技术宅拯救世界”,于是,开⼲。
⼀开始就选错了⽅向htmlhref是什么意思
⽶游社的内容主要集中在在⼿机端,⽽在 App 的动态数据获取⽅⾯,各⼤⼚商的实现⽅案都⼤差不差,⽆⾮是请求接⼝、获取数据、展⽰界⾯。
于是我打开了 HttpCanary(⼀个安卓端⽹络抓包⼯具),⼀波操作之后,打开⽶游社 App,下滑加载内容。
然后跳出了⽹络连接失败的提⽰。
JRT 技术验证时,我对简书 App 抓包就遇到过类似的问题,很明显,这是 SSL 中间⼈攻击防护。
简单来说,App 会对服务端的 SSL 证书进⾏校验,如果不匹配,说明在这条连接中间,有节点在篡改数据。
这种情况并⾮⽆解,但需要对设备进⾏ Root,将抓包⼯具的证书添加到信任列表,或者对 App 进⾏反编译。前者费时费⼒,后者技术难度⾼且有法律风险,看来这条路⾏不通。
python请求并解析json数据在我上⽹搜索相关资料的时候,⽆意间发现⽶游社有⽹页端,⽽且我要的信息流数据在⽹页端同样有展⽰。
技术难度⼀下⼦就下来了,只需要分析⽹络请求,然后针对性提取数据即可。
⽹络请求分析
F12 调出开发者⼯具,然后...
进⼊了调试模式,数据根本没加载出来。
这是⼀种很常见的反爬措施,原理⼤概是这样:开发者⼯具打开的时候,遇到 JS 代码中的调试器(Debugger)语句就会暂停,否则跳过这段代码继续执⾏,只需要通过某种⽅式不断尝试打开调试器(⽐如死循环),就可以让我们打开开发者⼯具时⽆法正常获取数据。
distinct和distinctive解决⽅法也很简单,只需要点击这个按钮:
这个按钮会禁⽤掉断点调试功能,开启之后刷新⽹页,就可以正常获取到数据了。边框设计图片简笔画
切换到⽹络选项卡,筛选异步请求(Fetch/XHR):
向下滚动页⾯,加载新内容,观察请求⾯板的变化:
很明显,红圈中的两个请求是加载时发起的。
查看请求参数,不难发现第⼆个请求的作⽤是根据帖⼦ ID 获取互动数据,我们暂且放在⼀边,主要关注第⼀个请求:
做一个网站的流程最近发现了⼀个很好⽤的⽹络请求⼯具:Hoppscotch,我们将请求信息复制进去,点击发送。
Bingo,响应数据出来了。看到这⾥,我不得不感叹⼀句,在游戏上⽶哈游算是同赛道顶尖,但在数据安全这⽅⾯,未免有些太过草率了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论