脚本test.js:
var page = require('webpage').create();
var url = args[1];
page.open(url, function (status) {
console.log(status);
phantom.exit();
});
运行脚本:
phantomjs --proxy=1.1.1.1:22 test.js 'http://nonexistent_site.com'
1.1.1.1:22 - 不存在的服务器
http://nonexistent_site.com - 不存在的网站
如何在PhantomJS中确定哪一个没有响应 - 代理或网站?
答案 0 :(得分:2)
您可以使用page.onResourceTimeout回调来捕获网络超时:
page.onResourceTimeout = function(request) {
console.log('Response (#' + request.id + '): ' + JSON.stringify(request));
};
您也可以设置自己的超时时间:
page.settings.resourceTimeout = 3000; // ms
要拦截网络错误,您可以注册page.onResourceError回调:
page.onResourceError = function(resourceError) {
console.log('Unable to load resource #' + resourceError.id + ' URL:' + resourceError.url);
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};
有了这个,不存在的主机将触发Host not found
错误。
但如果您使用非工作代理,即使目标主机不存在,您也总是首先得到错误Network timeout on resource
。
因此,如果您想检查代理:)我建议只使用100%正常工作的page.open主机,例如,在您运行的服务器上设置一个简单的静态网页。
还有一个node.js模块:proxy-checker