我知道有些网页 PhantomJS/CasperJS 无法打开,我想知道这是否是其中之一:https://maizepages.umich.edu . CasperJS 报错:PhantomJS 无法打开页面 status=fail。
我尝试忽略 ssl 错误并更改我的用户代理,但我不确定如何确定要使用哪些。
我现在所做的就是使用 casper.start(url, function () { ... })
进行基本的 casper 设置,其中 url=https://maizepages。 umich.edu
;
最佳答案
该问题可能与最近发现的 SSLv3 漏洞 (POODLE) 有关。网站所有者被迫从他们的网站中删除 SSLv3 支持。由于 PhantomJS < v1.9.8 使用 SSLv3 by default , 你应该使用 TLSv1:
casperjs --ssl-protocol=tlsv1 yourScript.js
当较新的 PhantomJS 版本与其他 SSL 协议(protocol)一起出现时,万能的解决方案是使用 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 的问题,错误将类似于:
Error code: 6. Description: SSL handshake failed
顺便说一句,当证书出现问题时,您可能还想使用 --ignore-ssl-errors=true
命令行选项运行。
关于javascript - CasperJS/PhantomJS 不加载 https 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26415188/