2

默认情况下,PhantomJS 将无法加载许多 HTTPS url,但您可以通过添加一些命令行标志(如--ignore-ssl-errors=true--ssl-protocol=any. 但是,即使启用了这些标志,我也发现一些站点会失败;例如尝试以下代码片段:

var page = require('webpage').create();

page.onResourceError = function(e){
  console.log("Page resource failed to load. Reason: "+e.errorString);
}

page.open("https://www.bluehaven.com/pool-remodeling/", function(status){
  console.log("Load status: "+status);
});

当我在启用这两个标志的情况下运行此脚本时,我得到以下输出:

$ phantomjs --ignore-ssl-errors=true --ssl-protocol=any lib/test_phantom.js 
Page resource failed to load. Reason: SSL handshake failed
Load status: fail

我已经用谷歌搜索了很多,围绕 PhantomJS 和 SSL 故障的讨论都建议使用上述两个命令标志,或者建议这是由于 PhantomJS中的一个不太可能很快得到修复的错误。

SO上的任何人对我如何让PhantomJS加载上述URL(以及发生相同HTTPS错误的任何其他站点)有不同的想法?我的计划 B 是尝试 SlimerJS,因为我知道它不会共享此 SSL 错误,但这会涉及一些风险,除非绝对需要,否则我宁愿不这样做。

4

1 回答 1

3

该程序在带有 phantomjs 1.9.0 的 Ubuntu 14.04 上运行良好。由于服务器仅支持 ECDHE 密码,我假设您使用的是旧版本的 OpenSSL,但系统上不支持这些密码。

于 2015-07-09T18:24:18.973 回答