Phantomjs如果代理没有回应

时间:2016-02-12 07:05:09

标签: proxy phantomjs

脚本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中确定哪一个没有响应 - 代理或网站?

1 个答案:

答案 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