Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RemoteWebdriver started with PhantomJS does not open https url

I am using selenium with PhantomJs to scrape the URL. I initialized the driver as below

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://.......")

The pagesource obtained from the driver is empty

Am I missing anything?

like image 366
Babu Avatar asked Feb 12 '23 17:02

Babu


1 Answers

Recently the POODLE vulnerability forced websites to remove SSLv3 support. Since PhantomJS < v1.9.8 uses SSLv3 by default, the page cannot be loaded. To fix this, you would need to run PhantomJS with --ssl-protocol=tlsv1 or --ssl-protocol=any. See this answer for plain PhantomJS.

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

If this doesn't solve the issue, you can also add

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

to the String array of cli args as seen in SiKing's answer here.

like image 64
Artjom B. Avatar answered Feb 16 '23 02:02

Artjom B.