Android开发常见问题

本文介绍了如何解决在Android 7.0及以上版本系统中使用抓包工具遇到的问题。主要步骤包括创建network_security_config.xml文件,配置信任所有证书,并在AndroidManifest.xml中引用该配置。如果仍有部分设备无法抓包,可通过OkHttp配置强制信任所有证书。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决Android7.0 以上系统无法使用工具抓包问题

  • 1 在res/xml 夹下新建 network_security_config.xml 文件

  • 2 在 network_security_config.xml 文件中输入以下内容:

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

重点: overridePins="true" 属性不能少。

  • 3 在清单文件(AndroidManifest.xml)中引用network_security_config.xml 文件

       <application
         ...
          android:networkSecurityConfig="@xml/network_security_config"
          android:theme="@style/AppTheme">
      	...
      </application>
    

经过以上步骤即可解决Android7.0以上系统无法抓包问题。

如果经过上述步骤,在部分手机上还是不能实现抓包,那么可以使OkHttp强制信任所有证书

  • 新建工具类

    public class OkHttpSslUtils {
      public static SSLSocketFactory createSSLSocketFactory() {
          SSLSocketFactory sSLSocketFactory = null;
          try {
              SSLContext sc = SSLContext.getInstance("TLS");
              sc.init(null, new TrustManager[]{new TrustAllManager()}, new SecureRandom());
              sSLSocketFactory = sc.getSocketFactory();
          } catch (Exception e) {
          }
    
          return sSLSocketFactory;
      }
    
      public static class TrustAllManager implements X509TrustManager {
          @Override
          public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
          }
    
          @Override
          public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
          }
    
          @Override
          public X509Certificate[] getAcceptedIssuers() {
              return new X509Certificate[0];
          }
      }
    

    }

  • 使用

    OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
    httpClientBuilder
    .sslSocketFactory(OkhttpSslUtils.createSSLSocketFactory(), new OkhttpSslUtils.TrustAllManager()) // OkHttp抓包问题,强制Okhttp信任所有证书
    .connectTimeout(MAX_TIME_OUT, TimeUnit.SECONDS)
    .readTimeout(MAX_TIME_OUT, TimeUnit.SECONDS)
    .writeTimeout(MAX_TIME_OUT, TimeUnit.SECONDS);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值