我是节点新手。我已经使用Node和Phantom编写了一个代码来搜索网站。我的代码适用于google.com但不适用于facebook,因为它在内部向其他文件发出ajax请求以获取数据。
var phantom = require('phantom');
phantom.create(function(ph) {
return ph.createPage(function(page) {
return page.open("https://facebook.com/", function(status) {
if(status !== 'success'){
console.log('Unable to load the url!');
ph.exit();
} else {
setTimeout(function() {
return page.evaluate(function() {
return document.getElementsByTagName('body')[0].innerHTML;
}, function(result) {
console.log(result); //Log out the data.
ph.exit();
});
}, 5000);
};
});
});
});
所以基本上当我执行我的代码然后在facebook的情况下它返回无法加载但是在谷歌的情况下它正在给出身体响应。
有人可以告诉我应该做些什么改变来获得结果吗?
PhantomJS版本:1.9.0
答案 0 :(得分:2)
您应该将一些命令行选项传递给PhantomJS,以便不使用SSLv3,但只使用TLSv1并可选择忽略SSL错误(--web-security=false
也可能有帮助):
phantom.create('--ssl-protocol=tlsv1', '--ignore-ssl-errors=true', function(ph) {
...
这可能是一个问题的原因是许多网站因Poodle漏洞而删除了SSLv3支持。
This answer为简单的PhantomJS提供了解决方案。 My answer here详细阐述了CasperJS的问题。