我为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
答案 0 :(得分:1)
尝试查看代码here。特别是这些位:
proxy.setProxyType(ProxyType.MANUAL);
capability.setCapability(CapabilityType.PROXY, proxy);
我不知道Chrome中有任何特殊需要,因此它可能是基本的。
答案 1 :(得分:0)
使用Chrome进行基本身份验证时似乎存在问题。
所以我已将我的IP地址添加到&#34;经过身份验证的IP或主机名&#34;在Proxymesh仪表板中。有了这个我绕过了用户名和密码验证。
代理代理=新代理();
/interviews/
有了这个,我可以使用chrome使用代理。此解决方案特定于ProxyMesh提供程序。