美文网首页
Android 7.0以上 无法抓取Https包解决办法

Android 7.0以上 无法抓取Https包解决办法

作者: 徘徊0_ | 来源:发表于2020-02-19 00:13 被阅读0次

Android 官网:网络安全配置

近期升级了targetSdkVersion到28,发现无法抓取到https请求包,查看了一下,Google修改安全策略了

默认配置
  • Android6.0 (API 级别 23)及更低版本应用的默认配置如下所示:
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
    
  • Android 7.0(API 级别 24)Android 8.1(API 级别 27)的应用的默认配置如下所示:
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
  • Android 9(API 级别 28)及更高版本应用的默认配置如下所示:
<base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
分析&解决

6.0---> 7.0 可以发现,默认配置少了 <certificates src="user" /> 也就是不信任用户添加的CA证书(ps: 所以抓包工具请求Https包的时候会失败)。9.0 更严格,默认不信任用户添加的CA证书,还禁止了http明文请求

最简单的方式就是项目修改为使用 Android6.0的默认配置

1.修改targetSdkVersion = 23
2.新建 network_security_config.xml 文件,目录结构如下图:

image.png
3.network_security_config.xml 文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>

4.将刚新建的xml文件添加到清单文件中,如下图:

image.png

附:仅在debug模式下允许抓包配置如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

相关文章

网友评论

      本文标题:Android 7.0以上 无法抓取Https包解决办法

      本文链接:https://www.haomeiwen.com/subject/yikofhtx.html