signed

QiShunwang

“诚信为本、客户至上”

用flutter开发的app如何配置代理进行抓包

2021/1/28 15:03:23   来源:

说明

文章首发于HURUWO的博客小站,本平台做同步备份发布。
如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览。
原文链接 用flutter开发的app如何配置代理进行抓包 直接点击即可前往访问。

前言

在日常开发的过程中,遇到需要对我们的app或者别人的app进行测试需要配置拦截器来测试效果。尤其是第三方的软件,比如闲鱼技术使用的就是flutter的框架来进行抓包测试。要抓取这种用flutter的开发的软件的包,需要对flutter的源码进行额外的处理。

也就是说针对闲鱼类似的软件进行爬虫抓包,需要额外的处理代码。下面介绍具体的过程。

或许对我们对于闲鱼数据的抓取有一些额外的提示。

源码中设置代理

通常flutter开发都会采用第三方的网络框架,在java里通常使用okhttp。但是在flutter我经常使用Dio 框架来进行网络的请求。

https://github.com/flutterchina/dio

设置dio的代理

参考项目的示例文件

https://github.com/flutterchina/dio/blob/master/example/proxy.dart

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:dio/adapter.dart';

main() async {
  var dio = Dio();
  dio.options.headers["user-agent"] = "xxx";
  dio.options.contentType = "text";
  // dio.options.connectTimeout = 2000;
  // More about HttpClient proxy topic please refer to Dart SDK doc.
  (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
      (HttpClient client) {
    client.findProxy = (uri) {
      //proxy all request to localhost:8888
      return "PROXY localhost:8888";
    };
    client.badCertificateCallback =
        (X509Certificate cert, String host, int port) => true;
  };
  var dir = Directory("./cookies");
  await dir.create();
  Response<String> response;
  //response= await dio.get("https://github.com/wendux/fly");
  response = await dio.get("https://www.baidu.com");
  print(response.statusCode);
  response = await dio.get("https://www.baidu.com");
  print(response.statusCode);
}

参考文件的项目示例,我们将其中的代理设置为

192.168.xxx.xxx:8888

这样我们的请求就会指向代理地址了。接下来就是设置fidder抓包

设置fidder抓包

fidder

设置Options

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L1jZFof1-1611817172992)(https://www.huruwo.top/wp-content/uploads/2021/01/Image-2-300x215.png)]

设置抓取远程数据包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ExEhiS0a-1611817172995)(https://www.huruwo.top/wp-content/uploads/2021/01/Image1-300x203.png)]

设置代理端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yiw2xU0v-1611817172998)(https://www.huruwo.top/wp-content/uploads/2021/01/Image2-2-300x193.png)]

手机安装证书

浏览器跳转 192.168.xx.xx:8888
点击下载证书安装

总结和思考

整个flutter抓包过程到此为止。针对flutter的平台其实有很多新的东西可以探究。尤其是针对flutter的安全方向的东西。

闲鱼团队采用了大量flutter来代替原生的,所有关于闲鱼的爬虫和闲鱼数据采集可以从分析flutter让入手。

获取闲鱼的源码 同样的植入代码即可完成闲鱼数据采集层面的闲鱼爬虫。

但是问题在于闲鱼并不是我们自己的项目,也许我们需要一个类似xposed的项目去钩住dart的代码。

期待…!