关于抓包过程中遇到的问题总结

这里说下我经常使用的代理抓包软件

  1. 图形化抓包工具fiddler
  2. 命令行 mitmproxy/mitmdump

重中之重首先对于代理抓包工具,要抓取https协议接口,证书很重要,请按照各家代理软件提示去安装好,并信任;其次连接的网络属于同一局域网,且代理 host及port均设置正确

若提示Cannot establish TLS with client (sni: dragate.dc.oppomobile.com): TlsExcept ion("SSL handshake error: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 aler t certificate unknown')])"),基本可判断为证书安装问题。


-------------------------------------------------------------------------------

      若以上操作均正常,如果你用的恰好是android手机,莫慌;可以看看你们应用打印的错误日志,若是java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.,那么恭喜你,你来对地方了,你手机系统是不是7.0及以上?若是,再次恭喜你
      这里大概说下原因,google自从7.0及以上系统,推出了更严格的网络完全机制,且你们开发也严格按照要求配置了network-security-config,那么出现抓不到包也十有八九了,这正好符合google的目的,一切都是为了安全,避免数据泄露。
      7.0系统后,默认情况下,来自所有应用的安全连接(使用 TLS 和 HTTPS 之类的协议)均信任预装的系统 CA(system区),而面向 Android 6.0(API 级别 23)及更低版本的应用默认情况下还会信任用户添加的 CA 存储区(user区)。而用于预装系统 CA 证书为 "system"区,用于用户添加的 CA 证书为 "user"区,所以知道为什么会报找不到证书路径了吧,压根不信任你安装在user区的证书呗。关于google 网络安全配置说明,详见:https://developer.android.com/training/articles/security-config


-------------------------------------------------------------------------------

解决办法:

  • Android 只能用7.0以下系统的手机抓包
  • 开发改变网络安全配置及其他手段,遵循不悖于google针对7.0及以上系统增强的安全策略,也方便调试
  • 使用root手机,将代理软件的证书安装在system区,system 区目录:/system/etc/security/cacerts/

你可能感兴趣的:(关于抓包过程中遇到的问题总结)