iOS抓包最简单方案

写过爬虫的同学都知道,当我们想对App或者小程序进行抓包时,最常用的工具是Charles、Fiddler或者MimtProxy 。但这些软件用起来非常复杂 。特别是当你花了一两个小时把这些软件搞定的时候,别人只用了15分钟就已经手动把需要的数据抄写完成了 。
我的需求如果你不是专业的爬虫开发者,那么大多数时候你的抓包需求都是很小的需求,手动操作也不是不能 。这种时候,我们最需要的是一种简单快捷的,毫不费力的方法来解放双手 。
例如我最近在玩《塞尔达传说——王国之泪》,我有一个小需求,就是想找到防御力最大的帽子、衣服和裤子来混搭 。这些数据,在一个叫做『Jump』的App上面全都有,如下图所示:

iOS抓包最简单方案

文章插图
图片
防具总共也就几十个,肉眼一个一个看也没问题,就是费点时间而已 。那么,如果我想高效一些,有没有什么简单办法通过抓包再加上Python/ target=_blank class=infotextkey>Python写几行代码来筛选,快速找到我想要的数据呢?
手机上的操作实际上,方法非常简单 。我们只需要在手机上安装一个App,叫做『Stream』,如下图所示:
iOS抓包最简单方案

文章插图
图片
这个软件在App Store国区就可以下载 。
第一次打开这个App的时候,我们设置一下根证书,点击下图中箭头指向的这个按钮:
iOS抓包最简单方案

文章插图
图片
他会一步一步指导你安装根证书 。整个过程不超过30秒,这里我就不再赘述了 。
安装完成根证书以后,我们点击『开始抓包』按钮 。此时,手机上面所有的流量就会经过Stream并抓取下来 。
我们打开Jump App,找到防具列表,然后不停往下滑动屏幕,直到滑到最下面 。
然后回到Stream,点击『停止抓包』按钮 。抓包过程就完成了 。
我们点击『抓包历史』按钮,找到刚刚抓到的数据包,如下图所示:
iOS抓包最简单方案

文章插图
图片
按域名进行筛选,方便找到Jump App发送的HTTP请求 。如下图所示:
iOS抓包最简单方案

文章插图
图片
打开请求以后,点击『响应』-『查看响应』按钮,如下图所示:
iOS抓包最简单方案

文章插图
图片
我们就能看到如下图所示请求体,这确实就是防具对应的数据包,如下图所示:
iOS抓包最简单方案

文章插图
图片
我们现在,需要使用筛选功能,选出所有获取防具信息的后端请求 。所以先到『请求选项卡』,查看一下URL的规律,如下图所示:
iOS抓包最简单方案

文章插图
图片
回到请求列表页,点击右上角的放大镜进行筛选,如下图所示:
iOS抓包最简单方案

文章插图
图片
筛选以后,只有5个请求了,如下图所示:
iOS抓包最简单方案

文章插图
图片
最后一步,我们点击右上角的『编辑』按钮,选中所有请求,并点击右下角的『导出HAR』,如下图所示:
iOS抓包最简单方案

文章插图
图片
大家可以使用AIrDrop或者微信发送到电脑上 。到此为止,手机上的所有操作就已经结束了 。接下来我们来到电脑上,写一段Python代码来解析这个HAR文件 。
写一点点代码这段代码非常简单,大家可以直接复制:
import jsonimport brotliimport base64from haralyzer import HarParserwith open('/Users/kingname/Downloads/Stream-2023-07-06 22:08:44.har') as f:har_parser = HarParser(json.loads(f.read()))data = https://www.isolves.com/it/cxkf/ydd/IOS/2023-07-07/har_parser.har_dataentries = data['entries']for entry in entries:text = entry['response']['content']['text']content = brotli.decompress(base64.b64decode(text)).decode()info = json.loads(content)print(info)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
运行效果如下图所示:


推荐阅读