使用Fiddler捕获Lightstreamer HTTP数据?

时间:2015-08-19 02:17:51

标签: c# selenium proxy fiddler fiddlercore

我正在使用Fiddler捕获通过LightStreamer发送到页面的更新。我正在创建一个FiddlerCore代理并将Selenium ChromeDriver实例连接到它。我的自动化将Chrome导航到页面,数据通过代理进行。

加载后,页面的更新(通过LightStreamer)会明显显示在页面上,但它们不会通过AfterSessionComplete事件。

如果我运行Fiddler桌面应用程序而不是启动我的代理(注释掉“StartProxy()”),所有更新(通过LightStreamer)都会通过并显示在应用程序中。它们似乎有HTTPS数据,但其他HTTPS数据似乎已经通过。

我还尝试使用BeforeResponse事件而不是AfterSessionCompleted。

这是我的代码:

static void Main(string[] args)
{
    StartProxy();

    var seleniumProxy = new Proxy { HttpProxy = "localhost:8888", SslProxy = "localhost:8888" };
    var chromeOptions = new ChromeOptions { Proxy = seleniumProxy };

    var path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) + "\\ChromeDriver\\";
    var chromeService = ChromeDriverService.CreateDefaultService(path);

    var driver = new ChromeDriver(chromeService, chromeOptions);

    driver.Navigate().GoToUrl("https://mywebpage.com");

    // page loads and updates start flowing

    Console.ReadLine();

    driver.Dispose();

    StopProxy();
}

private static void FiddlerApplication_AfterSessionComplete(Session session)
{
    // data comes through, just not the LightStreamer Data
    var respBody = session.GetResponseBodyAsString();
    Console.WriteLine(respBody);        

    // do something with the response body.
}

static void StartProxy()
{
    if (FiddlerApplication.IsStarted())
        FiddlerApplication.Shutdown();

    FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete;
    FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.DecryptSSL);
}

static void StopProxy()
{
    FiddlerApplication.AfterSessionComplete -= FiddlerApplication_AfterSessionComplete;

    if (FiddlerApplication.IsStarted())
        FiddlerApplication.Shutdown();
}

感谢您的帮助。

更新:我还尝试使用标志:FiddlerCoreStartupFlags.Default而不是FiddlerCoreStartupFlags.DecryptSSL,在没有运气的情况下启动fiddler。

0 个答案:

没有答案