前言:之前寫了一篇《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則需要修改一下才能抓到包。
前置條件:
-
Charles的Root Certificate已經(jīng)安裝
Charles Root Certificate
-
-
手機(jī)上已經(jīng)下載安裝了Charles的證書
Download And Install on Mobile Device
-

Tips
- 手機(jī)上wifi,需要先設(shè)置手動(dòng)代理
- 瀏覽器輸入:chls.pro/ssl 下載證書并安裝
- 如果是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)求妥妥的

