御剑乘风来,除魔天地间,
有酒乐逍遥,无酒我亦颠。
一饮尽江河,再饮吞日月,
千杯醉不倒,唯我酒剑仙。
本文基于 Charles 4.1.4。
Android 设备:HUAWEI PLE-703L ( Android 5.1.1 )。
对于 Android 7.x 以上的设备,请参照
https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
https://developer.android.google.cn/training/articles/security-config.html
本文主要讲解如何配置,至于抓包乃是基本操作,所以懒得写。
废话不多说,直接开始。HTTP 抓包需要配置的步骤如下:
- 配置 Charles 的 HTTP 代理。打开 Charles --> Proxy --> Proxy Settings... --> 选择 Proxies --> 勾选 Enable transparent HTTP proxying,并输入 HTTP 代理端口号 Port ( 默认 8888 )。
- 用 Charles 查看 Local IP Address 。Help --> Local IP Address。
Android 设备配置 Charles 代理。利用 Charles 配置的 HTTP 代理端口号 Port 和查到的 Local IP Address,配置 Android 设备的 Charles 代理。此处非必要截图,所以呃...略。
对于没有 Allow 代理的设备,Charles 会弹出一个 Popup 让你 Allow 还是 Deny 某个设备的 Connection 。这个时候,你不允许也得老实的允许啊...这里的截图...略。
做完上述步骤,你就可以慢慢...慢慢的欣赏 Android 设备的 HTTP 的 request 和 response 了。如果你需要模拟 HTTP 的 request 和 response ,那就打断点调试呗,笑~
在开始配置 HTTPS 抓包之前,必须先说明白的是,如果 Charles 没有配置需要调试的域名 Host 以及端口号 Port、证书配置错误或者 Android 设备证书配置错误,那么在 HTTPS 抓包调试的时候 Charles 一般会报错,或者抓取的 request 和 response 是乱码。
下面就开始介绍配置 HTTPS 抓包的正确姿势:
- 配置 HTTPS 代理、需要调试的域名 Host 以及端口号 Port。打开 Charles --> Proxy --> SSL Proxy Settings... --> 选择 SSL Proxying --> 勾选 Enable SSL Proxying --> 点击 Add --> 输入要抓取的 HTTPS 域名 Host ( https://*** ) 和端口号 Port ( 443 )。
- 安装 Charles 证书 Certificate。Help --> SSL Proxy --> Install Charles Root Certificate --> 选择 General --> Install Certificate... --> Next --> Next --> Finish。
- 导出 Charles 证书。Help --> SSL Proxy --> Export Charles Root Certificate and Private Key... --> 输入证书密码 Private Key ( ****** ) --> 选择计算机上的路径,输入证书名称(任意名称),点击 Save。最后导出的证书文件名为 *.p12。
- Android设备导入 Charles 证书并查看受信任的 CA 证书。
导入 Charles 证书。将步骤 3 导出的 Charles 证书 *.p12 复制到 Android 设备的 SD 卡根目录。打开 设置 --> 安全 --> 从 SD 卡安装证书 --> 选择 Charles 证书 *.p12 -->输入证书密码 Private Key ( ****** ) 。
查看受信任的 CA 证书。打开 设置 --> 安全 --> 显示受信任的 CA 证书 --> 用户。
Tips:导入证书到 Android 设备的过程中可能需要设置指纹、手势或者密码等。这里要说明一下,如果在导入过程中设置了手势密码之后,要怎样才能改成无密码,因为如果这个 Android 设备不是你的,你要还给公司或者其他人,而你给 TA 设置了锁屏密码,万一还了之后你忘记了呢是吧。 ( 这个过程是要删除 Charles 证书的,还要测试 HTTPS 的同学可以忽略下面这些操作 )。打开 设置 --> 安全 --> 删除所有证书,回到 设置 --> 锁屏和密码 --> 锁屏密码 --> 输入锁屏密码 --> 点击 无密码。然后你就可以把 Android 设备交还给公司或者其他人了。
- 调试 HTTPS。完结撒花...