Fiddler经常忽略localhost上的一些Http流量。 Fiddler或Selenium Proxy设置?

时间:2015-08-18 07:07:28

标签: c# selenium proxy fiddler fiddlercore

我正在使用Fiddler来监控来自我的selenium实例的流量。

我使用以下代码使用Fiddler.Core启动Fiddler

static void StartProxy()
{
    FiddlerApplication.Shutdown();
    FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete;
    FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.DecryptSSL);
}

我正在启动Selenium以通过以下方式使用代理:

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);

Selenium将导航到我的网页,Fiddler将收集HTTP请求。大多数数据总是会通过(例如HTML的GET),但是我想用Fiddler收集的数据(页面更新)只是在某些时候收集的(它曾经非常一致但现在很少有效) )。

我读过herehere,如果浏览器设置在localhost上,浏览器可以忽略代理。

我尝试将此行更改为计算机名称和IP地址,但没有运气,Chrome会启动并为每个人说“无法连接到代理服务器”。我也尝试了前面的“http://”。

// Original
var seleniumProxy = new Proxy { HttpProxy = "localhost:8888", SslProxy = "localhost:8888" }; 

// "Dot Trick"
var seleniumProxy = new Proxy { HttpProxy = "localhost.:8888", SslProxy = "localhost.:8888" }; 
// With this line, chrome will start and connect to proxy server but it will still not get the traffic I want consistently.

// IP Address
var seleniumProxy = new Proxy { HttpProxy = "192.168.1.5:8888", SslProxy = "192.168.1.5:8888" }; 

// Machine Name
var seleniumProxy = new Proxy { HttpProxy = "machine_name:8888", SslProxy = "machine_name:8888" }; 

我确定这是推出Fiddler,因为如果我尝试运行Fiddler桌面应用程序,我会得到“Port 8888已经在使用......”。

是否有一些启动代理的设置(我的StartProxy()),如果它不是默认的“localhost”,你必须指定终点?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你所要求的并不完全清楚。

Chrome向FiddlerCore发送请求没有问题;你不需要任何特殊的步骤。

您的StartProxy方法根本不应该调用Shutdown。

您正在使用AfterSessionComplete,这意味着您只有在流量完成后才会被调用;如果有延迟可能会阻止您在很晚之前看到流量。

您的代码中的哪个位置清除浏览器的缓存,以确保它始终从网络(以及FiddlerCore)拉出而不是从Web浏览器的缓存中拉出来?