Fiddler 经常忽略本地主机上的一些 Http 流量。 Fiddler 或 Selenium 代理设置?
Fiddler often ignoring some Http traffic on localhost. Fiddler or Selenium Proxy settings?
我正在使用 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 收集的数据(页面更新)只是在某些时候收集(它曾经非常一致但现在它很少起作用了)。
我读到 here and here 如果代理设置在本地主机上,浏览器可以忽略代理。
我尝试将此行更改为机器名称和 IP 地址,但没有成功,Chrome 将启动并为每个显示 "Unable to connect to proxy server"。我也试过每一个都在前面加上"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 is already in use..."。
是否有一些用于启动代理的设置(我的 StartProxy()),如果不是默认设置,您必须在其中指定终点 "localhost"?
感谢您的帮助。
你问的不是很清楚。
Chrome向FiddlerCore发送请求没有问题;您不需要任何特殊步骤。
您的 StartProxy
方法根本不应调用 Shutdown。
您正在使用 AfterSessionComplete
,这意味着您只会在流量完成后才接到电话;如果出现延误,您可能要等很久以后才能看到路况。
您在代码的哪个位置清除了浏览器的缓存,以确保它始终从网络(以及 FiddlerCore)中提取,而不是从 Web 浏览器的缓存中提取?
我正在使用 Fiddler 监控来自我的 selenium 实例的流量。
我正在使用以下代码通过 Fiddler.Core
启动 Fiddlerstatic 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 收集的数据(页面更新)只是在某些时候收集(它曾经非常一致但现在它很少起作用了)。
我读到 here and here 如果代理设置在本地主机上,浏览器可以忽略代理。
我尝试将此行更改为机器名称和 IP 地址,但没有成功,Chrome 将启动并为每个显示 "Unable to connect to proxy server"。我也试过每一个都在前面加上"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 is already in use..."。
是否有一些用于启动代理的设置(我的 StartProxy()),如果不是默认设置,您必须在其中指定终点 "localhost"?
感谢您的帮助。
你问的不是很清楚。
Chrome向FiddlerCore发送请求没有问题;您不需要任何特殊步骤。
您的 StartProxy
方法根本不应调用 Shutdown。
您正在使用 AfterSessionComplete
,这意味着您只会在流量完成后才接到电话;如果出现延误,您可能要等很久以后才能看到路况。
您在代码的哪个位置清除了浏览器的缓存,以确保它始终从网络(以及 FiddlerCore)中提取,而不是从 Web 浏览器的缓存中提取?