如何在selenium中设置chrome的代理:Java

时间:2017-07-27 00:59:30

标签: java google-chrome selenium proxy

我为PhantomJS设置了代理,并使用以下代码验证了IP地址。它工作正常。

此处主机名是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:password@hostname:port"));

简称: https://stackoverflow.com/a/19225780/8329042

编辑:我补充说:( @ Riaz回答)

proxy.setProxyType(ProxyType.MANUAL);

在我的代码中使用它,它说:

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

2 个答案:

答案 0 :(得分:1)

尝试查看代码here。特别是这些位:

proxy.setProxyType(ProxyType.MANUAL);

capability.setCapability(CapabilityType.PROXY, proxy);

我不知道Chrome中有任何特殊需要,因此它可能是基本的。

答案 1 :(得分:0)

使用Chrome进行基本身份验证时似乎存在问题。

所以我已将我的IP地址添加到&#34;经过身份验证的IP或主机名&#34;在Proxymesh仪表板中。有了这个我绕过了用户名和密码验证。

代理代理=新代理();

/interviews/

有了这个,我可以使用chrome使用代理。此解决方案特定于ProxyMesh提供程序。