首页 >> 大全

Flutter配置代理抓包

2023-07-22 大全 34 作者:考证青年

项目里通常用dio库做http请求,我们可以通过dio的属性配置我们的本地代理。代码如下:

import 'package:dio/dio.dart';
​
var dio = Dio();
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =(client) {client.findProxy = (uri) {return 'PROXY localhost:8888';};client.badCertificateCallback =(X509Certificate cert, String host, int port) => true; //忽略证书
}; 

其中.函数用来返回我们的代理接口,的默认的系统代理端口是8888,所以这里配置成

PROXY :8888就可以了。下面一句.ck函数也很关键,如果不进行配置,在抓包https请求时会出现下图错误:

抓包设置代理_python代理抓包_

这个错误产生的原因,经我查阅网上资料是因为请求https时用的是自己的CA认证证书,所以在认证证书时没有通过,导致抓包错误。所以我们直接通过.ck函数返回true来忽略证书就好了。

配置代理

有了上面dio的配置后,还不够,因为我们的请求还是无法抓包。如果你项目中需要抓取,可以使用这个库。需要注意的是这个库不能从官网拉取,因为官方的的还不支持代理,我在官方的代码仓库看到有几个与支持代理相关的pr请求,但是官方都还没有进行合并分支,所以我就自己fork仓库修改了一下,我们可以改成以下方式进行安装:

dependencies:web_socket_channel:git:url: https://github.com/IFreeOvO/web_socket_channel.gitref: master 

然后我们开始配置,不过有了之前配置dio的经验后,我们配置也是使用了差不多的思路,代码如下:

import 'package:web_socket_channel/io.dart';
​
// 创建一个自己的HttpClient对象
SecurityContext ctx = SecurityContext.defaultContext;
HttpClient client = HttpClient(context: ctx)..findProxy = ((uri) {return 'PROXY localhost:8888';})..badCertificateCallback = (cert, host, port) {return true;
};
​
_channel = IOWebSocketChannel.connect('wss://xxx.com',customClient: client, // 使用定制的HttpClient
); 

方式二、重写原生方法

在入口文件main.dart里定义一个的子类,重写它的方法。原理也是一样的,把和ck方法进行替换。然后挂载到全局。

// 重写HttpOverrides
class MyHttpOverrides extends HttpOverrides {@overrideHttpClient createHttpClient(SecurityContext? context) {var http = super.createHttpClient(context);http.findProxy = (uri) {return 'PROXY localhost:8888';};http.badCertificateCallback =(X509Certificate cert, String host, int port) => true;return http;}
}
​
void main() {HttpOverrides.global = MyHttpOverrides(); // 使用自己的HttpOverrides类runApp(MyApp());
} 

这种方案的好处是不受第三方请求库限制,配置完后https和都能正确抓包。效果如图:

_python代理抓包_抓包设置代理

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。

有需要的小伙伴,可以点击下方卡片领取,无偿分享

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了