Nodejs - DNS.Lookup отклоняет URL с HTTP? - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать API-интерфейс в Nodejs, который берет URL-адрес и проверяет, является ли он действующим веб-сайтом.

В настоящее время dns.lookup отклоняет любые недействительные URL-адреса (поддельные веб-сайты) и принимает любые допустимыеURL, если они не начинаются с HTTP: // или HTTPS: //.Это проблематично, поскольку допустимые URL-адреса отклоняются.

Таким образом, этот URL-адрес создает сообщение «Нет ошибок»:

dns.lookup('www.google.ca', function onLookup(err, address, family) 
  if (err == null) {
    console.log ('No Errors: ' + err + ' - ' + address + ' - ' + family) 
  } else {
    console.log ('Errors: ' + err + ' -- ' + address + ' -- ' + family)
  }
});

А этот URL-адрес с HTTPS создает сообщение «Ошибки»:

dns.lookup('https://www.google.ca/', function onLookup(err, address, family) 
  if (err == null) {
    console.log ('No Errors: ' + err + ' - ' + address + ' - ' + family) 
  } else {
    console.log ('Errors: ' + err + ' -- ' + address + ' -- ' + family)
  }
});

Вывод console.log:

Ошибки: ошибка: getaddrinfo ENOTFOUND http://www.google.ca/ - не определено - не определено

Есть лиспособ настроить dns.lookup для приема URL-адресов, начинающихся с HTTP или HTTPS?

1 Ответ

0 голосов
/ 10 декабря 2018

dns.lookup принимает имя хоста.Протоколы не являются частью имени хоста, поэтому их не следует передавать. Просто удалите http / https из URL через регулярное выражение, прежде чем передавать его в функцию dns.lookup:

const url1 = 'https://google.ca';
const url2 = 'google.com';

const REPLACE_REGEX = /^https?:\/\//i

const res1 = url1.replace(REPLACE_REGEX, '');
const res2 = url2.replace(REPLACE_REGEX, '');

console.log(res1);
console.log(res2);

// dns.lookup(res1...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...