CasperJS/PhantomJS不加载https页面

CasperJS/PhantomJS不加载https页面

问题描述:

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

我试着忽略ssl错误和更改我的用户代理,但我不知道如何确定使用哪些。

我现在正在做的是基本的casper设置与casper.start(url, function() { ... })其中url=https://maizepages.umich.edu;

+0

[PhantomJS未能打开HTTPS站点]的可能重复(http://stackoverflow.com/questions/12021578/ph​​antomjs-failing-to-open-https-site) – 2014-10-17 07:12:10

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

casperjs --ssl-protocol=tlsv1 yourScript.js 

的包罗万象的解决办法是使用any因为当新PhantomJS版本与其他SSL协议一起去。但是,这会使尚未禁用SSLv3的网站上的POODLE漏洞被利用。

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的问题的错误将是这样的:

Error code: 6. Description: SSL handshake failed


顺便说一句,你也可能想要运行--ignore-ssl-errors=true命令行选项,当有用证书来判断错误。

+0

即使使用TLSv1,我也遇到同样的错误。 CasperJS是否还有其他常见的SSL协议? – 2014-10-18 04:01:11

+0

这很奇怪,因为[this](https://gist.github.com/artjomb/d837bad756bd74735f33)为我制作了一个合适的[截图](http://i.imgur.com/fK4hHfk.png)。如果您使用的PhantomJS版本比1.9.7更旧,您应该更新。 – 2014-10-18 07:08:05

+0

这给了我希望!我使用'phantomjs --version'检查了我的安装版本,它给了我1.8.2,但是当我做'酿造信息phantomjs'时它说了1.9.7。我不知道如何去寻找1.8.2版本的安装位置。我会调查是否可以从命令行更新PhantomJS。我的卡斯帕是1.0.4。作为便笺,你知道如何格式化PhantomJS/CasperJS使用的cookies.json文件吗? – 2014-10-18 19:22:59