使用PhantomJS启动的RemoteWebdriver无法打开https url

时间:2014-10-27 19:11:30

标签: java https selenium-webdriver web-scraping phantomjs

我正在使用Selenium和PhantomJs来抓取URL。我将驱动程序初始化为

final DesiredCapabilities caps = DesiredCapabilities.chrome();
caps.setCapability(
        PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
        "PhantomJsPath");
caps.setCapability("page.settings.loadImages", false);
caps.setCapability("trustAllSSLCertificates", true);

RemoteWebDriver driver = new PhantomJSDriver(caps);
driver.setLogLevel(Level.OFF);
driver.get("https://.......")

从驱动程序获取的pagesource为空        

我错过了什么吗?

1 个答案:

答案 0 :(得分:7)

最近,POODLE漏洞迫使网站删除SSLv3支持。自PhantomJS< v1.9.8默认使用SSLv3,无法加载页面。要解决此问题,您需要使用--ssl-protocol=tlsv1--ssl-protocol=any运行PhantomJS。有关普通PhantomJS,请参阅this answer

caps = DesiredCapabilities.phantomjs(); // or new DesiredCapabilities();
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, 
        new String[] {"--ssl-protocol=tlsv1"});
// other capabilities
driver = new PhantomJSDriver(caps);

如果这不能解决问题,您还可以添加

"--web-security=false", "--ignore-ssl-errors=true"

到了SiKing的答案here中看到的cli args的String数组。