2017-07-26 78 views
0

我在C#/ Winforms应用程序中使用Selenium和PhantomJs。 我有这个代码运行前设置PhantomJS代理:运行时更改PhantomJS代理设置

var driverService = PhantomJSDriverService.CreateDefaultService("phantomjsdriver"); 

Proxy proxy = new Proxy(); 
proxy.HttpProxy = string.Format("xx.xx.xx.xx:port"); 
driverService.ProxyType = "http"; 
driverService.Proxy = proxy.HttpProxy; 
driverService.AddArgument(string.Format("--proxy-auth={0}:{1}", "username", "password")); 

using (var driver = new PhantomJSDriver(driverService)) 
{ 
//...... 
} 

现在我有代理列表!而且我需要在每次请求后更改代理,所以我现在要做的就是退出驱动程序,然后使用新代理重新运行它。 这不是一个非常有效的方式,所以我想知道是否有任何方法可以在不退出驱动程序的情况下更改代理服务器! 在此先感谢!

编辑 所以在PhantomJS,使我们在任何时候更改代理一个function

任何想法如何在Selenium下使用它?

回答

0

我找到了解决办法,发现PhantomJS具有setProxy功能后,它仅仅是一个如何使用它事:

String script = "return phantom.setProxy(\"{0}\", {1}, \"http\", \"{2}\", \"{3}\")"; 
string func = string.Format(script, ppp.IP, ppp.Port, ppp.Username, ppp.Password); 

Object obj = driver.ExecutePhantomJS(func); 

希望这个代码可以帮助别人!