Java Get nameservers of a website
By:Roy.LiuLast updated:2019-08-17
In this tutorial, we will show you how to get the nameservers of a website using Java + dig command.
1. Using Dig Command
1.1 On Linux, we can use dig command to query a DNS lookup of a website, for example :
$ dig any mkyong.com //... mkyong.com. 299 IN A 162.159.x.x mkyong.com. 299 IN A 198.41.x.x mkyong.com. 299 IN MX 10 aspmx2.googlemail.com. mkyong.com. 299 IN MX 10 aspmx3.googlemail.com. mkyong.com. 299 IN MX 1 aspmx.l.google.com. mkyong.com. 299 IN MX 5 alt1.aspmx.l.google.com. mkyong.com. 299 IN MX 5 alt2.aspmx.l.google.com. mkyong.com. 21599 IN NS max.ns.cloudflare.com. mkyong.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. After extracting the downloaded zip file, set the “bind” folder to the environment variable, so that you can use the dig command everywhere.
C:\> dig +short NS mkyong.com max.ns.cloudflare.com. erin.ns.cloudflare.com.
2. Java DNS Example
In Java, we can call the external dig command to get the name servers easily.
ShellCommand.java
package com.mkyong.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 mkyong.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();
Output
max.ns.cloudflare.com. erin.ns.cloudflare.com.
3. Get mail servers
In addition, you can use “MX” to get mail servers.
C:\> dig +short MX mkyong.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
If you want more DNS features, try dnsjava library, an implementation of DNS in Java.
If you want more DNS features, try dnsjava library, an implementation of DNS in Java.
References
- 10 Linux DIG Command Examples for DNS Lookup
- Wikipedia : Dig (command)
- DNSJava official site
- How To Execute Shell Command From Java
From:一号门
COMMENTS