新项目采用了flutter技术进行设计,作为测试,项目开始后,要对客户端请求数据进行抓取查看,自然的就发现了flutter和已经接触的其他技术的第一个明显差别。flutter 无 法 抓 包。。。然而,通过Charles可以正常抓取其他APP的请求信息,对比来看,flutter应该是不支持的。
第一时间反馈给开发,了解到flutter底层代码中默认是不支持代理,需要进行配置。。。要把代理IP,端口号写入代码中,才能进行抓包。据说,有些开发使用的一些框架,配置的方式都不允许,在前后端联调时,开发只能通过后端的log数据来操作,虽然不知道真假,但是还是对这个新的技术产生了好奇。
网上查询了下flutter抓包解决方法说明,发现了篇文章写得很好,从源码出发,给我们解释了特殊抓包方式的原因。
简单点就是:flutter是否可以连接代理是从environment中读取,设置代理时必须指定http_proxy或https_proxy等。而从_openUrl方法实现中proxyConf = new _ProxyConfiguration(_findProxy(uri));得出默认情况下environment是为空的,所以要想在Flutter的http请求中使用代理,则要指定相应的代理配置,即设置httpClient.findProxy的值。当设置完成environment,项目代码就可以通过fiddler和Charles抓包了。
原文链接:https://juejin.im/post/5c85f504e51d4510a06d3f0a