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

时间:2015-11-22 00:49:07

标签: c# selenium proxy phantomjs http-referer

在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/");

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

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

1 个答案:

答案 0 :(得分: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)

希望这有助于某人。