从抓包知乎失败学到的东西

1、引发思考的现象

知乎详情页太慢了,想抓包看为什么慢,结果发现抓不到!

1.1 抓不到的原因

  • Charles 抓包方式-中间人攻击(英语:Man-in-the-middle attack,缩写:MITM)

维基百科解释:在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。在许多情况下这是很简单的(例如,在一个未加密的Wi-Fi 无线接入点的接受范围内的中间人攻击者,可以将自己作为一个中间人插入这个网络)

知乎搜到的原因

2、防止自己app被抓包的几种方式

2.1 接口访问不使用代理

 URL url = new URL(urlStr);
 urlConnection = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);
  OkHttpClient client = new OkHttpClient().newBuilder().proxy(Proxy.NO_PROXY).build();

2.2 api 24和 targetSdkVersion>=24 对抓包的影响

在Android 7.0(API 24 ) ,有一个名为“Network Security Configuration”的新安全功能。这个新功能的目标是允许开发人员在不修改应用程序代码的情况下自定义他们的网络安全设置。如果应用程序运行的系统版本高于或等于24,并且targetSdkVersion>=24,则只有系统(system)证书才会被信任。所以用户(user)导入的Charles根证书是不被信任的。具体说明看官方文档在这个官方文档里面说了,如何能指定信任用户安装的根证书从而可以实现抓包

2.3 api 24之后抓第三方apk的方法

  1. 通过重打包的方式强行修改配置,或者强行降低 targetSdkVersion,或者强行修改别人源码里面的信任证书的代码,然后再重打包就好了。
  2. 通过使用Xposed的 JustTrustMe 模块来信任所有的证书,Xposed不会用的看这里
  3. 使用Android 7.0 以下的系统安装应用,并抓包
  4. 使用双开沙箱应用,比如VirtualApp,让被抓包的应用运行到VA里面,并且修改VA的targetSdkVersion < 24,或者通过Manifest文件里面配置networkSecurityConfig属性,让他信息Charles证书。
  5. 把 Charles 证书,打入到Android 系统信任证书里面去

具体各种抓包方式可以参考这里

你可能感兴趣的:(从抓包知乎失败学到的东西)