CasperJS / PhantomJS不加载https页面
我知道有一些网页PhantomJS / CasperJS无法打开,我想知道这是否是其中之一: https ://maizepages.umich.edu。 CasperJS给出了一个错误:PhantomJS无法打开页面状态=失败。
我试着忽略ssl错误和改变我的用户代理,但我不知道如何确定使用哪些。
我现在正在做的是casper.start(url, function () { ... })
的基本casper设置,其中url=https://maizepages.umich.edu
;
这个问题可能与最近发现的一个SSLv3漏洞(POODLE)有关。 网站所有者被迫从他们的网站删除SSLv3支持。 由于PhantomJS <v1.9.8 默认使用SSLv3,因此您应该使用TLSv1:
casperjs --ssl-protocol=tlsv1 yourScript.js
当更新的PhantomJS版本与其他SSL协议一起使用时,该解决scheme将用于any
。 但是这会使尚未禁用SSLv3的网站上的POODLE漏洞被利用。
casperjs --ssl-protocol=any yourScript.js
替代方法:更新到PhantomJS 1.9.8或更高版本。 请注意,更新到PhantomJS 1.9.8会导致一个新的bug ,这对CasperJS尤其恼人。
如何validation:在脚本的开头添加一个像这样的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
命令行选项运行。