Android开发规范技巧Android开发Android开发经验谈

【Tools】- 网络抓包(http,https),解决所有抓包

2020-04-09  本文已影响0人  拔萝卜占坑

简介

大家平时在开发工程中,解决测试,线上bug的时候等很多时候都会用到网络抓包工具来分析服务器端返回的数据,找到十足的证据甩锅给后端的同事。

就Android开发来说,http抓包,很容易,如果是https呢,有一点麻烦,用低版本的手机(比如Android5.0)装上抓包工具生成的证书也就解决了。但是在高版本手机(比如Android7.0)发现装了证书不管用,直接提示握手失败或者无法访问网络,或者抓包工具什么数据内容都看不到,看到了也是一堆乱码。不慌,能解决。

如果应用进行了代理检测,应用加固,当线上出问题了,自己反编译apk又不太好操作(当然可以在本地打一个线上环境的apk调试bug),这时候怎么办,不慌,能解决。

我写的其它抓包相关的文章

工具

PC端
手机端

这里列的是Android手机。

其它工具

说明

本篇文章,以自己亲自事件总结的抓包相关的知识点。本着以简单的方式解决问题。下面将从简到难,分场景讲解。

http

http抓包就很简单了,用上面的任何一个工具都能够轻易抓包到,至于抓到包后的一些骚操作就要自己研究抓包软件了。

https

https通信过程,会进行认证,数据加密,如果设置代理抓https网络数据,会出现握手失败,无法连接网络,看不到抓包内容或者乱码等情况。

Android版本对证书的限制

Android从7.0开始系统不再信任用户CA证书(应用targetSdkVersion >= 24时生效,如果targetSdkVersion < 24即使系统是7.0+依然会信任)。也就是说即使安装了用户CA证书,在Android 7.0+的机器上,targetSdkVersion >= 24的应用的HTTPS包就抓不到了。

手机系统版本低于24 或者 targetSdkVersion < 24

安装抓包工具提供的证书,安装步骤自己百度,正常抓包。

手机系统版本高于2(包含24)并且 targetSdkVersion >=24

Android系统不在信任用户证书,即使你赚了抓包工具提供的证书依然不行。解决办法如下:

非root设备

root设备

root设备除了拥有非root设备解决方案以外,其它解决办法。

证书固定

客户端内置Server端真正的公钥证书。

在这种情况下,由于MITM Server创建的公钥证书和Client端内置的公钥证书不一致,MITM Server就无法伪装成真正的Server了。这时,抓包就表现为App网络错误。

有些服务器采用的自签证书(证书不是由真正CA发行商签发的),这种情况App请求时必须使用证书固定。

很多应用还会将内置的公钥证书伪装起来或者加密,防止逆向提取。

非HTTP协议抓包

如果上面的方式都不能够抓到网络包,那么考虑请求可能不是http,https请求,可以选择支持其它协议的抓包工具。

其它方式参考

Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)
Mac上的抓包工具Charles

上一篇 下一篇

猜你喜欢

热点阅读