Java - Получить серверы имен сайта

Java - Получить серверы имен сайта

DNS

В этом руководстве мы покажем вам, как получить серверы имен веб-сайта с помощью команды Java + dig.

1. Использование команды Dig

1.1 On Linux, we can use dig command to query a DNS lookup of a website, for example :

$ dig any example.com

//...
example.com.             299     IN      A       162.159.x.x
example.com.             299     IN      A       198.41.x.x
example.com.             299     IN      MX      10 aspmx2.googlemail.com.
example.com.             299     IN      MX      10 aspmx3.googlemail.com.
example.com.             299     IN      MX      1 aspmx.l.google.com.
example.com.             299     IN      MX      5 alt1.aspmx.l.google.com.
example.com.             299     IN      MX      5 alt2.aspmx.l.google.com.
example.com.             21599   IN      NS      max.ns.cloudflare.com.
example.com.             21599   IN      NS      erin.ns.cloudflare.com.

;; Query time: 246 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Mar 18 08:35:24 Malay Peninsula Standard Time 2014
;; MSG SIZE  rcvd: 387

P.S The dig is a built-in command on *nix, no need to install.

1.2 On Windows, you need to install the BIND package (a zip file) from isc.org, and the dig command is inside the zip file. После распаковки загруженного zip-файла установите для папки «bind» переменную среды, чтобы вы могли везде использовать командуdig.

C:\> dig +short NS example.com
max.ns.cloudflare.com.
erin.ns.cloudflare.com.

2. Пример DNS Java

В Java мы можем вызвать внешнюю командуdig, чтобы легко получить серверы имен.

ShellCommand.java

package com.example.shell;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ShellCommand {

    public static void main(String args[]) {

        ShellCommand shell = new ShellCommand();

        String result = shell.run("dig +short NS example.com");
        System.out.println(result);

    }

    public String run(String command) {

        StringBuilder sb = new StringBuilder();
        BufferedReader reader = null;
        Process p;

        try {
            p = Runtime.getRuntime().exec(command);
            p.waitFor();
            reader = new BufferedReader(
                new InputStreamReader(p.getInputStream()));

            String line = "";
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {

            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sb.toString();

    }

}

Выход

max.ns.cloudflare.com.
erin.ns.cloudflare.com.

3. Получить почтовые серверы

Кроме того, вы можете использовать «MX» для получения почтовых серверов.

C:\> dig +short MX example.com

10 aspmx2.googlemail.com.
5 alt2.aspmx.l.google.com.
5 alt1.aspmx.l.google.com.
1 aspmx.l.google.com.
10 aspmx3.googlemail.com.

Note
Если вам нужно больше возможностей DNS, попробуйте библиотекуdnsjava, реализацию DNS на Java.