您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

5b51 2022/1/14 8:24:43 python 字数 9032 阅读 667 来源 www.jb51.cc/python

首先,神枪镇楼 ? ? 背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波。上周在在微信游戏频道看战绩的时候突发奇想,是不是可以通过这个方式抓取到很多战斗

概述

首先,神枪镇楼

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波。 上周在在微信游戏频道看战绩的时候突发奇想,是不是可以通过这个方式抓取到很多战斗数据,然后分析看看有什么规律。

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

进群:548377875   即可获取数十套PDF哦!

简单评估了一下,觉得可行,咱就开始。

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

使用Charles抓包

抓包实现

在Mac下推荐使用工具Charles来从协议层抓取手机上的流量,原理就是在Mac上开启一个代*理*服务器,然后将手机的网络代*理设置为Mac,这样手机上的所有流量都会经过我们的代*理*服务器了。 大致流程如下:

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

https加密流量的处理

在实际操作的时候发现微信所有的流量都走了HTTPS,导致我们的抓到的都是加密数据,对我们没有任何参考意义。 经过研究,可以通过在手机和电脑都安装Charles根证书的方式来实现对Https流量的分析,具体操作可以参考:

安装证书后,我们的流量大致是这样子的

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

数据接口

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

下面我们一个一个

1. 获取用户信息接口

API/cgi-bin/gamewap/getpubgmdatacenterindex方法GET参数openid、pass_ticketcookiekey pass_ticket、uin、pgv_pvid、sd_cookie_crttime、sd_userid

openid是用户的惟一标识。

2. 获取用户战绩列表接口

3. 获取用户战绩详情接口

API/cgi-bin/gamewap/getpubgmbattledetail方法GET参数openid、pass_ticket、room_idcookiekey pass_ticket、uin、pgv_pvid、sd_cookie_crttime、sd_userid

至于cookie中的息pass_ticket等信息肯定是用于权限认证的,在上述的几次请求中这些信息都没有变化,所以我们不需要深研其是怎么算出来的,只需要抓包提取认信息后填到代码里面就可以用了。

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

使用requests请求接口获取数据

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

使用redis来标记已经爬取过的信息

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

使用celery来管理队列

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

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

开始抓取

因为我们是发散是爬虫,所以需要给代码一个用户的入口,所以需要手动创建一个用户的采集任务

有入口之后我们就用celery来启动worker去开始爬虫

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

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

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

分析方案

20万场战斗的数据已经抓取好了,全部分成json文件存在我本地磁盘上,接下来就做一些简单的分析。 python在数据分析领域也非常强大,有很多非常优秀的库,如pandas和NumPy,可惜我都没有学过,而且对于一个高考数学只考了70几分的人来说,数据分析实在是难,所以就自己写了一个非常简单的程序来做一些浅度分析。 需要进行深度分析,又不想自己爬虫的大牛可以联系我打包这些数据。

分析结果

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

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

从分布图上看大部分用户都在1小时以上,最猛的几个人超过8小时。

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

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

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

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

4. 周五大家最忙

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

5. 晚上22点是游戏高峰

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

6. 最远击*杀距离639米

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

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

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!

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

这次爬虫主要是利用了微信游戏频道可以查看陌生人数据的场景才能提取到这么多数据。我们可以通过同样的手段来分析王者荣耀和其它游戏的数据,有兴趣的同学可以尝试一下。 最后再说一下,UMP9是把好枪,配2倍镜非常爽。

总结

以上是编程之家为你收集整理的利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!全部内容,希望文章能够帮你解决利用Python来写吃鸡的“理论外挂”!学会之后基本把把吃鸡!所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶