C# 使用Fiddler API 抓取 Android App 数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WPR13005655989/article/details/79918888

  通过这两天的查阅资料,发现百度上对于Fiddler API 稍微高级一点的用法比较少,其中主要的教程是偏向于对Fiddler软件的使用方法,碰巧最近在做头脑王者相关的辅助,因此分享下 基于C# 对Fiddler 进行二次开发的学习经验。这里主要通过调用Fiddler提供的API 对网络流量的抓取。

**注意: andorid 7.0 系统默认不信任用户自行安装的证书,因此有需要的话需要把自己的证书安装到系统证书中(需要root)

具体操作可以参考:https://www.jianshu.com/p/b94044ff9194

一、环境搭建

1.首先去fiddler官网下载相应的API和开发文档

2.在项目中引用所有dll,反正也没多少

FiddlerCore4.dll、
CertMaker.dll、
BCMakeCert.dll、
BasicFormatsForCore.dll

二、关键代码

1.准备需要的变量

        public int iSecureEndpointPort = 7777;
        public string sSecureEndpointHostname = "localhost";
        public int startPort = 8877;
        public bool isIgnoreCertError = false;
        public Proxy oSecureEndpoint; 
      //设置fiddler的启动标识 需要允许远程计算机连接和对https的解密
      public FiddlerCoreStartupFlags oFCSF = FiddlerCoreStartupFlags.AllowRemoteClients | FiddlerCoreStartupFlags.DecryptSSL;

2.添加Fiddler的启动和关闭方法

public void Start(int port)
        {
            if (FiddlerApplication.IsStarted())
                {
                    Shutdown();
                    FiddlerApplication.BeforeResponse -= FiddlerApplication_BeforeResponse;
                }
            Fiddler.CONFIG.IgnoreServerCertErrors = isIgnoreCertError;
            this.startPort = port;
            FiddlerApplication.Startup(startPort, oFCSF);//启动侦听
            //创建一个https侦听器,用于伪装成https服务器
            FiddlerApplication.Prefs.SetBoolPref("fiddler.network.streaming.abortifclientaborts", true);
            Fiddler.CertMaker.trustRootCert();
            FiddlerApplication.BeforeResponse += FiddlerApplication_BeforeResponse;//注册事件,用于捕获网络流量
            oSecureEndpoint = FiddlerApplication.CreateProxyEndpoint(iSecureEndpointPort, true, sSecureEndpointHostname);
    }
        public void Shutdown()
        {
            if (null != oSecureEndpoint) oSecureEndpoint.Dispose();
            Fiddler.FiddlerApplication.Shutdown();
            System.Threading.Thread.Sleep(500);
            isStart = false;

        }

3.捕获并处理数据

 private void FiddlerApplication_BeforeResponse(Session oSession)
        {
 //oSession.url中包括响应的url 可以根url筛选自己要捕获的内容

  //oSession提供了uriContains的方法可以直接判断url 
//oSessionGetResponseBodyAsString方法可以直接读取响应内容

        }

值得注意的是抓取手机包时一般需要https证书,在服务运行后可以在手机浏览器 输入计算机IP+端口8877 (如我的:192.168.1.111:8877)打开后点击下载根证书然后在手机中安装(不能直接打开证书文件  小米安装证书是在设置--更多设置--系统安全--从SD卡安装,安装后能手机浏览器打开百度能正常显示即可)


 

猜你喜欢

转载自blog.csdn.net/WPR13005655989/article/details/79918888
今日推荐