我正在使用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。