其他
App抓包原理浅谈(避免抓包的方法)
Android7.0及以上为何不能轻易抓取到https请求的明文数据?
在Android7.0(API 24),有一个名为"Network Security Configuration"的新安全功能。这个新功能的目标是允许开发人员在不修改应用程序代码的情况下自定义他们的网络安全设置。如果应用程序运行的Android系统版本高于或等于24,并且targetSdkVersion>=24,则只有系统(system)证书才会被信任。所以用户(user)导入的Charles根证书是不被信任的。
1.抓包的原理
代理
客户端请求->经过代理->到达服务端
服务端返回->经过代理->到达客户端
2.任何https的app都能抓得到吗?
(1).Android7.0以下是可以的,只要手机里安装对应CA证书,比如用Charles/Burp Suite/Fiddler抓包,手机要安装Charles/Burp Suite/Fiddler提供的证书就行。
(2).Android7.0之后,google推出更加严格的安全机制,应用默认不信任用户证书(手机里自己安装证书),自己的app可以通过配置解决,但是抓其它app的https请求就行不通。
3.如何避免抓包
(1).基于抓包原理的基础上,直接使用okhtttp禁止代理,就可以了,经过测试,可以避免抓包,关键代码,如下所示:
builder.proxy(Proxy.NO_PROXY)
(2).直接使用加密协议,全是字段乱码,把域名换装IP;这样基本别人是很难抓到包,像混淆一样
4.Charles抓包原理图