概要
项目上经常会有需要对App端应用进行抓包去分析请求的情况,这里分享一下Charles抓包手机应用的教程
步骤
1.环境准备
- 电脑安装Charles客户端 https://www.charlesproxy.com/
- 电脑与手机连接同一WiFi
- 完全关闭电脑防火墙
2.配置PC端环境
-
PC端配置http代理:启动Charles->Proxy->Proxy Setting,端口默认8888即可
-
查看并记录IP地址,之后手机端设置代理时要用到,点击Help->Local IP Address
-
安装支持手机端抓包的证书,点击Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser
-
PC端配置Https抓包,点击Help->SSL Proxying->Install Charles root Certificate,安装证书
- 设置SSL Proxy Setting,点击Proxy->SSL Proxy Setting,配置白名单,没有443就手动添加一下,至此Charles客户端配置完毕
3.配置手机端代理
这里我用的是小米手机,以此为例,进入 设置->WLAN->进入WIFI设置界面->点击代理
这时Charles客户端会弹出提示,一定要点击允许(Allow)
至此已经可以抓取http请求的包了
4.配置抓取手机端https请求
如果想抓取https请求,需要像在电脑端一样,在手机端也需要安装证书
- 保持之前的wifi设置不变,在手机浏览器中访问地址 http://chls.pro/ssl
- 此时会下载xxx.crt文件,然后我们安装此证书
安装完毕后理论上就可以抓包我们开发的APP的https请求了,为什么说是理论上呢,因为目前的Android版本需要手动配置network_security_config,才可以抓包,正常的线上环境是不可以抓包,所以有了接下来的配置
5.Android Studio配置network_security_config
- 打开android工程,进入src->main->res->xml(没有该文件夹就创建一个)
- 在xml文件夹中创建 network_security_config.xml文件,文件代码如下
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" />
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>
- 在 AndroidManifest.xml文件中 application标签中加入此属性
android:networkSecurityConfig="@xml/network_security_config"
- 重新打包App即可抓包请求
小结
以上就是Charles抓包的全部配置,需要注意的几个点
- 要把防火墙彻底关闭
- 提示是否允许手机端链接的弹窗一定要有,否则就是配置不正确
- Android App要配置 network_security_config