该问题可能与最近发现的一个 SSLv3 漏洞(POODLE)有关。网站所有者被迫从他们的网站中删除 SSLv3 支持。由于 PhantomJS < v1.9.8默认使用 SSLv3 ,您应该使用 TLSv1:
casperjs --ssl-protocol=tlsv1 yourScript.js
any
当新的 PhantomJS 版本与其他 SSL 协议一起出现时,通用的解决方案将被使用。但这将使 POODLE 漏洞可在尚未禁用 SSLv3 的站点上被利用。
casperjs --ssl-protocol=any yourScript.js
替代方法:更新到 PhantomJS 1.9.8 或更高版本。请注意,更新到 PhantomJS 1.9.8 会导致一个新的 bug,这对 CasperJS 来说尤其令人讨厌。
如何验证:resource.error
在脚本的开头添加这样的事件处理程序:
casper.on("resource.error", function(resourceError){
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
});
如果确实是 SSLv3 的问题,则错误将类似于:
错误代码:6。说明:SSL 握手失败
--ignore-ssl-errors=true
顺便说一句,当证书有问题时,您可能还想使用命令行选项运行。