IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android App抓包、Mock数据探索 -> 正文阅读

[移动开发]Android App抓包、Mock数据探索

一、背景

? ? ? ? 客户端在开发过程中,经常遇到以下问题:

  • 服务经常挂掉
  • 制造数据的过程繁琐
  • 正在发布,需慢慢等
  • 服务端正忙,事情优先级靠后
  • 服务端修改数据,会影响测试过程
  • 只定义好了接口,客户端进度被Block

二、收益

? ? ? ? 客户端在开发过程中,Mock数据的意义:

  • 团队并行工作

? ? ? ? 前后端人员定义好接口文档,就可以开始并行工作,互不影响。有利于整个产品质量以及进度的保证。

  • 隔离系统

? ? ? ? 构造的虚拟请求响应,不会造成服务端接口真实数据的污染。

  • 快速排查和定位问题
  • 降低沟通和时间成本

三、方案

1. ? 第三方系统

? ? ? ? SDK + 管理后台

  • 被相关政策限制

  • 只支持Android系统

? ? ? ? 参考玩安卓APP

2. ? APP网络框架拦截

? ? ? ? OkHttp / ...

? ? ? ??不足:

  • 每次修改后,都需要编译
  • 书写Json String容易出错

3. ? 抓包工具重定向

? ? ? ? Charles / Fiddler

?? ? ? ? ?原理:中间人攻击?

? ? ? ? Android 对 HTTPS 的限制,通常来自 2 个方面:Android 系统自身的限制开发者加强了 CA 验证

? ? ? ? Android 高版本系统(Android 7.0+)将不信任用户自行安装的 CA 证书,导致验证不通过。

? ? ? ? 针对这种情况,有如下几种解决方案:

  1. 可打包 Apk:配置 networkSecurityConfig,针对此 App 信任用户证书;
  2. 可打包 Apk:调低 targetSdkVersion 至 24 以下;
  3. 不可打包 Apk:采用「平行空间(v4.0.8625 以下)」版本的 App 运行后抓包;
  4. 不可打包 Apk:系统 Root 后,将 CA 证书装入系统目录;
  5. 换个 Android 7.0 以下的设备抓包;

? ? ? ? 针对可自行打包的 Apk,通常会设置内部测试版本和对外发布版本,以不同的打包策略来做隔离。

? ? ? ? 除了 Android 系统自身的约束外,开发者还会加强 App 的 CA 验证,通常的技术手段有「公钥证书固定」和「双向认证」。

? ? ? ? 针对公钥证书固定,解决方案有:

  1. 利用 Xposed 的 JustTrustMe 插件破解,Hook 相关流程将固定证书移除;
  2. 利用 VirtualApp 加入 Hook 代码,原理与 JustTrustMe 类似;
  3. 导入真正的公钥证书和密钥(仅适用于内部使用);

? ? ? ? 再就是双向认证,广义上的 HTTPS,通常只做了客户端验证服务端,实际上 HTTPS 是可以做到双向验证的,针对双向验证的 App,可使用 HttpCanary 导入证书,并通过逆向的手段拿到私钥进行破解抓包。


? ? ?为什么使用Charles / Fiddler,而不使用Wireshark工具?

  • Wireshark可运行在Windows和Mac OS上,但使用者需要了解网络协议
  • 为了安全考虑,Wireshark只能查看封包,而不能修改封包的内容,或者发送封包
  • Charles/Fiddler专门用来捕获HTTP、HTTPS。而Wireshark虽然能获取HTTP、HTTPS,但是不能解密HTTPS,所以Wireshark更适合其他协议,比如:TCP、UDP

? ? ? ? Wireshark与对应的OSI七层模型:

? ? ? ? Chalers界面友好、跨平台、易破解:

? ? ? ? 1. Map Local

? ? ? ? 将指定的网络请求重定向到Local文件,但是会局限于文本类型的接口

? ? ? ? 2. Map Remote

? ? ? ? 将指定的网络请求重定向到另一个URL,一般搭配下一节介绍的Mock服务使用

4. ? 搭建Mock服务

? ? ? ? PC + Mobile?+ 网络分析工具?+ 服务器

  • Charles分析工具

? ? ? ? Map Remote

  • 模拟数据服务器

? ? ? ? mocky.io / 内网搭建Mock服务

? ? ? ? 伪造Url和数据

? ? ? ? 配置Map Remote到Url

? ? ? ? 再次请求接口,返回Remote的数据

? ? ? ? 内网搭建Mock服务的优点:

  • mocky.io将来可能关停
  • 多端共享修改后的Response内容
  • 某些公司有网络限制,例如:杀毒防火墙

?

? ? ? ? IP:端口 ?=》 域名

?5.? ?网络框架拦截 + APP工具

? ? ? ? 可视化编辑、跨进程Mock API

参考:

太干了,Android 抓包姿势总结!

我们一起学Mock

Wireshark 基本介绍和学习 TCP 三次握手

Nginx 最全操作总结

模拟服务器返回数据

Android MOCK HTTP 接口新方式

Android 高版本 HTTPS 抓包解决方案及问题分析!

天天给 App 抓包,还不懂 HTTP 代理吗? | 实用 HTTP

长连接场景下安全token的设计

AppMock 工具设计及原理

App实战:移动端Mock Api的几种方式

常见MOCK-SERVER对比

charles工具抓包教程(http跟https)

Android7.0以上Charles抓包及安装证书

Charles的Map Remote和Map Local功能和使用介绍

Charles 激活码计算器

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:36:04  更:2022-01-17 11:36:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:42:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码