CasperJS / PhantomJS无法加载https页面

时间:2014-10-16 22:50:48

标签: javascript ssl web-scraping phantomjs casperjs

我知道有些网页PhantomJS / CasperJS无法打开,我想知道这个是否是其中之一:https://maizepages.umich.edu。 CasperJS给出错误:PhantomJS无法打开页面状态=失败。

我尝试忽略-ssl-errors并更改我的用户代理但我不确定如何确定使用哪些。

我现在正在做的就是使用casper.start(url, function () { ... }) url=https://maizepages.umich.edu;

的基本casper设置

1 个答案:

答案 0 :(得分:65)

问题可能与最近发现的SSLv3漏洞(POODLE)有关。网站所有者被迫从其网站上删除SSLv3支持。自PhantomJS< v1.9.8使用default的SSLv3,你应该使用TLSv1:

casperjs --ssl-protocol=tlsv1 yourScript.js

当较新的PhantomJS版本与其他SSL协议一起使用时,可能会使用any。但这会使POODLE漏洞在尚未禁用SSLv3的网站上被利用。

casperjs --ssl-protocol=any yourScript.js

替代方法:更新到PhantomJS 1.9.8或更高版本。请注意,更新到PhantomJS 1.9.8会导致new 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命令行选项运行。