如何使用Selenium C#PhantomJSDriver设置http referer标头?

New*_*t99 2 c# http-referer proxy selenium phantomjs

在C#控制台应用程序中使用Selenium C#PhantomJSDriver时,如何设置http referer标头?

我正在使用PhantomJSDriver和我无法控制的代理.

PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
service.AddArgument("--proxy=123.456.78.910:80");
service.AddArgument("--proxy-auth=myproxyuid:myproxypwd");
IWebDriver driver = new PhantomJSDriver(service);
driver.Navigate().GoToUrl("http://www.testsite.com/product/123/");
Run Code Online (Sandbox Code Playgroud)

但是,正在测试的Web应用程序会对请求中的HTTP Referer值执行验证.

我可以使用什么方法在PhantomJSDriver请求中注入HTTP Referer?

New*_*t99 7

回答我自己的问题.

我发现了如何使用C#PhantomJSDriver设置/注入/伪造HTTP Referer.

事实证明,添加自定义标题也会设置/覆盖标准标题.

设置HTTP Referer与设置用户代理的方式非常相似.

使用PhantomJSOptions设置HTTP Referer.

注意:我使用PhantomJSDriverService和PhantomJSOptions来创建驱动程序的实例,以便将命令行参数发送到phantomjs.exe,以便指定我的代理设置等.

这是适合我的代码:

PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
service.AddArgument("--proxy=123.456.78.910:8181");
service.AddArgument("--load-images=false");

var options = new PhantomJSOptions();
options.AddAdditionalCapability("phantomjs.page.settings.userAgent", "myagent/blah.blah");
options.AddAdditionalCapability("phantomjs.page.customHeaders.Referer", "https://www.google.com/");

IWebDriver driver = new PhantomJSDriver(service,options)
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.