# 背景

之前介绍过 Charles 抓包神器,主要是解决在开发过程中快速定位是界面展示 Bug 还是接口数据异常,这样基本上在开发过程中就能解决很多问题了。

但。。。

但是不知道大家有没有遇到过这样的场景。

  • 线上发布 App 出现一个 Bug,但是这个时候可能并不在公司(等于 Charles 无法发挥作用),也需要立即定位问题,数据问题?界面问题?我的代码没动过啊!明明测试环境都是好的,大部分用户也是好的啊。
  • 基于 Charles 的 Map RemoteRewrite 我们可以做到 App 灵活的在服务测试环境正式环境之间切换,但是有一个前提,就是需要 电脑💻,要是没有电脑呢?

以上只是针对开发的,在看看你有没有这样的需求呢!!!!

  • 有的 App 的广告真的太过分了,非常影响体验(虽然添加广告也是合理的)有没有什么办法可以去掉某些 App 的广告呢。
  • 秒杀活动上,直接越过前置倒计时跳转至下单页面,他不香吗?

# HTTP Catcher 简介

image-20201216023530797

交代了故事背景,今天的主角就登场了。

HTTP Catcher 是一个 Web 调试工具,可以对来自 iOS 系统的 http/https 请求进行拦截,查看,修改和重放。

你不需要连接电脑,HTTP Catcher 可以在后台记录 Wi-Fi 和蜂窝网络下的 HTTP 流量。HTTP Catcher 让你非常容易的测试你的应用和网站,你可以直接查看它们的请求和响应。

HTTP Catcher 会创建一个VPN配置。当你开启抓包时,HTTP Catcher 会在 VPN 进程中启动一个本地 HTTP 代理,所有的 HTTP 流量将通过 VPN 转发到这个本地代理中。

功能

  • 解密 HTTPS
  • 实时修改请求和响应
  • 请求重放
  • 阻止请求
  • 域名过滤
  • DNS 修改

看到这里可能你对 HTTP Catcher 有一个基本的认识,这只是对它的一个基本介绍。

# 安装 & 配置

  1. 在 AppStore 下载 HTTP Catcher。

  2. 安装证书,因为我们需要抓取 HTTPS 请求。

    image-20201216011918722

    如上图所示,点击解密 HTTPS 流量 - 安装证书 - 下载证书 - 设置 - 已下载描述文件中安装证书

  3. 证书信任

    image-20201216011936115

    紧接着我们还需要在 iOS 中对此证书进行信任。

    设置 - 通过 - 关于本机 - 证书信任设置 - 选择 HTTP Catcher CA

# HTTP Catcher 界面功能介绍

# 主菜单

image-20201216013449544

序号 含义
0️⃣ HTTP Catcher 所抓到的包会现在在这个 Tab 下
1️⃣ 开始监听请求,在开始监听前会清空之前的历史请求
2️⃣ 跳转到工具栏,工具栏详情有 过滤器,代理,DNS 劫持,重写,黑名单
4️⃣ 请求列表展示处
5️⃣ 监听到的请求是按照请求时间展示,还是按照域名聚合展示
6️⃣ 可以过滤请求结果。只展示 JSON 或者 图片,媒体,WebSocket,HTML
7️⃣ 历史数据监听包,点击右上角可删除。

# 解密 HTTPS 流量开关

如果不开启此开关,那么默认只会监听 HTTP 的流量。

不过我们在开发测试的时候一般是在 HTTP 下进行,正式进入生产环境才会使用 HTTPS,所以在开发环境下 不需要打开次开关。

# 过滤器

image-20201216014818190

过滤器的作用可以对指定的域名进行定向抓包,因为如果不设置指定域名的话,那么在开启代理后,会有很多其他的 App 的请求包,会略微影响到观看数据体验。

还有就是因为 iOS 系统不信任用户导入的证书,所以在开启抓包之后,类似于 iCloud,AppStore,iTunes 都是无法使用的,为了不影响上述服务的使用,我们可以将 苹果 旗下的域名进行排除。

# DNS 劫持

image-20201216021645829

假设我们正在开发的 App 的正式环境的域名为 https://api.i.server.com 此时我们想要将次 App 变为测试环境 App

那么我们就需要将对应的 https://api.i.server.com 转变为 https://api.t.server.com ,这样这个 App 就变成测试环境 App 啦。

DNS 就是为了实现这个功能的。

# 黑名单

image-20201216021531756

黑名单的作用就是设置之后,无法对目标地址发起请求。

至于应用场景,还没有太 Get 到。

# 重写

image-20201216021438021

重写 基本上就是 HTTP Catcher 最强大的功能了,对标 Charles 的 Rewrite 功能。

主要作用是可以针对一次 HTTP 请求包,可以在请求和响应阶段修改任何内容。

修改细则为

  • 添加 Header
  • 修改 Header
  • 删除 Header
  • Path
  • URL
  • 添加 Query 参数
  • 修改 Query 参数
  • 删除 Query 参数
  • 添加表单参数
  • 修改表单参数
  • 删除表单参数
  • 修改 Body

# WiFi 访问

image-20201216021927171

# 实战

# 去广告

image-20201216215309265

某天想去下载一款 斗图 方面的表情包软件,然后就在 AppStore 上搜索并下载了 斗图表情 。接下来是使用体验。

  • 打开 App 弹出 5s 广告。

    image-20201216220030734

  • 打开软件之后 可能不到 2s 吧,直接弹出 AppStore 评分,这。。。。

    79E3BC63-34E9-474B-8E0F-B02A15FB67DD

  • 在浏览20s 之后直接弹出 28s 的广告。并且刚开始还不能关闭,需要浏览 5 秒之后才能关闭。

    image-20201216230710707

到这 我想直接好家伙,这饭恰的 也太。。。。(有点让我不舒服,哈哈哈哈)

9D3C73B9-62B7-4B92-B642-BE1CDD113E2C

我也是被逼急了,不得不采用技术手段解决这件事了。

因为 App 需要在启动的时候就加载广告,那么 App 开屏页需要展示什么对应的肯定是服务器返回的。所以我们需要抓取一下在 App 刚开始启动的时候的接口调用情况。

此时打开 Charles ,手机配置好代理,就开始准备抓包了。分析启动接口。

image-20201216235855299

上方图示可以看到,在 App 刚刚启动的时候通过观察接口抓取情况,可以定位到 该软件的域名是 adesk.com。然后接下来就需要分析接口了。

image-20201217000947183

将所有请求展开之后,可以看到上方蓝色部分的 config 接口还是很醒目的💩💩💩💩。

打开他 看一下

{
	"code": 0,
	"msg": null,
	"res": {
		"app_rate": {
			"enable_rate": true,
			"tyle_custom": true,
			"main_title": "给我们些建议吧!",
			"sub_title": "非常感谢您使用我们的产品,我们非常重视您的评价和意见,如果您喜欢我们的产品,请给个好评吧!",
			"confirm_text": "好评一下",
			"cancel_text": "我再想想",
			"targeturl": "https://apps.apple.com/cn/app/id1155901497",
			"rate_interval": 2,
			"rate_limit_time": 2
		},
		"app_update": {...},
		"app_configuration": {...},
		"other_data": {...},
		"app_advertising": {...}
	}
}

好家伙,原来让我评分就是这个东西再搞鬼

# 秒杀

# 破解签到限制

# 白嫖 VIP

# 同类软件对比

# Thor & Anubis

最后编辑时间: 12/17/2020, 8:29:20 PM