Java Selenium:使用代理进行身份验证

时间:2015-06-29 07:29:03

标签: java selenium selenium-webdriver proxy selenium-chromedriver

我正在尝试通过代理服务器传递Selenium Chrome驱动程序。 服务器使用用户名&密码验证。

当我尝试:

Proxy proxy = new Proxy();
proxy.setHttpProxy("12.345.678.9");

capabilities.setCapability("java.net.socks.username", "my.email@website.com");
capabilities.setCapability("java.net.socks.password", "my_password");
capabilities.setCapability(CapabilityType.PROXY, proxy);

webDriver = new ChromeDriver(capabilities);

然后我尝试使用.get()方法获取一个网站,但是我收到一个需要代理用户名和密码的警报。

我尝试在get()中使用:http://my.username@website.com:password@someWebsite.com 但它没有奏效。

也尝试过:

String stringUrl = "http://www.someUrl.com";
URL url = new URL(stringUrl);
URLConnection uc = url.openConnection();

uc.setRequestProperty("X-Requested-With", "Curl");

String userpass = "my.email@website.com" + ":" + "my_password";
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
uc.setRequestProperty("Authorization", basicAuth);   

InputStreamReader inputStreamReader = new InputStreamReader(uc.getInputStream());

这里有什么建议吗?

谢谢你们!

1 个答案:

答案 0 :(得分:0)

您可以使用

System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/New User");
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);

为此,解决方案http://my.username@website.com:password@someWebsite.com可以使用,或者您可以使用AutoIT