在Mac下使用Charles抓取Android 7.0以上的Https请求

  因为开发需求,需要抓取 Android 的 Https 请求,花了较长时间才配置好,这里记录下。

一、Charles 设置

我使用的时 Charles 4.2.8 破解版,至于怎么破解,在这里就不说了,网上有比较多的教程。

1. 第一步

Help --> SSL Proxying --> Charles Root Certificate Help

在Mac下使用Charles抓取Android 7.0以上的Https请求

2. 第二步

找到 Charles Proxy的证书,点击信任,选择始终信任
这里要注意的是是在 系统 --> 所有项目 里面去找Charles Proxy的证书

在Mac下使用Charles抓取Android 7.0以上的Https请求
在Mac下使用Charles抓取Android 7.0以上的Https请求

3. 第三步

在:Help -->SSL Proxying --> Install Charles Root Certificate on a Mobile Device or Remote Browser

在Mac下使用Charles抓取Android 7.0以上的Https请求
按照弹出的提示进行安装证书到手机,这里需要主要的是我使用小米和华为自带的浏览器都不能成功下载证书,最后使用百度APP下载成功了。下载的文件名称为:downloadfile.crt。

二、手机安装证书

在小米手机手机上,长按 WLAN 在高级设置

在Mac下使用Charles抓取Android 7.0以上的Https请求

找到刚下载的crt文件安装就可以;在华为P20上点击可以直接安装成功,其他手机类型没有试过。
到这里证书就安装完毕了。

三、APP 网络安全配置

在Android 7.0 上会 Charles 上还会报SSL handshake failed错
所以,我们还需要配置

<application
       android:networkSecurityConfig="@xml/network_security_config"
       //...其他属性省略
     >

    //....
</application>

res/xml/network_security_config.xml 的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!--
       debug-overrides 是只有在debug下环境下有用
       base-config 是在debug和release都起作用
       -->
    <base-config cleartextTrafficPermitted="true" >
        <trust-anchors>
            <certificates src="system" />
            <!--如果这个不设置,使用charles并且手机安装证书后也不能抓到https的网络请求-->
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>

至此,我们就可以快快乐乐的进行 Android 的开发,并进行 Https 的请求抓取数据了。

后记,已经好长时间没有写博客了,4月份的时候已经跳槽到了互联网大厂了,而且项目也一直比较忙。这大半年的时间感觉自己成长了许多,在工作中总是有些比较小的收获,但是都不是成系统的知识点,所以也没有写博客。希望在日积月累中将涓涓细流汇聚成湖泊江河。

上一篇:浅谈数字证书&安装证书原理


下一篇:APP测试(3)