Android7.0以上Charles抓包及安装证书

Java基础

浏览数:672

2019-8-22

前言

好早之前一直用的是Charles做抓包工具使用,自己模拟数据,前段时间很不幸电脑进水了,公司新配的Mac需要重新配置,无奈忘记怎么配置,这次就索性就记下来,当做笔记。

简单使用

1、给电脑安装证书

首先在charles的 Help选项 选择 SSL Proxyings 选项 再选择 Install Charles Root Certificate 选项

2、证书信任

信任后点击证书出现上图为已信任状态(钥匙串中找)

3、配置SSL代理

在charles的 Proxy选项选择SSL Proxy Settings

点add添加需要监视的域名,支持 *号通配符,端口一般都是443:

4、给手机设置代理

  • 这个前提是需要手机和电脑处于同一个局域网内(简单的来说就是同一个wifi下);
  • 获取当前的IP地址和端口号,Charles默认端口号为8888, 这个可以根据需要自行修改;
  • 手机手动配置wifi代理,输入已经获取到的IP地址和端口号

以上步骤对于Android7.0以下的手机完全适用,但是对于Android7.0以上的手机获取https接口会出现unknown ,如下图:

以下会解决这个问题。

Android7.0以上unknown解决办法

给手机安装SSL证书

会出现下面,在手机浏览器中输入红色标识的地址下载SSL证书并安装

但是对于有一些机型以上方式还是不好使,比如我用的vivo x20就不行,这时候就需要在代码中添加相应代码支持了。 Charles官方文档摘要:

主要步骤

1、创建network_security_config.xml

在res文件夹下创建“xml”文件夹,在“xml”文件夹下创建network_security_config.xml

2、文件内容
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

3、清单文件中配置
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config">
    ...
    </application>
</manifest>

配置完成后就可以用啦!

最后,希望此篇博客对大家有所帮助,欢迎提出问题及建议共同探讨,如有兴趣可以关注我的博客,谢谢!

作者:会撒娇的犀犀利