检查域名是否与节点一起存在,如果不存在则返回布尔值false,如果存在,则返回域名

时间:2017-06-14 21:12:05

标签: javascript node.js http http-status-code-404

我正在尝试对域名进行查询(我将循环查看一大堆),看看它们是否存在。我希望任何不存在的域名都返回一个布尔值false,以及任何返回域名本身的域名(所以我可以将它保存到文件中)。目前我有:

var http = require('http'),
    options = {method: 'HEAD', host: 'stackoverflow.com', port: 80, path: '/'};
    req = http.request(options, function(r) {
        console.log(JSON.stringify(r.headers));
    });
req.end();

这是非常基本的,但我一直在努力解决Python和Java代码库的大部分时间,我真正想要的是一个if语句来检查url的有效性,而不必弄乱标题,如果我改变了上面的代码,我必须这样做。

基本上我只想要:

if(request === successful) {
  return url;
} else {
  return false;
}

为伪代码道歉。指针欢迎(是的,我知道JavaScript没有指针;))。

1 个答案:

答案 0 :(得分:1)

像我建议的那样使用dns,您可以执行以下操作:

const dns = require('dns');

let listOfHostnames = [
  'stackoverflow.com',
  'nodejs.org',
  'developer.mozilla.org',
  'google.com',
  'whatisthisidonteven.net'
];

function hostnameExists(hostname) {
  return new Promise((resolve) => {
    dns.lookup(hostname, (error) => resolve({hostname, exists: !error}));
  });
}

Promise.all(listOfHostnames.map(hostnameExists)).then((listOfStatuses) => {
  // check results here
  console.log(listOfStatuses);
});