脚本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 中确定哪一个没有响应 - 代理还是站点?
最佳答案
您可以使用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);
};
完成此操作后,不存在的主机将触发找不到主机
错误。
但是如果您使用不工作的代理,即使目标主机不存在,您始终会首先遇到资源上的网络超时
错误。
因此,如果您想检查代理:),我建议仅 page.open 100% 正常工作的主机,例如,在您正在操作的服务器上设置一个简单的静态网页。
还有一个node.js模块:proxy-checker
关于proxy - Phantomjs 如果代理没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356679/