抓包工具应用实践

浏览器、windows、ios端的抓包流程,使用fiddler和surge。

Share

前言

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 小部件

Read more

WASM初探

前言 最近开发上线了xhair.pro, 其核心的数据是通过爬虫下载.dem文件并使用一些开源的解析库如demoinfocs-golang,demoparser解析获取最终的数据 在本地下载解析上传可以随意配置环境,但浏览器无法直接运行Golang或Rust的代码。想要将解析的能力制作成web应用,需要使用WebAssembly技术。 WASM WebAssembly 是一种新的编码方式,可以在现代的 Web 浏览器中运行——它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C/C++、C# 和 Rust 等语言提供编译目标,以便它们可以在 Web 上运行。它也被设计为可以与 JavaScript 共存,允许两者一起工作。 我们可以把Rust、Go等语言编译成.wasm后缀的二进制文件,浏览器可以通过WebAssembly的API加载该模块,并调用相关能力 实践 不同编程语言需要通过不同的方式编译至wasm,我尝试了Go与Rust。 Golang实践 1. 首先需要配置Go的环境 go 安装 2. 初始化项目 mkdir w

By pureink

家用服务器公网访问方案

前言 因为ipv4地址数量受限,家庭宽带几乎都没有公网IP。在局域网内可以使用类似192.168.0.100这样的内网IP进行访问,但是想要在外访问或是提供给朋友使用是不行的。 方案一:内网穿透 可以使用具备公网IP的服务器进行中转,用户访问具备公网IP的服务器,该公网服务器再与家庭服务器通信,最终用户访问到家庭内网。 方案对比 方案 价格 优缺点 使用免费服务如ngrok、cloudflare tunnel 无 速度受限,部分功能需要收费如绑定域名 购买云服务器搭建 中 价格高,需要部署维护 购买FRP服务如sakura frp 低 有流量和带宽限制 个人建议 临时需求可以使用ngrok,例如给朋友看正在开发的网站 长期需求建议购买FRP服务,服务器安装frp软件后,可以通过网页配置隧道如下图,可以使用香港的服务器省去域名的备案,但不太适合云盘等大流量应用。 方案二:DDNS 内网穿透需要付费,并且有带宽和流量限制,额外的一个中转服务器也会影响访问速度。 好在ipv6已经逐渐普及,若服务端和客户端同时支持ipv6网络,

By pureink