iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Flutter配置代理抓包如何实现
  • 577
分享到

Flutter配置代理抓包如何实现

2023-07-05 03:07:29 577人浏览 泡泡鱼
摘要

今天小编给大家分享一下Flutter配置代理抓包如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。背景在开发Flutte

今天小编给大家分享一下Flutter配置代理抓包如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    背景

    开发Flutter中,我们经常需要对网络请求进行调试,而Flutter自带的devtool的network又不太好用,有时会出现请求成功,但是又看不到response返回(难道是我姿势不对?)。于是我就尝试通过抓包来查看请求

    工具准备

    • 安装charles

    • 有时我们需要抓https的请求,此时用charles抓包的内容是加密的,看不到明文,这时候需要安装下Charles的证书来解决。点击help > SSL Proxying > Install Charles Root Certificate,安装到系统的钥匙串中。

    Flutter配置代理抓包如何实现

    点击证书,将信任选项改成始终信任

    Flutter配置代理抓包如何实现

    开启charles的代理。开启后,确认Proxy选项卡与下方画红线的地方显示一样

    Flutter配置代理抓包如何实现

    配置Flutter代理

    完成工具准备后,由于Flutter默认不走系统代理,所以我们还需要手动在Flutter项目中配置代理,charles才能正确抓到包。这里提供两种方案,一种是在请求库的配置里设置代理,另一种是利用Flutter原生的类来完成

    方式一、Http请求库配置代理

    dio配置代理

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

    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; //忽略证书};

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

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

    Flutter配置代理抓包如何实现

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

    WEB_Socket_channel配置代理

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

    dependencies:  web_socket_channel:      git:        url: https://GitHub.com/IFreeOvO/web_socket_channel.git        ref: master

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

    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里定义一个HttpOverrides的子类,重写它的createHttpClient方法。原理也是一样的,把findProxybadCertificateCallback方法进行替换。然后挂载到全局。

    // 重写HttpOverridesclass MyHttpOverrides extends HttpOverrides {  @override  HttpClient 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());}

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

    Flutter配置代理抓包如何实现

    以上就是“Flutter配置代理抓包如何实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: Flutter配置代理抓包如何实现

    本文链接: https://www.lsjlt.com/news/349218.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Flutter配置代理抓包如何实现
      今天小编给大家分享一下Flutter配置代理抓包如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。背景在开发Flutte...
      99+
      2023-07-05
    • Flutter配置代理抓包实现过程详解
      目录背景工具准备配置Flutter代理方式一、http请求库配置代理web_socket_channel配置代理方式二、重写原生方法背景 在开发Flutter中,我们经常需要对网络...
      99+
      2023-02-13
      Flutter配置抓包 Flutter 配置 抓包
    • fiddler手机抓包/模拟器抓包配置代理没有网络问题
      最近工作需要对app进行网络抓包,安装了fiddler工具,使用夜神模拟器模拟手机抓包,各种配置都配置完了,但是app还是不能联网,现将解决方法记录如下: 【问题原因】 当我们在手机或者模拟器安...
      99+
      2023-09-02
      fiddler https 服务器
    • react脚手架配置代理如何实现
      这篇文章主要介绍“react脚手架配置代理如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react脚手架配置代理如何实现”文章能帮助大家解决问题。方法一在package.json 中追加如下...
      99+
      2023-07-05
    • 如何理解https与抓包
      这篇文章主要介绍“如何理解https与抓包”,在日常操作中,相信很多人在如何理解https与抓包问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解https与抓包”的疑惑...
      99+
      2024-04-02
    • Charles抓包手机端app代理服务设置
      第一步:下载安装好Charles; 第二步:Proxy--Proxy settings:设置端口,此处设置8888;  端口下面两个选项都勾选上;点击ok; 第三步:Proxy--SSL Proxying settings:设置encl...
      99+
      2023-09-04
      测试工具 功能测试 测试用例 网络 服务器
    • Flutter环境如何配置
      这篇文章主要介绍了Flutter环境如何配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Flutter环境如何配置文章都会有所收获,下面我们一起来看看吧。当前环境win10as2022.1.1版本jdk11配...
      99+
      2023-07-05
    • node.js如何抓取代理ip
      这篇文章主要介绍node.js如何抓取代理ip,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!node.js实现抓取代理ip 主要文件:index.js const chee...
      99+
      2024-04-02
    • 如何配置Flutter+Idea环境
      这篇文章主要介绍了如何配置Flutter+Idea环境,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。安装Flutter SDK首先下载官方文档中 flutter_window...
      99+
      2023-06-21
    • vue修改打包配置如何实现代码打包后的自定义命名
      目录修改打包配置实现代码打包后的自定义命名修改配置后打包为首先修改router文件打开项目中的build文件夹修改js打包的命名方法修改css打包的命名方法命名修改如下图片还有一种情...
      99+
      2024-04-02
    • 在vue3.0中如何配置代理
      目录vue3.0如何配置代理vue3.0配置代理的两种方式第一种第二种总结vue3.0如何配置代理 在根目录下新建文件 vue.config.js内容如下: module....
      99+
      2023-05-16
      vue3.0配置代理 vue3代理 vue3代理配置
    • Linux下如何编写网络抓包程序代码
      这期内容当中小编将会给大家带来有关Linux下如何编写网络抓包程序代码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。类UNIX操作系统上提供了三种不同的方式访问数据链路层,分别是BSD的BSD分组过滤器(...
      99+
      2023-06-13
    • nginx反向代理如何配置
      要配置Nginx反向代理,您可以按照以下步骤进行操作:1. 安装Nginx:首先,确保您的系统上安装了Nginx。您可以通过运行以下...
      99+
      2023-10-08
      nginx
    • vue如何配置跨域代理
      这篇文章主要介绍了vue如何配置跨域代理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。导语:首先,每一个前端开发人员都应该知道同源策略,同源...
      99+
      2024-04-02
    • Linux中如何配置Cntlm代理
      这篇文章将为大家详细讲解有关Linux中如何配置Cntlm代理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。cntlm 是一个HTTP二级代理软件。 它主要的作用,是在能代理上网的前提下,给这个代理再做一...
      99+
      2023-06-27
    • vue中如何配置proxy代理
      目录vue配置proxy代理proxy常用参数说明关于/api的详解部署因为/api无法请求到数据总结vue配置proxy代理如果你的前端应用和后端 API 服务器没有运行在同一个主...
      99+
      2023-01-14
      vue配置proxy代理 vue配置代理 proxy代理配置
    • react脚手架配置代理的实现
      目录方法一方法二方法一 在package.json 中追加如下配置 "proxy":"http://localhost:5000" 说明: 优点: 配置简单,前端请求资源时可以不加...
      99+
      2023-02-24
      react脚手架 react脚手架代理
    • nginx如何配置反向代理
      这篇文章主要为大家展示了“nginx如何配置反向代理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nginx如何配置反向代理”这篇文章吧。 nginx 配置实...
      99+
      2024-04-02
    • 如何用Python爬虫抓取代理IP
      本篇文章为大家展示了如何用Python爬虫抓取代理IP,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。不知道大家在访问网站的时候有没有遇到过这样的状况就是被访问的网站会给出一个提示,提示的显示是“访问...
      99+
      2023-06-02
    • 详解Go如何快速实现驱动层流量抓包
      本篇文章给大家带来了关于golang的相关知识,其中主要给大家聊聊golang中怎么实现驱动层流量抓包,感兴趣的朋友一起来看一下吧,希望对大家有帮助。一、驱动抓包应用层抓包我们可以使用Fiddler、Httpdebugger、Charles...
      99+
      2023-05-14
      Golang
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作