Android 中快速使用 Charles 抓包步骤
MAC版下载 Charles 4.6.2 破解版 (http抓包神器)
其它平台请Google
抓包分析 Http 报文,直接上步骤抓起来先。原理在底部说。
步骤流程
1、保存 Charles 证书 ,Help -> SSL Proxying -> Save Charles Root Certificate 。 保存之后证书需要 拷贝到 Android 项目 res/raw 中。
2、开发应用需要信任 Charles 提供的证书 ,在Android 文件配置中 添加xml 配置 该证书,并且应用到 application 中
<application android:networkSecurityConfig="@xml/network_sercurity_config" ></application>
3、查看端口,选择 Charles -> Proxy -> Proxy Settings , 代理端口号默认 8888 可不修改。设备wifi 连接时需要配置 代理使用到此端口
4、查看本地电脑 IP 地址 Charles ->Help -> Local IP Address ,或者命令行窗口查看 ifconfig
5、在你需要调试的应用设备上,打开 WiFI 连接, 当前已连 Wifi 打开高级 代理服务设置。 通过手动配置添加 , 上面说的电脑的 本地IP + 代理端口号 ,保存
6、第一次使用时候会弹出对话框,是否信任 Charles 发送的请求。此时需要点击 Allow 才可以。 允许Charles 信任用户证书 (没有添加会报错 )。
7、 操作应用 调试即可
8、弱网调试 Charles -> Proxy -> Throttle Settings ,选用最低 56kbps , 操作 app 查看 响应时间 。 测试是网络接口响应慢,还是程序慢进而优化程序。
其实 Charles 还有很多功能。学以致用,去摸索学习叭
Charles 抓包 原理
-
1、拦截请求,代理 client 向 server 发送请求
-
2、拦截 server 响应,拿到server 返回的公钥,并返回自己的公钥证书。目的是为了接下来的流程中加密会话密钥
-
3、client 需要安装 charles 证书,并添加信任,否则会报证书无效错误
client 生成随机数(会话密钥),并使用charles 公钥加密发送到 server
-
4、再次拦截请求,用自己的私钥解密会话密钥,并使用前面的拿到的server 公钥加密会话密钥,发送到server
-
5、server 使用自己的私钥解密会话密钥
-
6、使用会话密钥加密response 并返回
-
7、再次拦截响应,使用会话密钥解密 response,展示明文,从而达到https抓包的目的。
引用下来自慕课移动端架构师中的图,慢慢体会。