这里我使用了HttpURLConnection向 http://whois.chinaz.com发起Get请求,然后使用正则对返回的网页进行匹配查询,保存我们需要的whois信息
/**
* 这里的查询用了直接从whois.chinaz.com的网页中用正则取出所需信息,方法不是很好
* 不过还是可以查到一些相关信息
*
* @param domain 待检测域名,如:baidu.com
* @return 该域名的Whois信息
* */
public String whoisQuery(String domain){
StringBuffer stringBuffer = new StringBuffer(); //查询到的信息
stringBuffer.append("域名 " + domain + " 的Whois信息:\n\n");
try {
URL url = new URL("http://whois.chinaz.com?DomainName=" + domain);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setConnectTimeout(10000); //毫秒
connection.setReadTimeout(10000);
InputStream inputStream = new BufferedInputStream(connection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = "",str = "";
String reg = "(\\s*)<asp:Literal ID=\"ProcessImage\" runat=\"server\">(.*)";
while((line = reader.readLine()) != null){
if(line.matches(reg)){
str = line.replaceFirst("\\s*<asp:Literal ID=\"ProcessImage\" runat=\"server\">", "");
// System.out.println(str);
Pattern pattern = Pattern.compile("该域名未被注册(.*?)");
Matcher matcher = pattern.matcher(str);
if(matcher.find()){
stringBuffer.append("该域名未被注册,没有相关Whois信息!\n");
break;
}
pattern = Pattern.compile("域名:(.*?) ");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("域名: " + matcher.group(1) + "\n");
pattern = Pattern.compile("域名ID: (.*?)<br/>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("域名ID: " + matcher.group(1) + "\n");
pattern = Pattern.compile("该数据缓存于 <font color=red>(.*?)</font>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("该数据缓存于: " + matcher.group(1) + "\n");
pattern = Pattern.compile("注册商:(.*?)<br/>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("注册商: " + matcher.group(1) + "\n");
pattern = Pattern.compile("注册人:(.*?) ");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("注册人: " + matcher.group(1) + "\n");
pattern = Pattern.compile("联系人:(.*?) ");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("联系人: " + matcher.group(1) + "\n");
pattern = Pattern.compile("更新时间:(.*?)<br/>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("更新时间: " + matcher.group(1) + "\n");
pattern = Pattern.compile("创建时间:(.*?)<br/>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("创建时间:" + matcher.group(1) + "\n");
pattern = Pattern.compile("过期时间:(.*?)<br/>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("过期时间: " + matcher.group(1) + "\n");
pattern = Pattern.compile("域名服务器:(.*?)<br/>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("域名服务器: " + matcher.group(1) + "\n");
pattern = Pattern.compile("DNS服务器:(.*?)<br/>");
matcher = pattern.matcher(str);
while(matcher.find())
stringBuffer.append("DNS服务器: " + matcher.group(1) + "\n");
pattern = Pattern.compile("域名状态:(.*?)<br/>");
matcher = pattern.matcher(str);
if(matcher.find())
stringBuffer.append("域名状态: " + matcher.group(1) + "\n");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return stringBuffer.toString();
}
然后进行调用测试:
System.out.println(test.whoisQuery("www.baidu.com"));
查询到的信息如下:
域名 www.baidu.com 的Whois信息:
域名: baidu.com
该数据缓存于: 2015-11-25 10:39
注册商: MARKMONITOR INC.
联系人: zhiyong duan
更新时间: 2015年09月10日
创建时间:1999年10月11日
过期时间: 2017年10月11日
域名服务器: whois.markmonitor.com
DNS服务器: DNS.BAIDU.COM
DNS服务器: NS2.BAIDU.COM
DNS服务器: NS3.BAIDU.COM
DNS服务器: NS4.BAIDU.COM
DNS服务器: NS7.BAIDU.COM
域名状态: 运营商设置了客户禁止删除保护 http://www.icann.org/epp#运营商设置了客户禁止删除保护
转载于:https://blog.51cto.com/983836259/1716683