手机抓包!
逛逛 GitHub 除了推荐一些好玩、有趣的 GitHub 项目,也会发一些有用的软件,比如历史发布的:
之前也介绍过 Charles 抓包神器,详细可以看这篇文章:抓包神器。这个神器主要是解决在开发过程中快速定位异常,到底是界面展示 Bug 还是接口数据异常?这样借助这个神器,基本上在开发过程中就能解决很多问题了。
学会手机抓包也能解决开发中很多问题,不仅如此,还能解锁去广告、白嫖 VIP 等骚操作。
在开发中,不知道大家有没有遇到过这样的场景。
基于 Charles 的 Map Remote 或 Rewrite 我们可以做到 App 灵活的在服务测试环境和正式环境之间切换,但是有一个前提,就是需要 电脑 💻,要是没有电脑呢?
这时候手机抓包就派上用场了,但这只是针对开发。你有没有下面这样的需求呢?手机抓包也能派上用场:
有的 App 的广告真的太过分了,非常影响体验(虽然添加广告也是合理的)有没有什么办法可以去掉某些 App 的广告呢。
不花钱的 VIP 他不香吗?
1. HTTP Catcher 简介
解密 HTTPS 实时修改请求和响应 请求重放 阻止请求 域名过滤 DNS 修改
看到这里可能你对 HTTP Catcher 有一个基本的认识,这只是对它的一个基本介绍。
2. 安装 & 配置
如上图所示,点击解密 HTTPS 流量 - 安装证书 - 下载证书 - 设置 - 已下载描述文件中安装证书。
(3)证书信任
紧接着我们还需要在 iOS 中对此证书进行信任。
设置 - 通过 - 关于本机 - 证书信任设置 - 选择 HTTP Catcher CA
HTTP Catcher 界面功能介绍
主菜单
序号 | 含义 |
---|---|
0️⃣ | HTTP Catcher 所抓到的包会现在在这个 Tab 下 |
1️⃣ | 开始监听请求,在开始监听前会清空之前的历史请求 |
2️⃣ | 跳转到工具栏,工具栏详情有 过滤器,代理,DNS 劫持,重写,黑名单 |
4️⃣ | 请求列表展示处 |
5️⃣ | 监听到的请求是按照请求时间展示,还是按照域名聚合展示 |
6️⃣ | 可以过滤请求结果。只展示 JSON 或者 图片,媒体,WebSocket,HTML |
7️⃣ | 历史数据监听包,点击右上角可删除。 |
解密 HTTPS 流量开关
如果不开启此开关,那么默认只会监听 HTTP 的流量。
不过我们在开发测试的时候一般是在 HTTP 下进行,正式进入生产环境才会使用 HTTPS,所以在开发环境下 不需要打开次开关。
过滤器
过滤器的作用可以对指定的域名进行定向抓包,因为如果不设置指定域名的话,那么在开启代理后,会有很多其他的 App 的请求包,会略微影响到观看数据体验。
还有就是因为 iOS 系统不信任用户导入的证书,所以在开启抓包之后,类似于 iCloud,AppStore,iTunes 都是无法使用的,为了不影响上述服务的使用,我们可以将 苹果 旗下的域名进行排除。
DNS 劫持
假设我们正在开发的 App 的正式环境的域名为 https://api.i.server.com 此时我们想要将次 App 变为测试环境 App
那么我们就需要将对应的 https://api.i.server.com 转变为 https://api.t.server.com ,这样这个 App 就变成测试环境 App 啦。
DNS 就是为了实现这个功能的。
黑名单
黑名单的作用就是设置之后,无法对目标地址发起请求。
至于应用场景,还没有太 Get 到。
重写
重写 基本上就是 HTTP Catcher 最强大的功能了,对标 Charles 的 Rewrite 功能。
主要作用是可以针对一次 HTTP 请求包,可以在请求和响应阶段修改任何内容。
修改细则为
添加 Header
修改 Header
删除 Header
Path
URL
添加 Query 参数
修改 Query 参数
删除 Query 参数
添加表单参数
修改表单参数
删除表单参数
修改 Body
WiFi 访问
3. 实战
去广告
某天想去下载一款 斗图 方面的表情包软件,然后就在 AppStore 上搜索并下载了 斗图表情 。接下来是使用体验。
{
"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": {...}
}
}
好家伙,原来让我一进入 App 就评分就是这个东西再搞鬼。app_advertising
这个字段,很明显就是针对 App 广告的配置了。{
"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": {}
}
}
{
"rules" : [
{
"action" : "body",
"matchField" : "",
"field" : "",
"value" : "\"app_advertising1\":{},\"test\"",
"matchValue" : "\"app_advertising\"",
"destiontion" : "response",
"isRegex" : false
}
],
"enabled" : true,
"name" : "去广告 ",
"description" : "",
"locations" : [
{
"method" : "GET",
"scheme" : "https",
"enabled" : true,
"port" : 443,
"query" : "appver=2.9.7&os=ios&packagename=com.emojifair.emoji",
"host" : "new-kv.adesk.com",
"path" : "\/v1\/config"
}
]
}
4. 白嫖 VIP
{
"rules" : [
{
"action" : "body",
"matchField" : "",
"field" : "",
"value" : "{\"service\": 1,\"payYear\": \"true\",\"end\": \"4100688000000\",\"um\": {\"nn\":\"atomhu\",\"q\": 3225419776,\"u\": 31360,\"dp\": 0,\"dq\": 100}}",
"matchValue" : "[\\s\\S]+",
"destiontion" : "response",
"isRegex" : true
}
],
"enabled" : true,
"name" : "有道笔记破解会员",
"locations" : [
{
"method" : "POST",
"scheme" : "https",
"enabled" : true,
"port" : 443,
"query" : "method=status",
"host" : "note.youdao.com",
"path" : "\/yws\/mapi\/payment"
}
]
}
5. 软件抓取报告
App 名称 | 是否可抓取 | Content-Type | 备注 |
---|---|---|---|
掘金 | ✔️ | application/json; charset=utf-8 | 通过接口拿到一些自己定向想要查看的信息,定向搜索整理资源 这就是项目 awesome-IntelliJ-IDEA 的由来 |
简书 | ❌ | 未知 | 比较奇怪,开启抓包后 简书就不能使用了。 |
CSDN | ✔️ | application/json; charset=utf-8 | CSDN 有验签,接口不能重复请求 |
斗图表情 | ✔️ | application/json; charset=utf-8 | 去广告 |
小睡眠 | ✔️ | application/json; charset=utf-8 | 可以通过重写将自己的 Tilte 改为 VIP 但是不能带来实际的改变 因为权限验证是后端 |
潮汐 | ✔️ | application/json; charset=utf-8 | 倒腾了好久,最终还是没能 白嫖 VIP🤩🤩 |
闲鱼 | ❌ | 未知 | 不知道是不是 阿里系 原因 什么都看不到 靓仔落泪 |
自如 | ✔️ | ||
网易云 | ✔️ | text/plain;charset=UTF-8 | 网易云的返回结果应该都是加密的 什么都看不到 |
B 站 | ✔️ | application/json; charset=utf-8 | bilibili-schedule 哔哩哔哩(Bilibili)每日任务投币,点赞,分享视频,直播签到,银瓜子兑换硬币,漫画每日签到 |
微博 | ✔️ | application/json; charset=utf-8 | 可以抓取 每日热榜数据等 |
最右 | ✔️ | 我记得最右 是关停过一段时间整体架构升级。我只能说改版后的架构 我什么都看不出来。 | |
豆瓣 | ✔️ | application/json; charset=utf-8 | 电影榜单 |
幕布 | ✔️ | application/json; charset=utf-8 | 可以抓取优秀笔记 |
滴答清单 | ✔️ | application/json; charset=utf-8 | 如果你足够牛逼,应该可以变身 VIP |
知乎 | ✔️ | application/json; charset=utf-8 | 知乎热榜 知乎热搜词 |
有道云笔记 | ✔️ | application/json; charset=utf-8 | 实现 VIP 🤩🤩 通过重写功能可以实现 VIP 才能使用的 faceID 功能 |
美团 | ✔️ | application/json; charset=utf-8 | 查看自己附近的店铺列表 |
饿了吗 | ✔️ | application/json; charset=utf-8 | 查看自己附近的店铺列表 |
京东 | ✔️ | application/json; charset=utf-8 | 可以通过借口实现京东模拟签到 |
理想 | ✔️ | application/json; charset=utf-8 | 分析接口设计 |
小鹏 | ✔️ | application/json; charset=utf-8 | 分析接口设计 |
蔚来 | ✔️ | application/json; charset=utf-8 | 分析接口设计,蔚来的每个接口都是加签的,安全性还是比较高的。 |
6. 写到最后
学习 Charles,HTTP Catcher 这样的抓包软件,是为了帮助自己解决工作中棘手的问题。
在没有电脑的情况下,也能通过手机定位问题。再也不用一会要下载正式环境 App 一会 又要安装测试环境 App 了。
同时也可以通过抓包学习一下其他公司的 API 接口设计。如果恰巧你对这方面格外有兴趣的话,那么实现 禁用广告,VIP 破解,甚至于 商品秒杀,都没问题。
GitHub主页:https://github.com/xiaoxiunique
2. 干掉马赛克!
3. 抓包神器!