如何使用selenium webdriver和浏览器HtmlunitDriver for Java设置代理?

时间:2015-07-11 04:51:10

标签: java selenium-webdriver proxy

我的名字是Leo,我是一名java bot开发者,我使用Selenium webdriver和Browser HtmlUnitDriver无头,我的问题就像我的标题说:我知道如何使用FirefoxDriver设置代理,但我不想使用UI浏览器因为执行起来太慢了,所以,在google和其他页面搜索我没有发现任何类似内容,如果有人知道如何使用HtmlUnitDriver打开一个带代理的Url,请帮助你的答案对我有用,谢谢。

我在FirefoxDriver中使用它,我想用HtmlUnitDriver做同样的事。

org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy();
    proxy.setHttpProxy("198.2.202.49:80")
         .setFtpProxy("198.2.202.49:80")
         .setSslProxy("198.2.202.49:80");
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(CapabilityType.PROXY, proxy);
    WebDriver driver = new FirefoxDriver(cap);

2 个答案:

答案 0 :(得分:2)

这是我自己的问题的答案,我采用“@Raghav N”告诉我的方法,非常感谢! :D(y)

我这样做并且完美地工作,并且它可以进行测试,因为打开www.find-ip.net并废弃了实际的代理活动,并且它与我放置的相同。

这里代码工作,如果你想测试它,复制并粘贴你的proyect。 注意:使用类代理,您需要“导入org.openqa.selenium.Proxy;”

results.list <- list()
results.list <- mclapply(listOfData, analysisFunction, mc.cores = 7)

library(data.table)
result <- rbindlist(results.list) 

输出:

HtmlUnitDriver driver = new HtmlUnitDriver(); 
Proxy proxy = new Proxy();
proxy.setHttpProxy("42.117.1.78:3128"); 
driver.setProxySettings(proxy);
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.get("http://www.find-ip.net");
String ip = driver.findElement(By.xpath("//*[@id='ipbox']/div[1]/div[2]")).getText(); // Copia el texto del actual ip
String pais = driver.findElement(By.xpath("//*[@id='ipbox']/div[2]/div[2]")).getText(); //Copia el texto del actual Pais del proxy
System.out.println("» Ip Ficticio: " + ip +" - Country: " + pais);

如果页面没有加载,可能代理已关闭,请尝试使用其他代理。

我希望这会对你有所帮助,再见! :)

答案 1 :(得分:0)

您可以尝试使用以下代码

HtmlUnitDriver driver = new HtmlUnitDriver(capabilities);
ArrayList<String> noProxyHosts = null;
driver.setHTTPProxy("198.2.202.49", 80, noProxyHosts);