我使用以下基于loadspeed.js示例的代码打开一个https://site,它还需要http服务器身份验证。
var page = require('webpage').create(), system = require('system'), t, address;
page.settings.userName = 'myusername';
page.settings.password = 'mypassword';
if (system.args.length === 1) {
console.log('Usage: scrape.js <some URL>');
phantom.exit();
} else {
t = Date.now();
address = system.args[1];
page.open(address, function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
t = Date.now() - t;
console.log('Page title is ' + page.evaluate(function () {
return document.title;
}));
console.log('Loading time ' + t + ' msec');
}
phantom.exit();
});
}
它无法一直加载页面。这里可能有什么问题?安全站点的处理方式有什么不同吗?但是,可以通过浏览器成功访问该站点。
我只是从幻影开始,现在发现它太好了,不能停止玩,即使我没有推进这个问题。
我尝试了Fred和Cameron Tinker的答案,但只有ssl protocol=any选项似乎对我有帮助:
另外,我认为使用
--ssl-protocol=any
应该更安全,因为您仍在使用加密,但是--ignore-ssl-errors=true
将忽略(duh)所有ssl错误,包括恶意错误。注意,从2014年10月16日起,PhantomJS默认使用SSLv3打开HTTPS连接。随着the POODLE vulnerability最近的发布,许多服务器正在禁用SSLv3支持。
为了解决这个问题,您应该能够运行PhantomJS:
希望PhantomJS很快就会更新,使TLSv1成为默认值,而不是SSLv3。
这个问题很可能是由于SSL证书错误造成的。如果您使用--ignore ssl errors=yes选项启动phantomjs,它应该继续加载页面,就像没有ssl错误时一样:
我看到一些网站在错误地实现它们的SSL证书或它们已经过期等方面存在问题。这里提供了phantomjs的完整命令行选项列表:http://phantomjs.org/api/command-line.html。我希望这能有帮助。
相关问题 更多 >
编程相关推荐