清除游戏数据后是不是以前的lol改了名字战绩没了都就没了

原标题:分析了20万场吃鸡数据后,我有这些发现!

最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波。

首先秀一波战绩,开黑情况下我们团队吃鸡率非常高,近 100 场吃鸡次数 51 次。如下图:

上周我在微信游戏频道看战绩的时候突发奇想,是不是可以通过这个方式抓取到很多战斗数据,然后分析看看有什么规律。简单评估了一下,觉得可行,咱就开始。

第一步当然是把这些战绩数据采集下来,首先我们需要了解页面背后的故事,即页面是如何获取战斗数据的。

使用 Charles 抓包:在 Mac 下推荐使用工具 Charles 来从协议层抓取手机上的流量。

原理就是在 Mac 上开启一个代*理*服务器,然后将手机的网络代*理设置为 Mac,这样手机上的所有流量都会经过我们的代*理*服务器了。

HTTPS 加密流量的处理

在实际操作的时候,我发现微信所有的流量都走了 HTTPS,导致我们抓到的都是加密数据,没有任何参考意义。

经过研究,可以通过在手机和电脑都*** Charles 根***的方式来实现对 HTTPS流量的分析。

******后,我们的流量大致是这样子的,如下图:

经过上述的配置,我们已经可以读取到 HTTPS 的请求和响应数据了,如下图所示。

  • 其实这就是一个非常典型的中间人场景

接下来就根据这些数据来找出我们需要的接口了,经过分析,主要涉及三个接口:

  • 获取用户指定战绩详细信息接口

分析:这个接口响应了战斗的详细信息,包括杀*敌数、爆*头数、救人数、跑动距离等等,足够我们分析了。

这个接口还响应了是被谁杀死的以及组团成员的 openid,利用这个特性我们就可无限深度的发散爬取更多用户的数据。

至于 Cookie 中的 pass_ticket 等信息肯定是用于权限认证的,在上述的几次请求中这些信息都没有变化。

所以我们不需要深研其是怎么算出来的,只需要抓包提取到默认信息后填到代码里面就可以用了。

接口已经确定下来了,接下来就是去抓取足够量的数据了。

参照这种方式,我们可以很快把另外两个接口写好。

使用 Redis 来标记爬取过的信息

在上述接口中我们可能从用户 A 的入口进去找到用户 B 的 openid,然后从用户 B 的入口进去又找到用户 A 的 openid,为了避免重复采集,我们需要记录下哪些信息是我们采集过的。

# 在提取battle list之前,首先判断这用用户的数据是否已经提取过了

Celery 是一个非常好用的分布式队列管理工具,我这次只打算在我自己的电脑上运行,所以并没有用到分布式的功能。

我们创建三个 task 和三个 queue,代码如下:

然后在 task 中控制 API 请求和 Redis 数据实现完整的任务逻辑:

# 判断是否已经取过用户战绩列表信息

# 为每一场战斗创建异步获取详情任务

接下来就是开始抓取阶段,因为我们是发散使用爬虫,所以需要给代码一个用户的入口,手动创建一个用户的采集任务:

有入口之后我们就用 Celery 来启动 Worker 去开始爬虫:

这样我们的爬虫就可以愉快的跑起来了。再通过 celery-flower 来查看执行情况:

通过 Flower,我们可以看到运行的效率还是非常不错的。

在执行过程中会发现 get_battle_list 跑太快,导致 get_battle_info 即使开了 30 个并发都还会积压很多,所以需要适时的去停一下这些 worker。在我们抓到 20 万条信息之后就可以停下来了。

20 万场战斗的数据已经抓取好了,全部分成 Json 文件存在我本地磁盘上,接下来就做一些简单的分析。

Python 在数据分析领域也非常强大,有很多非常优秀的库,如 pandas 和 NumPy,可惜我都没有学过。

而且对于一个高考数学只考了 70 几分的人来说,数据分析实在是难,所以就自己写了一个非常简单的程序来做一些浅度分析。

需要进行深度分析,又不想自己爬虫的大牛可以联系我打包这些数据。

平均用户日在线时长 2 小时

从分布图上看大部分用户都在 1 小时以上,最猛的几个人超过 8 小时。(注:我这里统计的是每一局的存活时间,实际在线时长会比我这个更长。

女性角色被救次数高于男性

终于知道为什么有那么多人妖了,原来在游戏里面可以占便宜啊。

女性角色救人次数高于男性

给了大家一个带妹上分的好理由。

估计周五大家都要忙着交差和写周报了。

晚上 22 点是游戏高峰

凌晨还有那么多人玩,你们不睡觉吗?

最远击*杀距离 639 米

我看了一下 98K、SKS 和 AWP 的有效射程,大致都在 800 米以内,所以这个值可信度还是可以的。反过来看抖音上的那些超远距离击*杀应该都是摆拍的。

能拿到「救死扶伤」称号才是最高荣耀

从分布情况可以看出来,救死扶伤比十杀还要难。

能拿到救死扶伤称号的大部分都是女性角色,再一次证明玩游戏要带妹。 回归到这个游戏的本质,那就是生存游戏,没什么比活下来更重要的了。

这次爬虫主要是利用了微信游戏频道可以查看陌生人数据的场景才能提取到这么多数据。

我们可以通过同样的手段来分析王者荣耀和其他游戏的数据,有兴趣的同学可以尝试一下。最后再说一下,UMP9 是把好***,配 2 倍镜非常爽。

简介:先后从事过测试、运维、开发和需求分析工作,主要开发语言是 Python,现任一家小型公司技术团队负责人。微信号:zhangbo_。

出处:经Python开发者微信公众号授权转载。

我的个人战绩一直跟游戏不同步,跟我一个队伍的其他两个dps号也不更新战绩了!!想看复盘都看不到QAQ

  今天国服突然发布了玩家期待已久的生涯数据查询功能,直接访问守望先锋官网即可看到多出来的菜单栏。

  查询自己战绩的网址:/career/

  经过一番摸索发现必须要登录自己的帐号才能查询,而且只能看到自己的数据。目前没有发现有搜索功能,所以你无法查询别人的战绩。

  我这么菜是我不打守望的理由

  这个与外服可以自由查询任意玩家的数据的方式完全不同。外服因为数据完全开放,很多做数据分析的网站会直接采集玩家的信息并作大数据分析。这有好处也有坏处,好处是大家可以很清楚的看到整个守望先锋的各种数据趋势以及各种数据排名。坏处也同样显而易见,那就是会也带来了一定的隐私的问题,只要你暴露了你的战网TAG,你的数据就会被所有数据分析网站采集。很多玩家并不喜欢自己的数据被任意品评。

  在暴雪开放了查询功能之后,一度国服的数据也是可以查询的,很多玩家对此也趋之若鹜,很多APP跟网站也推出了战绩查询的功能。但是国服的数据很快就下架了,再也查不了国服数据。

  我个人认为,国服此举很可能是担心玩家的数据被用在做各种营销上,毕竟每个查询的用户都是买了198游戏的人。此外,之前开放查询的情况下,每个战绩查询网站都互相采集数据,所以只要暴露过一次战网ID,你的数据就天下皆知,根本没有办法禁止。说不定某天还会有什么软件,当你的队友选了一个英雄之后,自动在聊天频道打出:

  某某玩家切换到英雄半藏

  胜率XX,命中率XX,总场次XX,平均伤害量XX,战斗力评分5。

  本信息来自XX守望先锋助手

  然后互喷的节奏开始。

  所以,对于国服生涯只能查询自己数据的设计,我个人是赞同这个做法的。毕竟我真的挺菜的。你对于国服只能查询自己数据的设计是如何看的?

新浪声明:新浪网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。

参考资料

 

随机推荐