Flutter实战-请求封装(五)之设置抓包Proxy

用了两年的flutter,有了一些心得,不虚头巴脑,只求实战有用,以供学习或使用flutter的小伙伴参考,学习尚浅,如有不正确的地方还望各路大神指正,以免误人子弟,在此拜谢~(原创不易,转发请标注来源和作者)

注意:无特殊说明,flutter版本为3.0+


一.代理设置的通常做法

很多开发细化开发的时候使用Charles进行抓包,一般网上的教程都是如下:

(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (HttpClient client) {

client.findProxy = (uri) { return "PROXY localhost:8888";

}; };

这样在开发的时候,就可以在Charles抓到相关请求内容,但是如何让测试也可以进行抓包很少 有提到。

二.代理设置改造

下面我们对设置代理的方法进行改造,使得测试人员也可以对Flutter类型的App进行抓包。

1.安装http_proxy

http_proxy: ^1.2.0

感谢大佬提供的插件,我们知道ios和Android获取http代理的方式是不一样的,此插件提供了getProxyHost和getProxyPort两个原生通道,并在双端实现了获取代理host和port的方法。

2.定义Proxy类

此类含有初始化方法,和是否开启代理

class Proxy {
// 是否启用代理

static HttpProxy? proxy;
static bool isProxy = false;

static Future init() async {
if (!kReleaseMode) {
proxy ??= await HttpProxy.createHttpProxy();
if (proxy!.host != null) {
isProxy = true;
}
}
}
}


3.Proxy使用

DefaultHttpClientAdapter defaultHttpClientAdapter = DefaultHttpClientAdapter()
..onHttpClientCreate = (HttpClient client) {
client.idleTimeout = const Duration(seconds: 5);
if(Proxy.isProxy){
client.findProxy = (uri) {
return "PROXY ${Proxy.proxy?.host}:${Proxy.proxy?.port}";
};
//代理工具会提供一个抓包的自签名证书,会通不过证书校验,所以我们禁用证书校验
client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
}
return null;
};

展开阅读全文

页面更新:2024-03-30

标签:习尚   大佬   实战   大神   初始化   插件   有用   证书   测试   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top