Flutter中Dio如何抓取Https

前言:之前寫了一篇《Flutter中Dio靈活設(shè)置抓包代理主機(jī)IP和端口》,解決了Flutter中Dio框架抓包只能在代碼中寫死代理IP和端口號(hào)的問(wèn)題。現(xiàn)在確實(shí)可以用戶靈活的自行設(shè)置代理IP和端口號(hào)了。 但是又有個(gè)問(wèn)題,真實(shí)使用中發(fā)現(xiàn)Https抓不了。

一、Https抓包參考文章

一般我們抓包無(wú)外乎兩種工具:Mac上使用Charles;Windows上使用Fiddler。這一點(diǎn)沒什么毛病。

百度了下,如何用兩種工具抓取Https的包,網(wǎng)上大多都是一樣的步驟,一般情況也確實(shí)是可用的,這里直接貼下鏈接,就沒有必要再寫一次了:

置于Fiddler,也是差不多的,因?yàn)楸救擞玫腗ac。所以就沒看了。但是測(cè)試也是可以在Fiddler上抓到Https請(qǐng)求的。

二、Flutter抓Https請(qǐng)求修改

上面的是常規(guī)的Https配置,但是在Flutter上Dio則需要修改一下才能抓到包。

前置條件:

    1. Charles的Root Certificate已經(jīng)安裝


      Charles Root Certificate
    1. 手機(jī)上已經(jīng)下載安裝了Charles的證書


      Download And Install on Mobile Device
Tips
  1. 手機(jī)上wifi,需要先設(shè)置手動(dòng)代理
  2. 瀏覽器輸入:chls.pro/ssl 下載證書并安裝
  3. 如果是iOS 10以后的系統(tǒng),需要手動(dòng)信任證書

按上面的參考文檔,我都設(shè)置了,卻發(fā)現(xiàn)仍然抓不到包,都是報(bào)紅~


報(bào)紅

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

三、小改動(dòng),大回報(bào)

后面,靈機(jī)一動(dòng),想著是不是Dio沒有信任證書導(dǎo)致的,就加了信任證書的代碼,發(fā)現(xiàn)就解決了。完美~

    (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;
    };

現(xiàn)在就可以美美的抓到Https的請(qǐng)求咯。


抓Https請(qǐng)求妥妥的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容