... и получить ответ. :)
Был у меня старый код, который осуществлял проверку доменного имени и извлекал нужные мне данные по нему.
Это был очень простой код на C#. Он попросту формировал веб-адрес одного сайта, который как раз и предоставлял возможность проверять доменные имена. В строку веб-адреса входило искомое доменное имя.
Код представлялся сайту как обычный браузер и в ответ получал HTML-страницу. Далее код разбирал HTML-код и извлекал нужную информацию, если она там была.
Однако с какого-то времени сайт перестал предоставлять такую услугу и код мой перестал работать. Нужно было менять код. Так как программист из меня так себе, я хотел сохранить подход: формирование веб-адреса и разбор возвращаемой HTML-страницы. Однако другой удобной альтернативы для этого я не нашел.
Поэтому пришлось интересоваться, как на C# сделать запрос к whois-серверу по TCP, чтобы получить нужную о домене информацию. Код я сам не писал, просто нашел в инете уже готовый, и приспособил к своим нуждам. Так как он достаточно универсален, то его можно использовать для запросов к различным whois-серверам.
Вот он:
Ну, и использование метода, например:
или без явного указания порта, если используется дефолтный:
Кратенько о моем методе GetWhoisInfo:
Метод принимает 3 параметра:
Запрос мы осуществляем с помощь объекта TcpClient. Доменное имя переводим в требуемый формат. С помощью объекта TcpClient:
Ну, и возвращаем из метода ответ сервера в виде строки.
Можно перед возвратом можно заменить переносы строк на <br/>:
... и возвращаемую строку сразу выводить на HTML-странице:
Короче приведенный выше код - это, так сказать, boilerplate, для того, чтобы с чего-то начать, а как вы его уже приспособите под свои нужды - дело ваше.
Был у меня старый код, который осуществлял проверку доменного имени и извлекал нужные мне данные по нему.
Это был очень простой код на C#. Он попросту формировал веб-адрес одного сайта, который как раз и предоставлял возможность проверять доменные имена. В строку веб-адреса входило искомое доменное имя.
Код представлялся сайту как обычный браузер и в ответ получал HTML-страницу. Далее код разбирал HTML-код и извлекал нужную информацию, если она там была.
Однако с какого-то времени сайт перестал предоставлять такую услугу и код мой перестал работать. Нужно было менять код. Так как программист из меня так себе, я хотел сохранить подход: формирование веб-адреса и разбор возвращаемой HTML-страницы. Однако другой удобной альтернативы для этого я не нашел.
Поэтому пришлось интересоваться, как на C# сделать запрос к whois-серверу по TCP, чтобы получить нужную о домене информацию. Код я сам не писал, просто нашел в инете уже готовый, и приспособил к своим нуждам. Так как он достаточно универсален, то его можно использовать для запросов к различным whois-серверам.
Вот он:
private string GetWhoisInfo(string domain, string whoisServer, int whoisPort=43)
{
using (TcpClient tcpClient = new TcpClient(whoisServer, whoisPort))
{
string domainInfo = String.Empty;
if (String.IsNullOrEmpty(domain))
return domainInfo;
string domainString = domain + "\r\n";
byte[] domainAsBytes = Encoding.ASCII.GetBytes(domainString);
Stream stream = tcpClient.GetStream();
stream.Write(domainAsBytes, 0, domainString.Length);
StreamReader streamReader = new StreamReader(tcpClient.GetStream(), Encoding.UTF8);
domainInfo = streamReader.ReadToEnd();
streamReader.Close();
tcpClient.Close();
return domainInfo;
}
}
{
using (TcpClient tcpClient = new TcpClient(whoisServer, whoisPort))
{
string domainInfo = String.Empty;
if (String.IsNullOrEmpty(domain))
return domainInfo;
string domainString = domain + "\r\n";
byte[] domainAsBytes = Encoding.ASCII.GetBytes(domainString);
Stream stream = tcpClient.GetStream();
stream.Write(domainAsBytes, 0, domainString.Length);
StreamReader streamReader = new StreamReader(tcpClient.GetStream(), Encoding.UTF8);
domainInfo = streamReader.ReadToEnd();
streamReader.Close();
tcpClient.Close();
return domainInfo;
}
}
Ну, и использование метода, например:
string whoisInfo = GetWhoisInfo("blogspot.com", "whois.networksolutions.com", 43);
или без явного указания порта, если используется дефолтный:
string whoisInfo = GetWhoisInfo("blogspot.com", "whois.networksolutions.com");
Кратенько о моем методе GetWhoisInfo:
Метод принимает 3 параметра:
- domain - искомое доменное имя, напр. "blogspot.com"
- whoisServer - адрес whois-сервера, напр. "whois.networksolutions.com"
- whoisPort - адрес порта сервера для whois-запросов (по умолчанию, 43)
Запрос мы осуществляем с помощь объекта TcpClient. Доменное имя переводим в требуемый формат. С помощью объекта TcpClient:
- делаем запрос, т.е. открываем и пишем в поток (Stream) и
- получаем ответ, т.е. читаем из потока и передаем результат в свой StreamReader, указывая при этом кодировку (в примере - UTF-8).
Ну, и возвращаем из метода ответ сервера в виде строки.
Можно перед возвратом можно заменить переносы строк на <br/>:
StreamReader streamReader = new StreamReader(tcpClient.GetStream(), Encoding.UTF8);
domainInfo = Regex.Replace(streamReader.ReadToEnd(), "\r\n", "<br/>");
streamReader.Close();
domainInfo = Regex.Replace(streamReader.ReadToEnd(), "\r\n", "<br/>");
streamReader.Close();
... и возвращаемую строку сразу выводить на HTML-странице:
Короче приведенный выше код - это, так сказать, boilerplate, для того, чтобы с чего-то начать, а как вы его уже приспособите под свои нужды - дело ваше.
Комментариев нет:
Отправить комментарий