Flutter实战请求封装(五)之设置抓包Proxy
12月12日 相思宫投稿 用了两年的flutter,有了一些心得,不虚头巴脑,只求实战有用,以供学习或使用flutter的小伙伴参考,学习尚浅,如有不正确的地方还望各路大神指正,以免误人子弟,在此拜谢(原创不易,转发请标注来源和作者)
注意:无特殊说明,flutter版本为3。0
一。代理设置的通常做法
很多开发细化开发的时候使用Charles进行抓包,一般网上的教程都是如下:(dio。httpClientAdapterasDefaultHttpClientAdapter)。onHttpClientCreate(HttpClientclient){
client。findProxy(uri){returnPROXYlocalhost:8888;
};};
这样在开发的时候,就可以在Charles抓到相关请求内容,但是如何让测试也可以进行抓包很少有提到。二。代理设置改造
下面我们对设置代理的方法进行改造,使得测试人员也可以对Flutter类型的App进行抓包。1。安装httpproxy
httpproxy:1。2。0
感谢大佬提供的插件,我们知道ios和Android获取http代理的方式是不一样的,此插件提供了getProxyHost和getProxyPort两个原生通道,并在双端实现了获取代理host和port的方法。2。定义Proxy类
此类含有初始化方法,和是否开启代理
classProxy{
是否启用代理
staticHttpProxy?
staticboolisP
staticFutureinit()async{
if(!kReleaseMode){
proxy??awaitHttpProxy。createHttpProxy();
if(proxy!。host!null){
isP
}
}
}
}
3。Proxy使用
DefaultHttpClientAdapterdefaultHttpClientAdapterDefaultHttpClientAdapter()
。。onHttpClientCreate(HttpClientclient){
client。idleTimeoutconstDuration(seconds:5);
if(Proxy。isProxy){
client。findProxy(uri){
returnPROXY{Proxy。proxy?。host}:{Proxy。proxy?。port};
};
代理工具会提供一个抓包的自签名证书,会通不过证书校验,所以我们禁用证书校验
client。badCertificateCallback(X509Certificatecert,Stringhost,intport)
}
};
投诉 评论