Android7.0以上无法抓包问题解决。

在Android7.0 以上的设备中,使用charles无法抓取https的请求包。

Android7.0+的版本新增了证书验证,即app内不再像原来一样默认信任用户的证书。

1、在res底下创建一个xml文件夹,然后在内部创建一个名为 “network_security_config.xml”的文件,文件内容如下:

<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" overridePins="true" />
            <certificates src="user" overridePins="true" />
        </trust-anchors>
    </base-config>
</network-security-config>

 2、在AndroidManifest里的<application>标签中,添加代码:

android:networkSecurityConfig="@xml/network_security_config"

添加以上的配置可能带来的风险或问题:

1、安全问题:
开启上述配置后虽然可以成功抓包,但不可避免的也会带来一些异常风险问题,换句话说就是,我们希望自己人可以抓到包,但又不希望外部的人员抓到包。
所以转换成需求就是:在测试、开发阶段可以抓包,但正式发布包不能抓包。
怎么办呢?
1、将前面AndroidManifest里的<application>标签中新增的代码改成 

android:networkSecurityConfig="${NETWORK_SECURITY_CONFIG}"

相当于由前面的静态引入证书文件改成了动态引入,然后
2、buildType中的release加入

release {
       manifestPlaceholders = [
           NETWORK_SECURITY_CONFIG: ""
       ]
} 

buildType中的debug中加入

debug {
       manifestPlaceholders = [
           NETWORK_SECURITY_CONFIG: "@xml/network_security_config"
       ]
}        

因为压根就没有引入证书文件,所以Release模式下打的包不能抓包,反之Debug包则可以。所以我们要做的就是开发测试阶段打Debug包、发布线上就打Release包即可。
其实,除了利用Release和Debug的包类型实现区分可不可抓包,使用环境域名中的base_url来决定也可以,判断方式有很多,具体用哪种好,怎么实现就需要自己去摸索了。

2、android7.0以上的手机,开着网络代理访问不了webview页面

我们需要在webview的WebViewClient中,将下面这行代码给注释掉

super.onReceivedSslError(view, handler, error);

这一段代码是为了忽略掉SSL证书错误,因为开启代理后网络会变得不安全,证书会错误,webview检测到证书错误之后就直接让webview白板,不请求任何数据。 这一节是为了忽略掉父类的处理,然后默认走下去。

 

 

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在安卓7.0以上版本上使用Charles进行抓包的步骤[^1]: 1. 在Windows上安装Charles:首先,您需要在Windows上安装Charles。您可以从Charles官方网站下载并安装Charles。 2. 配置Charles的HTTPS抓包功能:在Charles中,您需要配置HTTPS抓包功能,以便能够捕获和查看HTTPS请求和响应。以下是配置HTTPS抓包功能的步骤: - 打开Charles并导航到“Proxy”菜单,然后选择“SSL Proxying Settings”。 - 在“SSL Proxying”选项卡中,单击“Add”按钮。 - 在“Location”字段中,输入要抓取的域名或URL的模式。例如,如果您想抓取所有的HTTPS请求和响应,可以输入“*”。 - 单击“OK”保存设置。 3. 安装Charles证书:为了能够捕获和解密HTTPS流量,您需要在安卓设备上安装Charles证书。以下是安装Charles证书的步骤: - 在安卓设备上打开浏览器,并访问http://chls.pro/ssl。 - 下载并安装Charles证书。 - 在安卓设备的设置中,导航到“安全性和隐私”或“安全”选项。 - 选择“凭据存储”或“受信任的凭据”。 - 选择“安装从存储设备安装的凭据”。 - 选择下载的Charles证书文件并安装。 4. 配置安卓设备的代理:为了将安卓设备的流量导向Charles,您需要配置设备的代理设置。以下是配置代理设置的步骤: - 在安卓设备的设置中,导航到“Wi-Fi”或“网络和互联网”选项。 - 长按您当前连接的Wi-Fi网络,并选择“修改网络”或“网络设置”。 - 在高级选项中,选择“代理”。 - 选择“手动”代理设置。 - 输入您计算机的IP地址和Charles的代理端口(默认为8888)。 - 保存设置并重新连接Wi-Fi网络。 5. 使用Charles进行抓包:现在,您已经完成了所有必要的设置,可以开始使用Charles进行抓包了。以下是使用Charles进行抓包的步骤: - 在Windows上打开Charles,并确保代理服务器正在运行。 - 在安卓设备上打开您想要抓包的应用程序。 - 在Charles中,您应该能够看到安卓设备的流量,并可以查看请求和响应的详细信息。 请注意,使用Charles进行抓包可能涉及到违反隐私和安全规定的行为。请确保您在合法和合适的情况下使用Charles进行抓包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值