写过爬虫的同学都知道,当我们想对App或者小程序进行抓包时,最常用的工具是Charles、Fiddler或者MimtProxy。但这些软件用起来非常复杂。特别是当你花了一两个小时把这些软件搞定的时候,别人只用了15分钟就已经手动把需要的数据抄写完成了。
我的需求如果你不是专业的爬虫开发者,那么大多数时候你的抓包需求都是很小的需求,手动操作也不是不能。这种时候,我们最需要的是一种简单快捷的,毫不费力的方法来解放双手。
(资料图片仅供参考)
例如我最近在玩《塞尔达传说——王国之泪》,我有一个小需求,就是想找到防御力最大的帽子、衣服和裤子来混搭。这些数据,在一个叫做『Jump』的App上面全都有,如下图所示:
图片
防具总共也就几十个,肉眼一个一个看也没问题,就是费点时间而已。那么,如果我想高效一些,有没有什么简单办法通过抓包再加上Python写几行代码来筛选,快速找到我想要的数据呢?
手机上的操作实际上,方法非常简单。我们只需要在手机上安装一个App,叫做『Stream』,如下图所示:
图片
这个软件在App Store国区就可以下载。
第一次打开这个App的时候,我们设置一下根证书,点击下图中箭头指向的这个按钮:
图片
他会一步一步指导你安装根证书。整个过程不超过30秒,这里我就不再赘述了。
安装完成根证书以后,我们点击『开始抓包』按钮。此时,手机上面所有的流量就会经过Stream并抓取下来。
我们打开Jump App,找到防具列表,然后不停往下滑动屏幕,直到滑到最下面。
然后回到Stream,点击『停止抓包』按钮。抓包过程就完成了。
我们点击『抓包历史』按钮,找到刚刚抓到的数据包,如下图所示:
图片
按域名进行筛选,方便找到Jump App发送的HTTP请求。如下图所示:
图片
打开请求以后,点击『响应』-『查看响应』按钮,如下图所示:
图片
我们就能看到如下图所示请求体,这确实就是防具对应的数据包,如下图所示:
图片
我们现在,需要使用筛选功能,选出所有获取防具信息的后端请求。所以先到『请求选项卡』,查看一下URL的规律,如下图所示:
图片
回到请求列表页,点击右上角的放大镜进行筛选,如下图所示:
图片
筛选以后,只有5个请求了,如下图所示:
图片
最后一步,我们点击右上角的『编辑』按钮,选中所有请求,并点击右下角的『导出HAR』,如下图所示:
图片
大家可以使用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 = 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)
运行效果如下图所示:
图片
这里我们使用了两个第三方库,分别是haralyzer和brotli。其中的haralyzer是用来解析HAR文件;brotli是用来对数据进行解压缩。
在一般情况下,其他网站的HAR解析,代码到text = entry["response"]["content"]["text"]就可以了。返回的text直接就是人眼可读的内容了。但Jump稍微特殊一些,因为它返回的内容经过压缩,所以获取到的是Base64字符串。如果我们直接打印,就会看到:
图片
这个Base64不能直接解码,因为解了以后是二进制信息。从之前Stream的响应Headers里面,我们可以看到这个数据是经过br压缩的,如下图所示:
图片
所以需要使用brotli解压缩:brotli.decompress(base64.b64decode(text)).decode()。
现在你已经拿到返回数据的JSON信息了。那么接下来要对数据进行怎么样的处理,都不再是问题了。
总结安装Stream并设置根证书打开抓包功能打开目标App或者微信小程序,让流量经过Stream关闭抓包功能,从抓包历史里面找到目标请求的URL规则筛选出所有需要的请求,导出为HAR文件使用Python解析HAR文件当你熟练以后,整个过程不超过3分钟就能完成。
上一篇:山西奥特莱斯乐购公园项目签约落地夏县 总投资额60亿元
下一篇:最后一页
中新网5月20日电 据国家卫健委网站消息,5月19日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例193例。其中境外
逛博物馆不需要理由,因为它本来就是生活的一部分 博物馆的力量 5月18日是国际博物馆日。今年国际博物馆日以“博物馆的力量”为
后视镜没折叠 成“拉门贼”下手目标 扬子晚报讯(记者 任国勇 通讯员 鼓公宣 魏山 张燕秋)近日,南京鼓楼公安分局小市派出所抓
中新网5月20日电 据四川省卫健委官方微信消息,5月19日0时至24时,四川新增本土确诊病例20例(在广安),新增本土无症状感染者102例(在
盲人女孩用琴键“追光” 多个钢琴比赛获奖,想当音乐老师教会更多人弹琴 家住苏州太仓的盲人女孩梅暄虽然双目失明,却一直坚持着自
X 关闭
X 关闭
四川广安市48小时内将新改建一个800张床位的方舱医院 记者从今日(19日)中午召开的广安市疫情防控发布会上获悉,广安市应急指挥部决[+更多]
河南:6月底前实现“场所码”全覆盖 “场所码”是流调的关键,是落实常态化疫情防控的重要举措。记者从河南省新冠肺炎疫情防控指挥[+更多]
中新网上海5月19日电 (陈静 朱虹 丁国莲)记者19日获悉,中国学者的最新研究解释,证实了糖尿病的卵母细胞起源,揭示了糖尿病代际遗[+更多]
中新社合肥5月19日电 题:虚拟人走红“Z世代”:未来虚拟人懂情感有温度 中新社记者 张俊 俏皮可爱的虚拟人形象、顺畅自然的肢[+更多]