今天小编给大家分享一下Flutter配置代理抓包如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在开发Flutter中,我们经常需要对网络请求进行调试,而Flutter自带的devtool的network又不太好用,有时会出现请求成功,但是又看不到response返回(难道是我姿势不对?)。于是我就尝试通过抓包来查看请求安装charles有时我们需要抓https的请求,此时用charles抓包的内容是加密的,看不到明文,这时候需要安装下Charles的证书来解决。点击help > SSL Proxying > Install Charles Root Certificate
,安装到系统的钥匙串中。点击证书,将信任选项改成始终信任开启charles的代理。开启后,确认Proxy
选项卡与下方画红线的地方显示一样完成工具准备后,由于Flutter默认不走系统代理,所以我们还需要手动在Flutter
项目中配置代理,charles
才能正确抓到包。这里提供两种方案,一种是在请求库的配置里设置代理,另一种是利用Flutter
原生的类来完成dio
配置代理flutter项目里通常用dio
库做http请求,我们可以通过dio的httpClientAdapter
属性配置我们的本地代理。代码如下:其中client.findProxy
函数用来返回我们的代理接口,charles的默认的系统代理端口是8888
,所以这里配置成PROXY localhost:8888
就可以了。下面一句client.badCertificateCallback免费云主机域名
函数也很关键,如果不进行配置,charles在抓包https请求时会出现下图错误:这个错误产生的原因,经我查阅网上资料是因为Flutter请求https时用的是自己的CA认证证书,所以charles在认证证书时没有通过,导致抓包错误。所以我们直接通过client.badCertificateCallback
函数返回true
来忽略证书就好了。有了上面dio
的配置后,还不够,因为我们的websocket
请求还是无法抓包。如果你项目中需要抓取websocket
,可以使用web_socket_channel
这个库。需要注意的是这个库不能从官网拉取,因为官方的web_socket_channel
的还不支持代理,我在官方的代码仓库看到有几个与支持代理相关的pr请求,但是官方都还没有进行合并分支,所以我就自己fork仓库修改了一下,我们可以改成以下方式进行安装:然后我们开始配置web_socket_channel
,不过有了之前配置dio
的经验后,我们配置web_socket_channel
也是使用了差不多的思路,代码如下:在入口文件main.dart
里定义一个HttpOverrides
的子类,重写它的createHttpClient
方法。原理也是一样的,把findProxy
和badCertificateCallback
方法进行替换。然后挂载到全局。这种方案的好处是不受第三方请求库限制,配置完后https
和websocket
都能正确抓包。效果如图:以上就是“Flutter配置代理抓包如何实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。
本文小编为大家详细介绍“Vue怎么实现购物车计算总价功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue怎么实现购物车计算总价功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深免费云主机域名入,一起来学习新知识吧。效果:代码html总价:{{sumP…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。