【发布时间】:2017-07-27 00:59:30
【问题描述】:
我已经为 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
【问题讨论】:
标签: java google-chrome selenium proxy