Выполните поиск DNS, чтобы преобразовать имя хоста в IP-адрес с помощью JavaScript.
Можно ли разрешить имя хоста с помощью Javascript?
Вот гипотетический код:
var hostname = "www.yahoo.com";
var ipAddress = DnsLookup(hostname);
console.log(ipAddress);
Я ищу эту магию DnsLookup()
функция.:-)
3 ответа
Существует относительно новый (2018 г.) предложенный Интернет-стандарт под названием DNS over HTTPS (также называемый DoH), который набирает обороты. Он позволяет отправлять DNS-запросы в формате проводной сети через HTTPS на "серверы DoH". Приятно то, что с DoH вы получаете весь протокол DNS поверх HTTPS. Это означает, что вы можете получить много полезной информации.
При этом существует библиотека JavaScript с открытым исходным кодом, называемая dohjs, которая упрощает поиск DNS в браузере. Вот небольшой фрагмент кода:
const resolver = new doh.DohResolver('https://1.1.1.1/dns-query')
resolver.query('www.yahoo.com')
.then(console.log)
.catch(console.error);
Полное раскрытие информации: я участвую в dohjs.
На вики-странице cURL DNS over HTTPS есть много ресурсов, включая список общедоступных серверов DoH и список инструментов DoH (в основном серверное и клиентское программное обеспечение).
Хотя в JavaScript нет стандартных функций DNS, вы всегда можете вызвать сторонний общедоступный API, который выполняет разрешение DNS.
Например, Encloud предоставляет такой API, и вы можете сделать для него XMLHttpRequest:
var oReq = new XMLHttpRequest();
oReq.onload = function () {
var response = JSON.parse(this.responseText);
alert(JSON.stringify(response.dns_entries));
}
oReq.open("get", "https://www.enclout.com/api/v1/dns/show.json?auth_token=rN4oqCyJz9v2RRNnQqkx&url=stackru.com", true);
oReq.send();
Конечно, вы должны получить свой собственный токен аутентификации. Бесплатные учетные записи Enclout ограничены до 6 запросов в минуту.
Если вам нужен только IP, сделайте запрос GET для http://api.konvert.me/forward-dns/yourdomain.com.
Вам нужно будет перезвонить на серверную сторону и решить значение оттуда. В Javascript нет стандартных функций поиска DNS.
Нет - javascript заблокирован от выполнения междоменных запросов. Потенциально могут быть некоторые хаки, которые могут вам помочь ( этот выглядел довольно многообещающе), но по умолчанию вы не можете этого сделать.
Вы можете запросить что-то и получить HTTP 200.