如何用Java实现简单whois查询

如何用Java实现简单whois查询,第1张

package michael.socket

import java.io.BufferedReader

import java.io.InputStreamReader

import java.io.PrintStream

import java.net.Socket

import java.util.ArrayList

import java.util.LinkedHashMap

import java.util.List

import java.util.Map

import java.util.Map.Entry

/**

 * whois查询

 * @author michael

 * @see http://sjsky.iteye.com

*/

public class WhoisQueryHandler {

/**

 * whois.apnic.net<br>

 * whois.ripe.net

*/

 private String server ="whois.ripe.net"

/**

 * port

*/

 private int port = 43

/**

 * timeout/minute

*/

 private int timeout = 0

/**

 * @return the server

*/

 public String getServer() {

 return server

}

/**

 * @return the port

*/

 public int getPort() {

 return port

}

/**

 * @return the timeout

*/

 public int getTimeout() {

 return timeout

}

/**

 * @param pServer the server to set

*/

 public void setServer(String pServer) {

 server = pServer

}

/**

 * @param pPort the port to set

*/

 public void setPort(int pPort) {

 port = pPort

}

/**

 * @param pTimeout the timeout to set

*/

 public void setTimeout(int pTimeout) {

 timeout = pTimeout

}

/**

 * @param ipOrDomain

 * @return List

*/

 public List<String> queryInfoListByWhois(String ipOrDomain) {

 Socket qrySocket = null

 BufferedReader br = null

 PrintStream ps = null

 int qryCount = 0

 List<String> infoList = new ArrayList<String>()

 infoList.add("查询的对象:"+ ipOrDomain)

 while (qryCount < 3) {

qryCount++

 try {

 qrySocket = new Socket(server, port)

 qrySocket.setSoTimeout(timeout * 1000)

 ps = new PrintStream(qrySocket.getOutputStream())

ps.println(ipOrDomain)

 br = new BufferedReader(new InputStreamReader(qrySocket

.getInputStream()))

 String readLine = null

 int lineCount = 0

 System.out.println("Whois query start....")

 while ((readLine = br.readLine()) != null && lineCount < 100) {

 System.out.println("readLine ["+ readLine +"]")

 if ("".equals(readLine) || readLine.charAt(0) == '%') {

continue

}

lineCount++

infoList.add(readLine)

}

 System.out.println("whois query info finish")

break

 } catch (Exception e) {

e.printStackTrace()

 } finally {

 if (null != br) {

 try {

br.close()

 } catch (Exception e1) {

}

}

 if (null != ps) {

 try {

ps.close()

 } catch (Exception e1) {

}

}

 if (null != qrySocket) {

 try {

qrySocket.close()

 } catch (Exception e1) {

}

}

}

}

 return infoList

}

/**

 * @param ipOrDomain

 * @return List

*/

 public Map<String, String> queryInfoMapByWhois(String ipOrDomain) {

 List<String> infoList = this.queryInfoListByWhois(ipOrDomain)

 Map<String, String> infoMap = new LinkedHashMap<String, String>()

 String key =""

 String value =""

 for (String info : infoList) {

 if (info.startsWith("") || info.indexOf(':') == -1) {

 value = info

 } else {

 key = info.substring(0, info.indexOf(':'))

 value = info.substring(info.indexOf(':') + 1)

}

 if (null == infoMap.get(key)) {

 infoMap.put(key, value)

 } else {

 infoMap.put(key, infoMap.get(key) + value)

}

}

 return infoMap

}

/**

 * @param args

*/

 public static void main(String[] args) {

 WhoisQueryHandler handler = new WhoisQueryHandler()

/**

 *"218.202.224.2"<br>

 *"180.168.130.146<br>

 * iteye.com<br>

 * AS9808

*/

 String ipOrDomain ="129.42.58.216"

 Map<String, String> map = handler.queryInfoMapByWhois(ipOrDomain)

 for (Entry<String, String> entry : map.entrySet()) {

 System.out.println(entry.getKey() +":"+ entry.getValue())

}

}

}

1、NSLOOKUP

nslookup命令几乎在所有的PC操作系统上都有安装,用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。信息安全人员,可以通过返回的信息进行信息搜集。

2、DIG

Dig也是对DNS信息进行搜集的工具,dig 相比nsllooup不光功能更丰富,首先通过默认的上连DNS服务器去查询对应的IP地址,然后再以设置的dnsserver为上连DNS服务器。

3、Whois

whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。通过whois来实现对域名信息的查询。早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询。

网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用。whois通常使用TCP协议43端口。每个域名/IP的whois信息由对应的管理机构保存。

5、主动信息搜集

Recon-ng是一个信息搜集的框架,它之于信息搜集完全可以和exploit之于metasploit framework、社会工程学之于SET。

5、主动信息搜集

主动信息搜集是利用一些工具和手段,与搜集的目标发生一些交互,从而获得目标信息的一种行为。主动信息搜集的过程中无法避免会留下一些痕迹。

1.怎么查看到域名的历史

你可以把查到的结果,复制到谷歌的翻译中进行中英转换。

就可以看懂了,如果有帮助给加个分 谢谢!!以下供您参考:1、首先,到域名查询中心,比如万网、新网或者能查询域名所有者的地方去查询域名的注册信息,是否以前被注册过(就是我们常用的Whois查询)。如果域名曾经被注册过,我们就需要关心一下这个域名是否有过不良记录。

2、通过在Google中(site:域名),看下是否有记录,然后查看下反向链接,利用(link:域名)或者(domain:域名)可以到一些提供查询反向连接的网站去查询或者自己到搜索引擎利用命令查询。如果存在反向连接,而没有该站点被搜索引擎收录,那么这个域名很有可能被K过了,也就是存在不良记录。

3、直接输入网址有记录,而Site法却没有记录,那么也有可能被K过了。4、通过查看域名历史页面和世界排名以及Alexa排名 也能看出来这个域名被使用过没有。

5、查询域名历史网站,打开Inter Archive Wayback Machine网站输入自己想要查询的域名然后按Take Me Back!,如果如果存在历史网页就会显示出来。经过以上几点的确认,基本能知道域名是否被注册过,是否被K过。

被K过的域名是不是搜索引擎就不会再收录呢?这个问题是不确定的,如果不小心注册了被K过的域名,要注意向搜索引擎重新提交网站,适时更新网站,认真经营网站,搜索引擎也会慢慢光顾、收录网站。Google再次收录被K网站的时间比较短,不过一旦被BaiDu K站,需要好长一段时间才能恢复过来,重新被收录。

2.域名信息查询网站

Who.is是一个域名信息查询网站,不但域名好记,而且功能全面、使用方便,能够查询100余种后缀的域名,可查询域名Whois历史(可查到该域名的上一个拥有者或上一个注册商)、域名Alexa排名信息、域名DNS解析记录、搜索结果等。除了域名相关信息查询,Who.is还提供了其它三个实用的站长工具,可查询有哪些域名使用了某个DNS服务器,服务器的Ping值以及服务器的Traceroute数据(可大体了解该服务器网络速度)。

网址:

3.怎样查询域名的历史信息,域名(itaozhi)要怎样才能知道它的历

site:你要查的网站域名,至于注册前是什么的你可以根据你用site出的内容去研究一下看看这上站的历史,若这个站时间长没有收录不好查的。

做网站都希望网站能被大量的收录,但如果选了一个曾经被K过的域名那就惨了,所以我们注册新域名时需要观察其是否被K过,尤其是是否被google或百度K,因为一个域名被K后,即便改头换面也可能长期得不到搜索引擎有效的收录。观察方方法如下:

1、通过site:和link:两个搜索指令,查看该域名的收录情况,如果收录为0,但是外部连接很多,则此域名已经被K。

2、直接在搜索引擎输入网站地址查询,如果发现若干条结果中均完整包含这个域名的,而site有没有,则此域名大有可能已经被K。(有种例外,就是搜索引擎索引后并没有立即发布在搜索结果中。)

3、通过查看网站历史页面,网站世界排名等来确定该域名是否是老域名。很多网站的流量是靠百度过来的,但是百度K站出了名大家是知道的。自己买个域名辛苦做网站却不被百度收录,最后才知道是原来被K过的域名,所以对域名一定要多了解多注意一些。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/336926.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存