2017-07-27 78 views
0

我已經爲PhantomJS設置了代理服務器並使用下面的代碼驗證了IP地址。它工作正常。如何在硒中設置代理服務器:Java

這裏的主機名是IP地址:43.19.196.36

DesiredCapabilities capabilities = DesiredCapabilities.phantomjs(); 
capabilities.setJavascriptEnabled(true); 
System.setProperty("phantomjs.binary.path", "../Drivers/phantomjs.exe"); 

ArrayList<String> cliArgsCap = new ArrayList<String>(); 
cliArgsCap.add("--proxy=hostname:port"); 
cliArgsCap.add("--proxy-auth=username:password"); 
cliArgsCap.add("--proxy-type=http"); 
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap); 

driver = new PhantomJSDriver(capabilities); 

driver.get("http://api.ipify.org/"); 
logger.info("IP Address: " + Jsoup.parse(driver.getPageSource()).body().text()); 

此代碼工作正常,我的應用程序正在使用代理服務器地址。

2017-07-24 16:37:47 INFO ElectoralRoll:81 - IP Address: 42.10.197.10 

但是,如何設置相同的代理chrome?這是我的代碼。它打印我的IP地址。它不使用代理。

Proxy proxy = new Proxy(); 

proxy.setHttpProxy("hostname:port"); 
proxy.setFtpProxy("hostname:port"); 
proxy.setSslProxy("hostname:port"); 
proxy.setSocksUsername("username"); 
proxy.setSocksPassword("password"); 

capabilities.setCapability(CapabilityType.PROXY, proxy); 

這將打印我的IP地址:

2017-07-24 16:37:47 INFO ElectoralRoll:81 - IP Address: 

我自己也嘗試這個。但沒有奏效。

capabilities.setCapability("chrome.switches", Arrays.asList("--proxy-server=http://username:[email protected]:port")); 

簡稱: https://stackoverflow.com/a/19225780/8329042

編輯:我已經加入:(@里亞茲的答案)

proxy.setProxyType(ProxyType.MANUAL); 

在我的代碼利用這一點,它說:

2017-07-26 20:22:03 INFO ElectoralRoll:83 - IP Address: proxy authorization required 

回答

0

嘗試查看代碼here。特別是這些位:

proxy.setProxyType(ProxyType.MANUAL); 

capability.setCapability(CapabilityType.PROXY, proxy); 

我不知道在Chrome中的任何特殊需要爲這個工作,所以它可能是一些基本的東西。

0

看起來使用基本身份驗證與Chrome存在問題。

因此,我已將我的IP地址添加到Proxymesh儀表板中的「Authenticated IP或Hostname」。有了這個,我繞過了用戶名和密碼認證。

Proxy proxy = new Proxy();

proxy.setHttpProxy("hostname:port"); 
proxy.setFtpProxy("hostname:port"); 
proxy.setSslProxy("hostname:port"); 
//proxy.setSocksUsername("username"); 
//proxy.setSocksPassword("password"); 
proxy.setAutodetect(false); 
proxy.setProxyType(ProxyType.MANUAL); 
capabilities.setCapability(CapabilityType.PROXY, proxy); 

有了這個我可以使用代理使用鉻。此解決方案特定於ProxyMesh提供程序。

相關問題