CasperJS/PhantomJS无法加载https页面

Vis*_*ani 24 javascript ssl web-scraping phantomjs casperjs

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

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

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

Art*_* B. 65

该问题可能与最近发现的SSLv3漏洞(POODLE)有关.网站所有者被迫从其网站上删除SSLv3支持.由于PhantomJS <v1.9.8 默认使用SSLv3 ,因此您应该使用TLSv1:

casperjs --ssl-protocol=tlsv1 yourScript.js
Run Code Online (Sandbox Code Playgroud)

any当新的PhantomJS版本与其他SSL协议一起使用时,这个解决方案就是使用它.但这会使POODLE漏洞在尚未禁用SSLv3的站点上被利用.

casperjs --ssl-protocol=any yourScript.js
Run Code Online (Sandbox Code Playgroud)

替代方法:更新到PhantomJS 1.9.8或更高版本.请注意,更新到PhantomJS 1.9.8会导致新的错误,这对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);
});
Run Code Online (Sandbox Code Playgroud)

如果它确实是SSLv3的问题,那么错误将是:

错误代码:6.说明:SSL握手失败


另外--ignore-ssl-errors=true,当证书出现问题时,您也可能希望使用命令行选项运行.

  • @FullDecent我从未使用过CasperJS 1.0.4,但我认为它不适用于PhantomJS 2.由于CasperJS 1.1-beta3仅支持PhantomJS <1.x. 问一个新问题. (2认同)