Exemple Java Whois

Dans ce tutoriel, nous allons vous montrer comment utiliser la bibliothèque Java - «Apache Commons Net» pour obtenir les données WHOIS d'un domaine.
1. Exemple simple de Whois Java
Pour les domaines enregistrés sous internic.net, vous pouvez obtenir directement les données whois.
WhoisTest.java
package com.example.whois.bo;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.whois.WhoisClient;
public class WhoisTest {
public static void main(String[] args) {
WhoisTest obj = new WhoisTest();
System.out.println(obj.getWhois("example.com"));
System.out.println("Done");
}
public String getWhois(String domainName) {
StringBuilder result = new StringBuilder("");
WhoisClient whois = new WhoisClient();
try {
//default is internic.net
whois.connect(WhoisClient.DEFAULT_HOST);
String whoisData1 = whois.query("=" + domainName);
result.append(whoisData1);
whois.disconnect();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result.toString();
}
}
2. Exemple complexe de Whois Java
Pour les domaines enregistrés sous d'autres bureaux d'enregistrement (pas internic.net), vous avez besoin de quelques étapes supplémentaires pour obtenir les données whois.
Passez en revue la commandewhois dans * nix et mac.
$ whois google.com ### It will returns many non related subdomain.google.com data $ whois =google.com ### Add '=' sign to get the exact result. ### refer to the "Whois server" URL ### Sample data ### Domain Name: GOOGLE.COM ### Registrar: MARKMONITOR INC. ### Whois Server: whois.markmonitor.com ### Referral URL: http://www.markmonitor.com ### The google.com whois is available under whois.markmonitor.com $ whois -h whois.markmonitor.com google.com ### done, finally, get the whois data of google.com
Laissez implémenter les étapes ci-dessus en Java, voir les commentaires pour s'expliquer d'eux-mêmes.
WhoisTest.java
package com.example.whois.bo;
import java.io.IOException;
import java.net.SocketException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.net.whois.WhoisClient;
public class WhoisTest {
private static Pattern pattern;
private Matcher matcher;
// regex whois parser
private static final String WHOIS_SERVER_PATTERN = "Whois Server:\\s(.*)";
static {
pattern = Pattern.compile(WHOIS_SERVER_PATTERN);
}
public static void main(String[] args) {
WhoisTest obj = new WhoisTest();
System.out.println(obj.getWhois("google.com"));
System.out.println("Done");
}
// example google.com
public String getWhois(String domainName) {
StringBuilder result = new StringBuilder("");
WhoisClient whois = new WhoisClient();
try {
whois.connect(WhoisClient.DEFAULT_HOST);
// whois =google.com
String whoisData1 = whois.query("=" + domainName);
// append first result
result.append(whoisData1);
whois.disconnect();
// get the google.com whois server - whois.markmonitor.com
String whoisServerUrl = getWhoisServer(whoisData1);
if (!whoisServerUrl.equals("")) {
// whois -h whois.markmonitor.com google.com
String whoisData2 =
queryWithWhoisServer(domainName, whoisServerUrl);
// append 2nd result
result.append(whoisData2);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result.toString();
}
private String queryWithWhoisServer(String domainName, String whoisServer) {
String result = "";
WhoisClient whois = new WhoisClient();
try {
whois.connect(whoisServer);
result = whois.query(domainName);
whois.disconnect();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
private String getWhoisServer(String whois) {
String result = "";
matcher = pattern.matcher(whois);
// get last whois server
while (matcher.find()) {
result = matcher.group(1);
}
return result;
}
}
Sortie
Whois Server Version 2.0
Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
//......
Registrant:
Dns Admin
Google Inc.
Please contact [email protected] 1600 Amphitheatre Parkway
Mountain View CA 94043
US
[email protected] +1.6502530000 Fax: +1.6506188571
Domain Name: google.com
Registrar Name: Markmonitor.com
Registrar Whois: whois.markmonitor.com
Registrar Homepage: http://www.markmonitor.com
//......
Created on..............: 1997-09-15.
Expires on..............: 2020-09-13.
Record last updated on..: 2013-02-28.
//......
Whois parser
Ci-dessus utilise un regex pour récupérer l'url du serveur whois. Si vous connaissez un analyseur whois Java, faites un commentaire ci-dessous, merci.