Я хочу получить информацию whois о доменном имени из моих программ C#/java. Есть ли простой способ сделать это?Как получить информацию о домене в whois в моей программе?
ответ
Я думаю, самый простой способ - подключение сокета к серверу whois на порте 43. Отправьте имя домена, за которым следует новая строка, и прочитайте ответ.
Вот решение Java, который только открывает оболочку и работает whois
:
import java.io.*;
import java.util.*;
public class ExecTest2 {
public static void main(String[] args) throws IOException {
Process result = Runtime.getRuntime().exec("whois stackoverflow.com");
BufferedReader output = new BufferedReader(new InputStreamReader(result.getInputStream()));
StringBuffer outputSB = new StringBuffer(40000);
String s = null;
while ((s = output.readLine()) != null) {
outputSB.append(s + "\n");
System.out.println(s);
}
String whoisStr = output.toString();
}
}
Не запускайте только команду whois, чтобы создать бесконечный поток проблем безопасности и производительности.Вместо этого используйте библиотеки внутри вашего языка программирования для выполнения запросов whois или, поскольку протокол настолько прост, просто откройте TCP-сокет до порта 43 и отправьте запрос. Подробнее читайте в RFC3912. – 2018-01-08 17:22:28
ответ Томас будет работать только если вы знаете, которого „Кто есть кто“ сервер для подключения.
Существует много разных способов найти это, но нет (AFAIK), который работает одинаково для каждого реестра домена.
некоторых доменных имен поддерживает SRV
записи для _nicname._tcp
службы в DNS, но есть проблемы с этим, потому что нет общепринятого стандарта еще о том, как предотвратить подобласть от выступающих вверх SRV
записи, которые переопределяют официальный реестр (см. http://tools.ietf.org/html/draft-sanz-whois-srv-00).
Для многих TLD можно отправить запрос по номеру <tld>.whois-servers.net
. Это действительно работает очень хорошо, но будьте осторожны, что он не будет работать во всех случаях, когда официально делегированы домены второго уровня.
Например, в .uk
есть несколько официальных поддоменов, но только некоторые из них находятся в ведении .uk
реестра и другие имеют свои собственные службы WHOIS и те не в базе данных whois-servers.net
.
Смутно есть также «неофициальные» реестры, такие как .uk.com
, которые находятся в базе данных whois-servers.net
.
p.s. официальный разделитель End-Of-Line в WHOIS, как и в большинстве протоколов IETF, составляет CRLF
, а не только LF
.
Я нашел несколько веб-сервисов, которые предлагают эту информацию. Это бесплатно и отлично работает для меня. http://www.webservicex.net/whois.asmx?op=GetWhoIS
Выглядит многообещающе, но я получаю: System.Net.Sockets.SocketException: запрашиваемое имя действительно, но данные запрашиваемого типа не найдены в whois.whois.GetWhoIS (String HostName) (даже при вводе IP-адреса в поле на самой информационной странице) – Jimmy 2014-03-25 14:13:38
Я нашел идеальный C# пример here.
Это 11 строк кода, чтобы скопировать и вставить прямо в ваше собственное приложение.
/// <summary>
/// Gets the whois information.
/// </summary>
/// <param name="whoisServer">The whois server.</param>
/// <param name="url">The URL.</param>
/// <returns></returns>
private string GetWhoisInformation(string whoisServer, string url)
{
StringBuilder stringBuilderResult = new StringBuilder();
TcpClient tcpClinetWhois = new TcpClient(whoisServer, 43);
NetworkStream networkStreamWhois = tcpClinetWhois.GetStream();
BufferedStream bufferedStreamWhois = new BufferedStream(networkStreamWhois);
StreamWriter streamWriter = new StreamWriter(bufferedStreamWhois);
streamWriter.WriteLine(url);
streamWriter.Flush();
StreamReader streamReaderReceive = new StreamReader(bufferedStreamWhois);
while (!streamReaderReceive.EndOfStream)
stringBuilderResult.AppendLine(streamReaderReceive.ReadLine());
return stringBuilderResult.ToString();
}
Добавление, что мне пришлось добавить `using System.Net.Sockets; используя System.IO; `для завершения кода ... – KingsInnerSoul 2016-07-07 02:43:04
Я нашел здесь отличный пример C#. Это 11 строк кода для копирования и вставки прямо в ваше собственное приложение. BUT FIRST вы должны добавить некоторые операторы использования, чтобы убедиться, что методы удаления правильно вызваны для предотвращения утечек памяти:
StringBuilder stringBuilderResult = new StringBuilder();
using(TcpClient tcpClinetWhois = new TcpClient(whoIsServer, 43))
{
using(NetworkStream networkStreamWhois = tcpClinetWhois.GetStream())
{
using(BufferedStream bufferedStreamWhois = new BufferedStream(networkStreamWhois))
{
using(StreamWriter streamWriter = new StreamWriter(bufferedStreamWhois))
{
streamWriter.WriteLine(url);
streamWriter.Flush();
using (StreamReader streamReaderReceive = new StreamReader(bufferedStreamWhois))
{
while (!streamReaderReceive.EndOfStream) stringBuilderResult.AppendLine(streamReaderReceive.ReadLine());
}
}
}
}
}
- 1. C#: получить информацию о компьютере в домене
- 2. Как получить информацию о шифровании SSL в определенном домене
- 3. получить информацию о программе запуска Windows
- 4. WHMCS произошла ошибка в домене WHOIS Lookup
- 5. Как получить информацию о домене клиента от kubernetes pod?
- 6. Как мне получить выигрыш в моей программе?
- 7. Как получить результат поиска whois?
- 8. Как изменить контактную информацию whois?
- 9. Быстрый запрос о моей программе
- 10. Сохранить информацию о файле в программе C#
- 11. Небольшая ошибка о столкновении в моей программе
- 12. Как сохранить/сохранить информацию о программе
- 13. Как скрыть информацию о домене от имени пользователя в PHP
- 14. Как обновить информацию о домене в сертификате SSL?
- 15. Функция dns_get_record не может получить информацию о домене
- 16. скрипт, чтобы показать WhoIs информацию
- 17. Где получить достоверную информацию DNS и точно whois
- 18. Facebook, размещающий неверную информацию о домене в сообщениях
- 19. Доменное имя Whois: как найти контактную информацию?
- 20. Как получить информацию о сжигании с моей итерации
- 21. Как получить информацию о версии для моей службы Windows программно
- 22. Как получить информацию о пользователе в Facebook?
- 23. Удалить информацию о домене из идентификатора входа в C#
- 24. Где и как хранить информацию о программе в Linux
- 25. Как записывать текущую информацию о функциях в вашей программе?
- 26. Получить информацию о сканере
- 27. Как использовать "" в моей программе?
- 28. получить информацию о сборке
- 29. Как изменить окно «О программе» в моей программе Java для Mac OS X?
- 30. Невозможно получить желаемый результат в моей программе
Вам необходимо определить, какой сервер whois использовать первым. Вот пример этого: вот хороший пример: http://flipbit.co.uk/2009/06/querying-whois-server-data-with-c.html – 2014-06-17 13:05:27
«Все запросы заканчиваются ASCII CR, а затем ASCII LF. ' https://tools.ietf.org/html/rfc3912 2. Спецификация протокола – brewmanz 2017-04-11 03:31:54