简单分析朋友圈手游吃鸡的数据,分析人机击杀和数据可视化

写在前面

最近晚上没事经常和朋友一起开黑玩手游吃鸡,在每一盘游戏都会发现有这样一类“玩家”,这类“玩家”有以下特征:

  1. 突然出现在你的身边放“冷枪”,但却对你造成的伤害很低
  2. 走位如同无头苍蝇,打中他一枪就换个方向跑
  3. 装备极好,甚至不少装备三级套

估计大家已经猜到这些“玩家”是腾讯官方为了补充游戏人数,和增加游戏体验的“机器人”,俗称“人机”。
在我的印象中,越低的段位,人机出现的概率往往会越高,甚至在刚入坑的几场游戏中,除了自己以外其他玩家都是人机。事不宜迟,马上抓取分析微信朋友圈的吃鸡数据。

男人之间的对话¬_¬:

数据获取

微信端的吃鸡数据我们通过微信发现页面的游戏窗口可查询,我们需要在手机客户端与服务器端之间截获这些数据。这里就需要神器“Charles”作为代理人,通过拦截客户端的数据,再伪装成客户端向服务器发送请求,从而对网络封包截获和分析。

使用Charles抓包

1.设置Charles:
设置代理服务器端口:
在这里插入图片描述
关闭windows的代理:
在这里插入图片描述
在手机端的无线局域网下设置当前连接网络的手动配置服,服务器填写本机IP,端口填写Charles配置的端口。
这样就完成了基本配置,此时Charles已经可以截获客户端的数据了。
在这里插入图片描述

处理https数据

微信请求流量均采用https协议,而导致抓取到加密的数据,因此需要在客户端和电脑安装Charles的证书。
在这里插入图片描述
之后就可以看到解密后的数据。
在这里插入图片描述

接口分析

这里我们用三个数据接口:

getfeatureranklist2

  • 作用:获取微信朋友圈好友信息
  • 方法:get
  • 参数:'appid':游戏id(固定) 'time_type':(时间类型,比如本周,本赛季等), 'rank_type':(比赛类型,比如单人,双人等), 'method':'GET', 'abt':'26', 'pass_ticket'(每次都是固定的)
    在这里插入图片描述
    getjdqssybattlelist?
  • 作用:获取某好友最近游戏场次
  • 方法:get
  • 参数:'session_id':(会话id,每次登陆系统会分配一个session_id), 'limit':(当前页面最大显示场数), 'after_time':(下一页面第一个比赛的时间戳), 'plat_id':(101单人模式 102 双人模式 103 四人模式), 'mode_type':(1:第一人称,2:第三人称)
    在这里插入图片描述
    getjdqssybattledetail??
  • 作用:获取某好友在某场比赛的比赛信息
  • 方法:get
  • 参数:'session_id':(会话id,每次登陆系统会分配一个session_id), 'openid':(每一个玩家的一个唯一的id), 'team_id':(玩家所在队伍在该场战斗的id), 'plat_id':(平台id,ios系统为0 Android系统为1), 'battle_id':(某一场战斗的id), 'mode':(101单人模式 102 双人模式 103 四人模式), 'dt_event_time':(开始时间戳), 'type': (# default 1)
    在这里插入图片描述

注意:

  • session_id的获取方法如微信开发文档所示,我们这里只是简单粗暴的从Charles抓取:
    在这里插入图片描述
  • 有些场次的详细信息因为相隔时间太久而无法抓取
    在这里插入图片描述
  • 这里只抓取正式比赛(season:1-7)的数据,而不抓取娱乐模式(season:0)的数据
  • 有的玩家有两个账号,即双平台(ios & Android,比如我¬_¬),那么就要对两个平台的数据全部抓取
  • 在每进行一次get请求后,设置延时2s左右,否则会因请求次数过频繁而报api请求次数已达最大值的错误

找到这三个关键的接口,我们就只需要按照如下流程图的思路便可以得到所需要的数据:

朋友圈全部可见好友信息
每位好友最近所有战斗信息
最近每场战斗详细信息
每位好友最高击杀战斗场次
最高击杀场次详细信息

数据分析

虽然爬取到数据,然而如何区分人和人机呢?
通过观察好友的open_id和击杀人机的open_id可以看出
真人玩家的open_id格式如下:osewR0************************
人机的open_id 格式如下:osesjdksjjkd_(battle_id)_(number)
所以我们对每个玩家open_id分割后与该场次的battle_id比对,如一致则说明该open_id为人机!

1.朋友圈玩家最高击杀场次人机击杀分析

朋友圈吃鸡列表的好友共有27人,但其中3人最高击杀场次因相隔时间太久而无法抓取。
这24人中,最高击杀18人,最低也有8人,但我们看看这些数据“水分”如何呢?

  1. 我们将数据按照人机击杀比排序,可以看出11人的人机击杀占比为100%,也就是说,击杀全部玩家为机器人
  2. 17位好友人机击杀占比大于50%,22位好友人机击杀占比大于70%
  3. 当然好友也不乏大神,最厉害的一位好友击杀15人,人机仅占2人,是个狼灭?

所以,如果你的一个朋友告诉你,他最高击杀数为十几人时,你的第一反应应该是,50%的概率他杀的全部是人机,30%的概率他杀了一半人机,20%的概率你可以抱紧大腿,上分求带了>_<
在这里插入图片描述

2.朋友圈各段位人机击杀分析

这里爬取27位好友各段位的最近击杀场次,并按照段位从低到高的顺序显示,那么我们看看是否段位越低,人机越多呢?

  • 因为有些场次相隔时间太久而无法爬取详细信息,所以只爬取到了从青铜到王牌7个段位的数据(某个战神段位的朋友的数据因时间久而没有爬到,仰望大佬orz)
  • 数据基本呈正态分布,其中青铜、皇冠和超级王牌三个段位的数据较少,总共击杀数均少于100
  • 黄金段位击杀数最多,远高于其他各段位,看样子大部分朋友在黄金段位待了很长一段时间
  • 白银段位和星钻段位的总击杀数相似,而人机占比也在0.4,这里大胆猜测:段位和人机占比没有关系!
  • 除了超级王牌段位,其他段位的人机击杀占比大约分布在0.4~0.5

虽然数据量比较少,数据说服力不足,我只能粗略得出这样一个结论:在中低段位,人机占比基本在50%左右,并不会随段位升高而减少。
在这里插入图片描述

3.朋友圈在不同模式下各段位场次分布分析

简单分析完人机击杀占比,我还发现了一些可以可视化的数据,比如在不同模式下各段位场次分布

  • 单人模式下,场次主要分布低段位白银段位占比最高,和最高段位(无敌是多么的寂寞)
  • 双人模式下,场次主要分布中低段位黄金段位占比最高
  • 四人模式下,场次覆盖所有段位铂金段位占比最高

所以说,想要达到高段位,叫上你的基友一起四排哇~
在这里插入图片描述

4.朋友圈吃鸡时间分布

为了显示更加直观,我选择极坐标图绘制每天,每周的吃鸡时间分布:

  • 朋友圈好友每天吃鸡的时间的高峰期分别是下午4点到5点晚上7点到11点
  • 晚上10点到11点这两个小时的游戏场次,几乎是全天其余时间场次的总和
  • 不少好友在大半夜(1点到4点)也在吃鸡,盲猜一下海外留学党和修仙党~
  • 朋友圈好友每周吃鸡的时间的高峰期分别是星期五星期六
  • 周五游戏场数最多,周三游戏场数最少
    在这里插入图片描述

结语

粗略简单地做了一个人机数据分析和可视化,当然还有更多有趣的数据等待去挖掘,如果还有一些很赞的想法欢迎留言。祝大家上分愉快,大吉大利,天天吃?!
在这里插入图片描述
完整代码链接如下代码地址

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值