Android 7.0 https 抓包实现

说到抓包,这就是涉及到调试和安全问题,对于 Android 7.0 (API 24 )以下,你可以直接使用 Charles 安装相关证书配置好代理后直接实现。但是在 Android 7.0 之后,Google 推出更加严格的安全机制。

至于具体怎么配置,Google 官方给出超级全面解释,官方连接。

1. 在你自己的app下,xml目录下新建一个文件:res/xml/network_security_config.xml ,配置在debug模式下信任用户证书,内容如下:

 
   
     
      
       
     
   

2. 在AndroidManifest中使用它:



    
        ...
    

这样debug模式下就可以抓包了。release的话改为以下配置
 




    
        
            
            
        
    


简单分析下,为什么在 7.0 之后,在手机内直接安装证书没效果呢?这是 6.0 默认配置:


    
        
        
    

复制代码

然后这是 7.0 默认配置:


    
        
    

复制代码

区别显而易见,我们在手机里自己安装证书,就是对应在 user 域,对于 7.0 来说,默认是直接不信任。所以,你装代理证书失去意义。

那要解决 7.0 不能抓包调试这个问题,你可以直接配置出这文件,选择上面 6.0 默认配置方式,信任来自 user 域证书。这样,你就又可以抓包调试。

上面方式最为简单,但是也有一些安全问题。比如说,你这么一配置,其实相当于否定 Google 为 7.0 https 增强的安全策略。而且这么一来,你的 https 请求任何人都可以抓包,这有什么意义呢?

接着介绍 Google 针对这一问题,给出建议:


    
        
    

复制代码

这个就是我们在调试时可以信任的证书。


参考 https://medium.com/@elye.project/android-nougat-charlesing-ssl-network-efa0951e66de

你可能感兴趣的:(进阶)