一、抓取app的https协议

      1、fiddler工具配置

   在Tools->Options切换到Tab页HTTPS,勾选下图中箭头指向的复选框,并确认是否缺少协议,若缺少默认的协议,则增加,如缺少;tls1.2,注意分号间隔。

           

frida ios socket抓包 fiddler socket抓包_frida ios socket抓包

    切换到tab页Connections,勾选Allow remote computers to connect。

           

frida ios socket抓包 fiddler socket抓包_抓包_02

     由于默认的证书不符合andriod和ios的证书要求,所以需要下载CertMaker插件,双击安装后,重启fiddler。注意这一步很重要,必须使用CertMaker插件,不要使用默认的证书生成器,否则抓不到包。

     下载地址:https://www.telerik.com/fiddler/add-ons

          

frida ios socket抓包 fiddler socket抓包_IP_03

    

    2、手机设置代理

        首先确保手机与PC在同一个局域网内,鼠标移动到fiddler右上角的Online上,可以查到PC的IP地址

               

frida ios socket抓包 fiddler socket抓包_IP_04

     IOS手机:设置->无线局域网->找到连接的无线网络,设置HTTP代理,服务器填写的要与Online中的IP地址一致,端口填写8888。

  安卓手机:设置->WLAN->找到连接的无线网络-->代理选择"手动"->主机名填写的要与Online中的IP地址一致,端口填写8888。

     设置完代理后,打开手机浏览器,地址输入:PC的IP地址:8888(如10.66.88.101:8888),点击最下边的FiddlerRoot certificate,确认安装。

              

frida ios socket抓包 fiddler socket抓包_抓包_05

  IOS手机安装完证书后,在设置->通用->关于本机->证书信任设置,找到刚安装的证书,并打开,如下图。

                

frida ios socket抓包 fiddler socket抓包_解决方法_06

    设置完fiddler工具及手机端的IP代理、证书安装后,一般就可以抓取app端的https的请求数据

              

frida ios socket抓包 fiddler socket抓包_抓包_07

 

二、经过以上常规设置后,若还是无法捕获https协议

    1、显示Tunnel to...443

         可能原因是IOS的版本为10以上,安卓应用用的是的api 24 以上

        IOS的解决方法:设置->常规->关于本机->证书信任设置,开启fiddler的证书(相当于同意全量监控,所以其他应用不要乱开                    通),  再试试扑包,应该就可以显示了

        安卓api 24以上的解决方法: 安卓没有提供系统层面上的设置,所以只能在应用上下功夫了,需要在应用代码配置中进行配置,相当于开发者留后门,否则只能root设备了,然后绕过证书验证了。严格意义上来说,安卓这是无解的,下面提供代码配置内容

  <network-security-config>
    <debug-overrides>
      <trust-anchors>
        <!-- Trust user added CAs while debuggable only -->
        <certificates src="user" />
      </trust-anchors>
    </debug-config>
  </network-security-config>

三、其他问题

     fiddler捕获不了的情况分析:

           1、fiddler并不是支持所有协议,目前已知的有http2、tcp、udp、websocket等,如果应用使用了以上协议,那么fiddler则无法捕获。fiddler无法捕获http2是因为fiddler是基于.net framework实现的,而.net framework不支持http2。

           2、fiddler抓包的原理是中间人攻击,即两头瞒,欺骗客户端和服务器端,如果https证书写死在app里,也就是,app不信任fiddler颁发给它的证书,app只信任自己的证书,fiddler无法瞒客户端了,因此fiddler也就无法抓包了。如果

     是自己开发的app,开发调试方便起见,可以使用类似wireshake工具导入服务器证书,抓包解密。

         

 

四、参考

    fiddler抓包for ios  :https://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureForiOS

    fiddler抓包for android :https://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureForAndroid

    tunnel to 的完美解决:

   

    常见异常解决方法:

    关于android 7.0 无法进行https抓包的问题:

 

越努力越幸运