解决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);
AndroidStudio生成签名文件失败时提示key was created with errors
当使用AndroidStudio生成签名文件失败时提示key was created with errors
JKS密钥库使用专用格式。建议使用"keytool -importkeystore -srckeystore /Users/dxn/Desktop/test.jks -destkeystore /Users/dxn/Desktop/test.jks -deststoretype pkcs12"迁移到行业标准格式PKCS12。
上面错误提示的意思是Android希望我们将密钥从JKS专有格式迁移到PKCS12格式
此时我们需要在命令行输入:(srckeystore代表以前JKS格式的文件,destkeystore代表PKCS12格式的文件,两个文件名称要不一样)
keytool -importkeystore -srckeystore old_name.jks -destkeystore new_name.jks -deststoretype pkcs12
输入目标密钥库口令: (新.jks文件密码)
再次输入新口令: (新.jks文件密码)
输入源密钥库口令: (老.jks文件密码)
这样就会成功的生成PKCS12格式的签名文件,这个新PKCS12格式签名文件的别名和别名密码这些配置都是和老JKS格式文件一样。
网友评论