Как вы можете проверить, существует ли домен в Java? - PullRequest
10 голосов
/ 09 мая 2011

Предположим, мой адрес электронной почты xyz@yahoo.com, и я хочу проверить, является ли yahoo.com действительным доменом или нет.

Может кто-нибудь сказать мне, какой Java API я могу использовать для этого?

Ответы [ 5 ]

7 голосов
/ 09 мая 2011

InetAddress имеет метод getByName() для определения IP-адреса хоста по имени хоста.

Если IP-адрес хоста не найден (в случае, если заданное имя хоста недопустимо), будет выброшено UnknownHostException.

Итак, вы просто пытаетесь поймать UnknownHostException при вызове InetAddress.getByName(). Если UnknownHostException перехвачен, это означает, что ваше имя хоста ввода неверно.

4 голосов
/ 09 мая 2011

Одна вещь, которую вы можете сделать, это попытаться разрешить "yahoo.com". Примерно так:

public static void main(String[] args) throws UnknownHostException {
    InetAddress inetAddress = InetAddress.getByName("yahoo.com");
    System.out.println(inetAddress.getHostName());
    System.out.println(inetAddress.getHostAddress());
}

который выводит:

yahoo.com
67.195.160.76
1 голос
/ 16 июня 2018

Вы можете использовать org.apache.commons.validator.routines.DomainValidator.

Сначала добавьте зависимость maven

<dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>1.6</version>
</dependency>

, то:

boolean isValid = DomainValidator.getInstance().isValid("yahoo.com");
1 голос
/ 09 мая 2011

Другой возможностью является проверка MX входящего домена.

http://www.mxtoolbox.com/SuperTool.aspx

Это не Java API, но вы всегда можете разобрать ответ HTML.

Это означает, что если поставщик почтовой службы не занесен в черный список, он может быть безопасным и реальным адресом.

Но, как уже было сказано, какой-то сервер всегда может определить ограничение безопасности для такой службы.

Еще один момент, существуют некоторые службы для предоставления временных электронных писем (mailinator.com, jetable.org и т. Д.). Вы также должны проверить эти домены, если хотите запретить пользователю регистрироваться с таким письмом .

UPDATE

Я нашел полезный REST API , который кажется бесплатным, пока вы используете ограниченное количество запросов.

Пример: https://dns -api.org / MX / amazon.com возвращает JSON:

[
   {
      "name" : "amazon.com",
      "ttl" : 677,
      "value" : "5 amazon-smtp.amazon.com.",
      "type" : "MX"
   }
]
0 голосов
/ 09 мая 2011

Я не знаю, является ли это лучшим способом, но я сделал нечто подобное для программы VB.NET:

Я просто пропинговал домен, и если я не получилответ, домен либо был отключен, либо не существовал.

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