我有一个phantomJS脚本
var page = require('webpage').create();
var system = require('system');
page.settings.userAgent = 'SpecialAgent';
var i = 1;
var url = 'http://www.google.cz/?test=' + i;
console.log( "url='" + url + "'" );
page.open(url, function (status) {
if (status !== 'success') {
console.log( 'Unable to access network' );
} else {
console.log( 'Opened ok' );
phantom.exit();
}
});
工作正常,但当我将page.open
换成for循环
var page = require('webpage').create();
var system = require('system');
page.settings.userAgent = 'SpecialAgent';
//var i = 1;
for ( var i = 1; i <= 2; ++i ) {
var url = 'http://www.google.cz/?test=' + i;
console.log( "url='" + url + "'" );
page.open(url, function (status) {
if (status !== 'success') {
console.log( 'Unable to access network' );
} else {
console.log( 'Opened ok' );
phantom.exit();
}
});
}
我正在
无法访问网络
我认为这是因为它是并行执行的。我对么? (phantom.exit()
可能在错误的位置)我如何等待处理page.open
然后执行下一次迭代?
答案 0 :(得分:0)
问题是PhantomJS版本&lt; 1.9.8默认情况下使用SSLv3,但由于POODLE漏洞,大多数Web服务器已禁用SSLv3支持,因此您需要显式添加--ssl-protocol=tlsv1
(或)--ssl-protocol=any
命令行选项。
使用phantomjs运行脚本时,请添加以下命令行选项
phantomjs --ssl-protocol=any yourscript.js
如果您仍然收到错误,可能是由于SSL证书错误,使用--ignore-ssl-errors=yes
选项应继续加载页面,因为它会忽略所有ssl错误,包括恶意错误。
phantomjs --ssl-protocol=any --ignore-ssl-errors=yes yourscript.js