Android网络抓包--Charles
一、Android抓包方式[*]对Https降级举行抓包,降级成Http
[*]使用抓包工具对Https举行抓包
二、常用的抓包工具
[*]wireshark:侧重于TCP、UDP传输层,HTTP/HTTPS也能抓包,但不能解密HTTPS报文。比较复杂
[*]fiddler:支持HTTP/HTTPS协议,篡改请求入参,篡改相应效据,设置请求断点重发,弱网模拟。但是只支持Window
[*]charles:根本功能跟fiddler一样。并且全部平台都支持,界面简便,操纵简朴(重点)
三、抓包工具Charles
1.下载:
官网地点:Download a Free Trial of Charles • Charles Web Debugging Proxy
2.安装:
下载完成之后,直接点击安装即可。安装完成之后的界面
https://img-blog.csdnimg.cn/direct/0a458011f0594da58cba985a0cba2d5b.png
3.原理:
网络编程Http知识
[*]拦截请求,代理客户端向服务端发送请求
[*]拦截服务端相应,拿到服务端返回的公钥,并返回自己的公钥证书,目的是为了接下来的流程中加密会话秘钥
[*]客户端需要安装charies证书,并添加信任,否则会报证书无效错误;客户端天生会话秘钥,并使用charies公钥加密发送到服务端
[*]再次拦截请求,用自己的私钥解密会话秘钥,并使用前面拿到服务端公钥加密会话秘钥发送到服务端
[*]服务端使用自己的私钥解密会话秘钥
[*]使用会话秘钥去加密response,并返回
[*]charies再次拦截相应,使用会话秘钥去解密response,展示明文,从而达到https抓包的日记
https://img-blog.csdnimg.cn/direct/f2a2ae13c7004689aec6c4ae4245771c.png
4.证书配置
注意:
在使用6.0及以下的手机的时候,假如想要抓包Https,只需要在手机上安装Charles证书就可以了,但是假如使用的手机是7.0及以上版本的时候,这个时候就不管用了,需要手动的添加该证书的信任
原因:
由于Android在不同的版本,系统为了网络安全,网络配置发生了一些厘革
系统的网络安全配置:
[*]Android6.0及以下既支持信任系统证书,也支持信任用户安装的证书,也运行明文传输
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
[*]在Android7.0及以上,不在信任用户安装的证书。这也就是为什么7.0以上的手机即便安装了charles证书,仍旧无法抓包的原因
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
[*]在android9.0及以上,只信任系统证书,并且不答应明文http的传输
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config> 解决方案:
为相识决Android7.0及以上手机https无法抓包,http无法传输的问题,需要自界说网络安全配置:
[*]在res/raw目次下,添加charles的证书文件charles.pem
[*]新增文件 res/xml/network_security_config.xml 文件,将cleartextTrafficPermitted设置成true,并增长trust-anchors标签引用添加进来的charles的证书
cleartextTrafficPermitted="true" //答应在高版本上开启Http的明文传
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
<trust-anchors>
<certificates src="@raw/charles"/>
</trust-anchors>
</network-security-config>
[*]在清单文件manifest中的Application下添加网络安全配置文件,这样就能抓包了
<application
android:networkSecurityConfig="@xml/network_security_config"
</application>
[*]增长debug-overrides标签,只在debuggable为true的情况下,才会应用这个网络安全配置文件
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
<debug-overrides>
<trust-anchors>
<certificates src="@raw/charles" />
</trust-anchors>
</debug-overrides>
</network-security-config> 5.使用:
如何配置charles,完成Https数据报文的抓包?
1.点击Proxy -> Proxy Settings…,查看charles的端标语:8888
https://img-blog.csdnimg.cn/direct/852c0a1fe77c49dd89cf7bcede18b71b.pnghttps://img-blog.csdnimg.cn/direct/3b5fea6637da41f5b43d285975247c29.png
2.点击Help -> Local IP Address,查看本机的IP地点:192.168.40.38
https://img-blog.csdnimg.cn/direct/4c09cffb6ec54b0c8ca7a10899056659.pnghttps://img-blog.csdnimg.cn/direct/abbde163eb3c411ebc6fee7fb8e668e3.png
3.将手机wifi毗连的代理设置成手动,并输入上面的端标语和IP地点
https://img-blog.csdnimg.cn/direct/20446d17db844c4b945c04c3c3d581a7.pnghttps://img-blog.csdnimg.cn/direct/d6862346eb8c4ef1a9e630258f25b491.png
4.让应用去信任charles证书
点击Help -> SSL Proxying -> Save Charles Root Certificate… 保存证书
https://img-blog.csdnimg.cn/direct/a0061ee1c59e435cae903491fd41f4f4.png
5.将证书拷贝到项目中。在app下的res目次下新建一个raw文件夹,并且把charles.pem文件拷贝过来
https://img-blog.csdnimg.cn/direct/e56a4069dde94e368302a38ea1d15808.png
6.创建配置文件。在app下的res目次下新建一个xml文件夹,在这个文件夹下新建一个network_security_config.xml 文件,并填写配置信息
https://img-blog.csdnimg.cn/direct/693ef85288054cf0b4c79bb53c26321b.png
打开手机设置-暗码与安全-系统安全-加密与根据-安装证书-证书
然后将上面保存的证书push到手机上,找到位置添加证书信任
https://img-blog.csdnimg.cn/direct/2610c15467e14289a26069b430aa8393.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]