zoukankan      html  css  js  c++  java
  • FiddlerCoreAPI开发(二)截获HTTPS流量

    上一篇文章简单简单分析了fiddlercore自带样例的代码,本篇文章进入主题,介绍如何使用fiddlercore截获HTTPS流量。

    当时学习完样例代码后,我觉得结合注释来抓HTTPS的包应该也很简单,结果按照注释的提示修改了下代码后,还是抓不到,反复尝试了很多方法都没有解决,在google上搜了搜有人说可能是证书的问题,但也没有给出具体的解决办法,所以只能自己慢慢摸索,终于找到了一种方法,在这里和大家分享一下。

    既然有可能是证书出了问题,那么我们就自己生成个证书,翻了翻帮助文档发现还真有这样的函数,叫做createRootCert(),而且函数说明中写道: “Create a self-signed certificate to use for HTTPS interception” ,看到这个说明我觉得我可能找对地方了,直接生成证书:

    Fiddler.CertMaker.createRootCert();
    

    利用GetRootCertificate()获得上述证书:

    X509Certificate2 oRootCert = Fiddler.CertMaker.GetRootCertificate();//Returns the Root certificate that Fiddler uses to generate per-site certificates used for HTTPS interception. 
    

    然后把这个证书安装到受信任的根证书颁发机构:

    System.Security.Cryptography.X509Certificates.X509Store certStore = new System.Security.Cryptography.X509Certificates.X509Store(StoreName.Root, StoreLocation.LocalMachine);
    certStore.Open(OpenFlags.ReadWrite);
    try
    {
        certStore.Add(oRootCert);
    }
    finally
    {
        certStore.Close();
    }
    

    这个证书还要赋值给变量oDefaultClientCertificate(The default certificate used for client authentication)

    Fiddler.FiddlerApplication.oDefaultClientCertificate = oRootCert;
    

    至此,问题算是解决了,后面就是按部就班的做就可以了。

    bBufferResponse这个属性在BeforeRequest里设为true,可以修改响应内容:

    Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
    {
        oS.bBufferResponse = true;
    };
    

    BeforeResponse里面把会话存起来:

    Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oSession)
    {
        if (oSession.isHTTPS)
        {
    
                Monitor.Enter(oAllSessions);
                oAllSessions.Add(oSession);
                Monitor.Exit(oAllSessions);
    
        }
    };
    

    忽略服务器证书错误:

    Fiddler.CONFIG.IgnoreServerCertErrors = true;
    

    再往后正常的Startup()和CreateProxyEndpoint()就可以了,响应的内容都保存在oAllSessions里面了,想怎么处理就怎么处理吧,在此不多赘述了,懂的人都懂。

    最后附一张上某宝截获的内容:

    注意

    1.如果是火狐浏览器的话,还需要把证书导入到浏览器中。

    2.别忘了Shutdown(),不然浏览器就上不了网了,上不了的话去浏览器设置里面把代理去掉就可以了。

  • 相关阅读:
    Git理解
    Java基础之四、字符和字符串 异常处理
    魔方第三层复原技巧
    Java基础之三、类的特性和接口
    Java基础之二、类的知识
    Java基础之一、入门知识
    UML之三、建模元素(2)
    看懂棒球-规则、数据
    【转载】自助终端设备安全剖析 (深度好文)
    CVE-2017-12615 Tomcat远程代码执行
  • 原文地址:https://www.cnblogs.com/realwy/p/8111253.html
Copyright © 2011-2022 走看看