【问题标题】:RemoteWebdriver started with PhantomJS does not open https url使用 PhantomJS 启动的 RemoteWebdriver 无法打开 https url
【发布时间】:2014-12-23 01:47:40
【问题描述】:

我正在使用 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为空

我错过了什么吗?

【问题讨论】:

  • Selenium 是网页抓取的糟糕选择。你看过 curl 或 httpbuilder 之类的东西吗?
  • 我需要提交表单并进行 Javascript 更改。所以我更喜欢硒。你能找到它来抓取 https url。我认为我要抓取的 url 有一些未知的证书,因此它不是抓取的。我们必须设置参数以忽略 SSL 参数。我无法获得正确的参数

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


【解决方案1】:

最近 POODLE 漏洞迫使网站移除 SSLv3 支持。由于 PhantomJS --ssl-protocol=tlsv1 或 --ssl-protocol=any 运行 PhantomJS。请参阅this answer 了解普通 PhantomJS。

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 的字符串数组。

【讨论】:

  • --ssl-protocol=tlsv1 适合我。我尝试了后者,但不起作用
猜你喜欢
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多