skip to content
Pure Ink

抓包工具应用实践

/ 6 min read

前言

csgo 除了官方服务器,还有各种的第三方平台如国外的 esea,faceit 以及国内的三家b5,5e 和完美平台。

每个平台上都会记录详细的个人数据,我打算将这些数据整合起来展示,因此需要抓到平台的数据接口。

浏览器(devtools)

5E平台提供了网页,而B5和完美只有客户端,从最简单的网站开始。

在 5e 的网站上找到我的个人主页,并打开开发者工具的网络选项,就可以看到请求。

5e chrome截图

很可惜,5e的网站是服务端渲染,没找到所需的api端点,只能下载抓包工具打开客户端探索了。

windows 端 fiddler

在 windows 系统中,我下载了fiddler进行抓包,软件使用需要注册登录并配置 https,在本机抓包无需额外的配置,相当顺利的找到了 5e 和 b5 的端点。

我还尝试使用了charles,但软件设计较为复古,免费版体验也不如人意。

5e fiddler b5 fiddler

本认为会这么顺利的进行下去,完美平台时却有些不同。每一个接口,都需要a,r,s,t四个参数。我不能确定这四个参数的意义,我需要的个人数据接口更是需要 12 个参数。

完美 paw

这12个参数每一个都不能缺少,测试时其中一些一直在变化,这种不稳定的端点难以使用,因此只能放弃。

ios 抓包

偶然间想起了完美还有一款手机app(完美世界电竞),虽然无法确认它们是否使用相同的端点,从学习的角度决定试试手机的抓包。

还是使用fiddler,安装打开后,根据提示安装电脑端的证书。在设置的 https 选项中添加 ignore server certificate errors,以及在 connections 中添加 allow remote computers to connect。然后保证手机和电脑处于同一网络下,用手机 safari 打开对应的地址(由电脑 ip 和软件中设置的端口组成)下载证书。在 ios14 中,需要在 general-> profile 中进行安装,general -> about -> certificate trust settings 中启用。还需要在手机设置中找到对应 wifi 设置 http 代理,填入电脑的 ip 地址和对应端口。

此时在手机打开完美世界电竞进入对应界面,fiddler 会实时显示所有的信息。

完美app fiddler

可以发现个人数据和高光视频的端点都不需要任何额外的参数,仅需要steamid即可查询。

surge

除了借助电脑对手机应用进行抓包,我还购买了surge,相比我之前使用的代理工具可以提供更多的功能和信息,并且无需使用电脑。

安装证书后打开mitm抓取流量,进入需要抓包的应用操作,返回 surge 即可查看最近访问请求,点击可预览返回的 json 数据。

小黑盒接口截图

除了尝试了新的工具,手机APP的接口仅使用steamid或者用户名就可以查询,相比PC客户端抓包需要加密入参的方式更易用。

端点总结

找这些接口让我有解密的快感,顺便学习了一点抓包的知识和工具的使用,很好玩。

找到的端点如下

  • 5e(get)

https://client.5ewin.com/api/data/player_detail/a73841959?yyyy=2021&season=1&match_type=1

(自行更换用户名和赛季等参数,以下不做提示)

  • 完美个人数据(post)

https://api.wmpvp.com/api/v2/csgo/pvpDetailStats

body : {“steamId64”:“76561198863365348”,“csgoSeasonId”:“s3”}

  • 完美高光(get)

https://appactivity.wmpvp.com/steamcn/video/getPerfectList?toSteamId=76561198863365348

  • b5(get)

https://api.xiaoheihe.cn/game/csgo/b5/get_player_overview/?account_id=903099620 (accountid 可在 b5 战绩对应页面右上角获取)

接口聚合

出于保护 steam 密钥和减少客户端请求次数的角度,需要一个能汇总以上数据并进行简易加工的接口。

本打算部署在 vercel,但其对超时的要求为 10s(netlify 同),因此客户端请求偶尔会出错。尝试了 firebase 的云函数然而我并没有办法使用 blaze 方案,转为使用国内的服务。

阿里云提供的服务相对简陋,选择了腾讯云。虽然开发体验不佳,但能提升访问速度还是值得的。

接口应用

拥有了以上平台与steam的接口数据就足够了。

在ios14下制作一个汇集所有平台数据的小部件,比网页更实用,还可以和好友分享。

除了以上各平台的数据我还获取了服务器中的段位,csgo游戏时间。 官方的文档中规中矩,但并不能很好的入门,还好reddit上找到了不少示例,成品如下图。

csgo 小部件