美文网首页
Flutter中Dio如何抓取Https

Flutter中Dio如何抓取Https

作者: 天上飘的是浮云 | 来源:发表于2021-11-22 12:07 被阅读0次

    前言:之前写了一篇《Flutter中Dio灵活设置抓包代理主机IP和端口》,解决了Flutter中Dio框架抓包只能在代码中写死代理IP和端口号的问题。现在确实可以用户灵活的自行设置代理IP和端口号了。 但是又有个问题,真实使用中发现Https抓不了。

    一、Https抓包参考文章

    一般我们抓包无外乎两种工具:Mac上使用Charles;Windows上使用Fiddler。这一点没什么毛病。

    百度了下,如何用两种工具抓取Https的包,网上大多都是一样的步骤,一般情况也确实是可用的,这里直接贴下链接,就没有必要再写一次了:

    置于Fiddler,也是差不多的,因为本人用的Mac。所以就没看了。但是测试也是可以在Fiddler上抓到Https请求的。

    二、Flutter抓Https请求修改

    上面的是常规的Https配置,但是在Flutter上Dio则需要修改一下才能抓到包。

    前置条件:

      1. Charles的Root Certificate已经安装


        Charles Root Certificate
      1. 手机上已经下载安装了Charles的证书


        Download And Install on Mobile Device
    Tips
    1. 手机上wifi,需要先设置手动代理
    2. 浏览器输入:chls.pro/ssl 下载证书并安装
    3. 如果是iOS 10以后的系统,需要手动信任证书

    按上面的参考文档,我都设置了,却发现仍然抓不到包,都是报红~


    报红

    百思不得其解,怎么弄也不行。

    三、小改动,大回报

    后面,灵机一动,想着是不是Dio没有信任证书导致的,就加了信任证书的代码,发现就解决了。完美~

        (dio?.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
            (client) {
          client.findProxy = (url) {
            return proxy;
          };
    
          //Trust certificate for https proxy
          client.badCertificateCallback = (cert, host, port){
            return true;
          };
          return client;
        };
    

    现在就可以美美的抓到Https的请求咯。


    抓Https请求妥妥的

    相关文章

      网友评论

          本文标题:Flutter中Dio如何抓取Https

          本文链接:https://www.haomeiwen.com/subject/yptbtrtx.html