这里我使用了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*)(.*)";

			while((line = reader.readLine()) != null){
				if(line.matches(reg)){
					str = line.replaceFirst("\\s*", "");
//					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: (.*?)
"); matcher = pattern.matcher(str); if(matcher.find()) stringBuffer.append("域名ID: " + 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("注册人:(.*?) "); 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("创建时间:(.*?)
"); 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("DNS服务器:(.*?)
"); matcher = pattern.matcher(str); while(matcher.find()) stringBuffer.append("DNS服务器: " + matcher.group(1) + "\n"); pattern = Pattern.compile("域名状态:(.*?)
"); 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#运营商设置了客户禁止删除保护