2017-07-26 76 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); 

希望這個代碼可以幫助別人!